Aggiornare LCD

Ciao a tutti.
Ho realizzato questo programma per la mia sera da portare all’esame di maturità. Ho solo due problemi.
Ovviamente il display si aggiorna solo alla pressione del pulsante UP o DOWN. Io vorrei che si aggiornasse da solo ogni 5 secondi, visto che i parametri variano in fretta.
Poi, non riesco a far funzionre il pezzo di programma che accende un Led in base alla luce che c’è, letta tramite una fotoresistenza. Dovrebbe modulare la luminosità in base a quella letta dalla fotoresistenza, dalle 6 di mattina alle 20. L’orario funziona ma il led è sempre acceso al massimo.
La fotoresistenza è collegata con un partitore da 10Kohm.
Posto il programma.
Il display è questo : Adafruit I2C Controlled + Keypad Shield Kit for 16x2 LCD : ID 715 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits
RTC : basato su DS1307

dht22_lcd.ino (9.23 KB)

Il led è su pin 9 ? Come hai collegato il led ? C'e' una resistenza in serie ? Per calcolare ValoreLed, fai dei calcoli, verifica quali valori ottieni stampandoli con Serial.print, così puoi verificarli.

Piccola considerazione: questo

ValoreFotoresistenza = analogRead(fotoresistenza);
ValoreFotoresistenza = map (ValoreFotoresistenza, FotoMin, FotoMax, 0, 255);  // quindi 1023,0
ValoreLed = 255 - ValoreFotoresistenza;

Passando 1023,0 per fotomin e fotomax stai invertendo la scala. Poi la reinverti con 255-x Forse puoi evitare l'ultimo calcolo 255-x se map (ValoreFotoresistenza, FotoMin, FotoMax, 255, 0);

Si il led è sul pin 9 collegato in serie ad una resistenza da 220 ohm.

Ma il programma che hai provato da solo, c'era la shield ? Non c'era la libreria servo collegata, vero ? Sposta il led sul pin 3.

perchè se leggi qui: https://arduino-info.wikispaces.com/Timers-Arduino "Servo Library uses Timer1. You can’t use PWM on Pin 9, 10 when you use the Servo Library on an Arduino. " Se ancora non va, el programma forza il led al valore 128, luminosità media, vedi se varia.

Avevi ragione. Grazie mille