Problemi fotoresistenza

Ciao a tutti, sto realizzando un progetto di arduino per una piccola serra automatizzata, ho collegato il display lcd, il sensore di umidità/temperatura e le varie file di luci in parallelo (3 file da 10 diodi) per l'illuminazione, ma ho un problema, una volta inserito la fotoresistenza nel progetto, esso mi da valori strani, alla prima rilevazione riesce a rilevare correttamente la luminosità e quindi entra nel seguente if:

valoreletto=analogRead(A7);
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print(valoreletto);

 if(valoreletto<25){
   analogWrite(ledRossi, 255);
   analogWrite(ledBlu, 255);
 }else if(valoreletto<35){
   analogWrite(ledRossi, 50);
   analogWrite(ledBlu, 50);
 }else if(valoreletto<45){
   analogWrite(ledRossi, 20);
   analogWrite(ledBlu, 20);
 }else{
   analogWrite(ledRossi, 0);
   analogWrite(ledBlu, 0);
 }

il problema è che appena le luci si accendono il valore passa dai <25 a 80 circa, poi si rispende segnando 25 e si riaccende segnando 80, è come se non avesse abbastanza energia per alimentarlo o non so, ma le luci sono attaccate ai pin digitali, che penso siano separati dai 5v. Mi scuso per le cavolate che probabilmente ho scritto, volevo quindi chiedervi aiuto a riguardo, perchè non so come risolvere, Buona serata.

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione e sistemato il codice, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

È necessario lo schema dei collegamenti della fotoresistenza e delle file di luci led, per poterti aiutare.

Ciao,
P.

Senza schema non sappiamo aiutarti. Basta che lo disegni con matita e carta e lo fotografi.
Ciao Uwe

Spero che dalla foto si capisca, il + sulla breadboard è alimentato con i 5v mentre sul - vengono collegati tutti i - incluse le 3 strisce di luci.

foto 1

foto 2

Hai fortuna che l' arduino UNO é resistente e non si rompe quando fai errori megagalattici.

Dove mai hai sentito o visto che non servono dispositivi per limitare la corrente dei LED?

Ciao Uwe

In realtà non so nulla di elettricità, avevo visto in un tutorial che non c'era bisogno di mettere la resistenza quando si fa analogWrite. Il problema è che la fotoresistenza da valori sbagliati una volta che le luci si accendono, e in realtà anche il contrasto del display lcd cambia all'accensione dei led.

misura i 5V e vedrai il perché dei sintomi.

Mamuka:
... avevo visto in un tutorial che non c'era bisogno di mettere la resistenza quando si fa analogWrite.

È sbagliato !!!! Servono sempre resistenze o altri dispositivi di limitazione di corrente.

Purtroppo non ho gli strumenti per poterlo misurare

Mamuka:
In realtà non so nulla di elettricità,...

Intanto vediamo come collegare un led. Per ora ti basti sapere che OGNI led deve essere collegato fra il pin di comando (che NON ci hai comunicato) e GND con interposta una resistenza. Quindi: pin Arduino -> resistenza -> led -> GND. Il valore della resistenza dipende dal tipo di led. Nel tuo caso per OGNI led rosso devi mettere una resistenza di valore compreso fra 330 e 470 ohm, mentre per OGNI led blu e OGNI led bianco la resistenza potrà essere compresa fra 220 e 330 ohm.

Ma non basta. Ogni pin di Arduino NON PUÒ fornire più di 40mA di corrente, ed è opportuno NON superare i 20-30mA. Ogni led rosso, blu o bianco con quella resistenza richiede circa 10mA. Quindi NON puoi connettere PIÙ di due o tre led PER OGNI PIN.

Ma non basta. Ogni Arduino NON PUÒ fornire più di 200mA IN TOTALE dai suoi pin. Quindi qualunque numero di pin tu usi non potrai collegarci più di 20 led E NON PIÙ di 2 o 3 PER OGNI PIN.

Allora che si fa? Si utilizzano transistor o mosfet per pilotare led energivori. E come si collegano? Prova a guardare qua a pag 2 dovresti trovare qualcosa che fa per te.

Ciao,
P.