Pages: [1]   Go Down
Author Topic: [Risolto] Problema LED da principiante :/  (Read 730 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin

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:
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? smiley-sad
« Last Edit: March 26, 2012, 05:18:38 am by NorthDakota » Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin)?

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

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21661
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22813
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21661
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin)?

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

Come ha giá detto Federico devi definire i pin come uscite:
pinMode(pin,OUTPUT);
http://arduino.cc/en/Reference/PinMode

Se cosumeresti troppa corrente si spegne l'arduino, non solo i LED e il Tu PC si lamenterebbe.

Ciao Uwe
Logged

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Mi era venuto il dubbio perche' diceva che il led si accendeva debolmente, e quindi non sapevo bene se effettivamente andasse dichiarato o meno, visto che io lo dichiaro sempre (quantomeno per capirci qualcosa dopo nel codice). Avete fugato ogni dubbio!
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12576
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Usando il pin correttamente comunque una R da 1K fornirà poca corrente al led, anche se lo vedrai decisamente più luminoso rispetto ad ora (considerando che la pull-up interna al minimo è 20K.
Il range varia da 680ohm a 220ohm, più è basso il valore e maggiore è la corrente che scorre nel led, quindi maggiore è la luminosità. l'LM35 assorbe pochissimo, piuttosto fai ben attenzione alle connessioni  smiley-wink
Logged

Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco qual'è il problema! Mi sono proprio dimenticato di dichiarare i pin come output smiley grazie mille a tutti quanti per le informazioni, gentilissimi smiley-grin
Logged

Pages: [1]   Go Up
Jump to: