Si. Il basic ha lasciato la sua impronta. Alcuni comandi nuovi ancora mi sfuggono, tipo "while", ora lo sto utilizzando nei menù dei settaggi.
Finito l'assemblaggio. Display collegato tramite l'interfaccia I2C. Con l'interfaccia sembrerebbe che il display non subisca gli effetti delle scintille nei vari contatti.
Con l'interfaccia, il display mi sembra che viene aggiornato ogni secondo.
lcd.clear(); nei loop veloci non lo utilizzo, mi creava qualche problema.
Sensore di temperatura DS18B20, molto veloce nel recepire le variazioni di temperatura.
Nel programma 1 (yogurt) nel codice ho messo una pausa di 30 secondi, dopo tre minuti continui acceso, per far espandere il calore.
Il tempo lo calcolo con "millis()".
Il metodo più semplice che mi è venuto in mente è questo
void timer () // calcola ore, minuti, secondi
{
millesimi = millis();
if (millesimi > 3600000) {ore = millesimi / 3600000; millesore = ore * 3600000;
min = (millesimi - millesore) / 60000; millesmin = min * 60000 + millesore;
sec = (millesimi - millesmin) / 1000;}
if (millesimi < 3600000) {ore = 0; min = millis() / 60000; millesmin = min * 60000;
sec = (millesimi - millesmin) / 1000;}
}
void printlcd () // aggiorna LCD
{
lcd.setCursor(0, 0); lcd.print(" "); // colonna, riga
lcd.setCursor(0, 0);
lcd.print("T"); lcd.print (temp); lcd.print(" di"); lcd.print (impostata);
lcd.setCursor(14, 0); // colonna, riga
lcd.print("P"); lcd.print (programma);
lcd.setCursor(0, 1); lcd.print(" "); // colonna, riga
lcd.setCursor(0, 1);
lcd.print("h"); lcd.print (ore); lcd.print(":"); lcd.print (min); lcd.print("."); lcd.print (sec);
lcd.setCursor(8, 1); lcd.print(" di"); lcd.print (orei);
lcd.setCursor(14, 1); // colonna, riga
lcd.print("R"); lcd.print (posrele);
}