Go Down

Topic: [Risolto] Problema LED da principiante :/ (Read 768 times) previous topic - next topic

NorthDakota

Mar 26, 2012, 02:13 am Last Edit: Mar 26, 2012, 12:18 pm by NorthDakota Reason: 1
Salve a tutti! Mi sto avvicinand proprio adesso al mondo di Arduino e ho un piccolo problema con dei LED :/ In sostanza, ho costruito un piccolo circuito con il sensore di temperatura LM35DZ che dovrebbe accendere una serie di LED in base..beh, alla temperatura :D

Il mio problema è che i LED si accendono ma si vedono a malapena :S

Ho una Arduino UNO, ho collegato i LED a delle resistenze (ne ho provate diverse, da 1K a 4,7ohm nella speranza che fossero troppo "potenti" ma niente :/) che, a loro volta, sono collegate ai pin 8, 7 e 2. I LED poi, naturalmente, finiscono attaccati a GND. L'LM35DZ è invece collegato ai 5V per l'alimentazione, alla A0 per la lettura della temperatura e poi a terra. La lettura avviene correttamente (nel monitor della seriale riesco a leggerla ed è su per giù corretta) ma i LED sono molto sbiaditi :/

Ho scritto il seguente programmino:
Code: [Select]
const int highTemp = 26;
const int normTemp = 24;
const int lowTemp = 22;

int tempPin = A0;
int sensValue = 0;
int temp = 0;

int pins[3] = { 8,7,2 };

void setup() {
 Serial.begin(9600);
}

void loop() {
 sensValue = analogRead(tempPin);
 temp = (5.0*sensValue*100.0) / 1024.0;
 Serial.print("Temperatura: ");
 Serial.print(temp);
 Serial.print(" C\n");
 
 if(temp >= lowTemp) {
   digitalWrite(pins[0], HIGH);
 } else {
   digitalWrite(pins[0], LOW);
 }
 
 if(temp >= normTemp) {
   digitalWrite(pins[1], HIGH);
 } else {
   digitalWrite(pins[1], LOW);
 }
 
 if(temp >= highTemp) {
   digitalWrite(pins[2], HIGH);
 } else {
   digitalWrite(pins[2], LOW);
 }
 
 delay(1000);  
}


Dov'è che sbaglio? :(

Federico

Nella fase di setup dovresti definire le porte dei led come output, ma forse e' opzionale. Una resistenza da 1k a seconda del led che utilizzi potrebbe essere troppo. Prova che so, 330ohm ? Per piccole veloci prove puoi vedere anche SENZA resistenza, in modo da fare un metro di quale sia l'illuminazione massima dei tuoi led.
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

NorthDakota

Uhm, ho provato ad avviare la schedina senza le resistenze dei LED ma il risultato non cambia :/ mi sta venendo un dubbio, potrebbe essere che il sensore che uso "mangi" quasi tutta l'energia della scheda? e così non ne rimane più per alimentare i LED (scusatemi se ho detto una cavolata :D)?

Ah, mi son dimenticato di aggiungere che attualmente sto usando la porta USB per alimentare il tutto!

uwefed


Nella fase di setup dovresti definire le porte dei led come output, ma forse e' opzionale. Una resistenza da 1k a seconda del led che utilizzi potrebbe essere troppo. Prova che so, 330ohm ? Per piccole veloci prove puoi vedere anche SENZA resistenza, in modo da fare un metro di quale sia l'illuminazione massima dei tuoi led.

MAI usare LED senza resistenza.
Ciao Uwe

leo72


Nella fase di setup dovresti definire le porte dei led come output, ma forse e' opzionale.

No, non è opzionale. All'avvio del microcontrollore tutti i pin sono in stato di alta impedenza, ossia INPUT. Se si scrive con un digitalWrite lo stato HIGH si attiva la resistenza interna di pull-up. Ecco spiegato perché il led è fioco, perché arriva quella debolissima corrente data dalla resistenza interna.
Vanno dichiarati esplicitamente come OUTPUT tutti i pin usati in uscita.

Go Up