Pages: [1] 2 3   Go Down
Author Topic: Problema led sul Pin 0  (Read 3397 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti!

Scusate per la banalità della mia domanda ma non ho trovato nessuna risposta in giro su Internet...
Ecco il mio problema. Ho da poco acquistato una scheda Arduino Uno R3 ma ho paura che il Pin 0 digitale sia guasto.
Se provo a lanciare il programma basic "Blink" (lampeggio di un Led), riesco a far lampeggiare un led in qualsiasi posizione (dal Pin 1 digitale al Pin 13 digitale, ovviamente cambiando di volta in volta il valore della variabile "led" da 1 a 13) ma appena seleziono il Pin 0 (e nel codice setto la variabile "led" a 0), il led resta sempre acceso e non lampeggia. Cosa sto sbagliando?

Grazie in anticipo e vi chiedo ancora scusa per la mia richiesta...

Saluti!
Alfredo
Logged

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

Stai sbagliando non sapendo che sui pin D0 e D1 c'è la seriale gestita dall'Atmega16U2 (l'altro chippino sulla scheda) per cui su D0 è presente sempre un segnale.  smiley-wink
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mh...ma se in D0 e D1 c'è la seriale gestita dall'Atmega16U2, allora perchè sul Pin D1 posso comandare il led e sul Pin D0 non posso?
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Inoltre, ciò vuol dire che 2 pin su 14 pin digitali non sono utilizzabili...quindi in tutto si hanno 12 pin digitali (e non 14). E' così?
Logged

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

1) Mh...ma se in D0 e D1 c'è la seriale gestita dall'Atmega16U2, allora perchè sul Pin D1 posso comandare il led e sul Pin D0 non posso?
2) Inoltre, ciò vuol dire che 2 pin su 14 pin digitali non sono utilizzabili...quindi in tutto si hanno 12 pin digitali (e non 14). E' così?
1) non so spiegartelo. Dai miei ragionamenti dovrebbe funzionare. Finche non inizializzi la seriale con Serial.begin i pin D0 e D1 sono come Pin normali solo che sono collegati con 2 resistenze da 1kOhm rispettivamente ai pin RC e TX del ATmega16U2. La resistenza fa sí che Do é diaccopiato dal ATmega16U2 e percui dovrebbe pilotare senza problemi il LED quando metti l' uscita a H o L.
Come hai collegato il LED? che resistenza hai messo? Che sketvh usi?

2) Inoltre le entrate analogiche possono essere usate come entrate/uscite digitali; percui hai in tutto 20 Pin di cui 2 su Arduino sono usati per il collegamento tramite il ATmega16U2 al USB e eprcui non possono essere usati quando usi il collegamento seriale.

Ciao Uwe
Logged

Offline Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

può essere che lui aveva il led sull'arduino prima del caricamento dello sketch quindi lo sketch non è mai stato uploadato correttamente e per questo il led non blinkava  smiley-mr-green
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

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

può essere che lui aveva il led sull'arduino prima del caricamento dello sketch quindi lo sketch non è mai stato uploadato correttamente e per questo il led non blinkava  smiley-mr-green
In quel caso dovrebbe aver ricevuto un errore durante l' upload.
Il LED resterebbe acceso continuamente.
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Allora, faccio un riepilogo dettagliato.

Posseggo una scheda Arduino Uno R3.

Il mio scopo e' quello di controllare che i 14 pin digitali mi consentano di pilotare un Led.
Ho fatto 14 prove (una per ogni pin) collegando un led rosso in serie ad una resistenza da 220 Ohm, cosi' come descritto nel tutorial ufficiale "Blink", a questo indirizzo:

http://arduino.cc/en/Tutorial/Blink

13 di queste 14 prove hanno dato esito positivo (dal pin 1 al pin 13). Le prove consistevano nelle seguenti semplici operazioni:

1) Modifico la variabile "led" assegnando man mano il valore equivalente della posizione pin del led (da 13 a 0);
2) Carico lo sketch sull'Arduino (non ho nessun errore durante l'upload);
3) Collego il led alla posizione scelta secondo la variabile "led" (quindi dal pin 13 al pin 0);
4) Resetto Arduino e vedo il risultato.

Risultato: il pin si accende e spegne (blinka) dalla posizione 13 alla posizione 1, ma NON blinka (rimane acceso con una luce debole) SOLO quando lo collego al pin 0.

Ecco il codice:
Code:
int led = 13; //questo valore viene cambiato man mano che faccio le prove e cambio la posizione del led

void setup() {                
  pinMode(led, OUTPUT);    
}


void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

Per favore, potreste dirmi dove sbaglio? Grazie!
« Last Edit: October 10, 2012, 02:00:49 am by alfredone78 » Logged

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

NON blinka (rimane acceso con una luce debole) SOLO quando lo collego al pin 0.
Questo fa pensare al 16U2 che tiene un segnale alto sulla linea che va a D0, e con la R da 1K tale segnale funga da pull-up per il led. Hai un multimetro per verificare se, a vuoto, su D0 leggi qualcosa?
Logged


Offline Offline
Newbie
*
Karma: 1
Posts: 15
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

NON blinka (rimane acceso con una luce debole) SOLO quando lo collego al pin 0.
Questo fa pensare al 16U2 che tiene un segnale alto sulla linea che va a D0, e con la R da 1K tale segnale funga da pull-up per il led. Hai un multimetro per verificare se, a vuoto, su D0 leggi qualcosa?

Adesso sono al lavoro e non posso controllare... ma se cosi' fosse (se leggessi qualcosa sul pin D0 col multimetro), sarebbe un problema della mia scheda Arduino? Insomma, sarebbe guasta oppure e' normale che sia cosi'? Se fai la stessa prova sulla tua scheda, hai il mio stesso risultato?
Logged

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

una prova semplice da fare:
manda il blink su un pin diverso (p.es. il 13)
DOPO l'upload collega una R ed un LED sul pin D0 verso massa
In tal modo hai certezza che tu non stai mandando nulla, il led NON dovrebbe accendersi, se si accende c'è qualcosa che non va

altra prova:
manda il blink sul pin D0
collega una R ed un LED sul pin D0 verso +5V, lo vedrai spento
Il blink dovrebbe funzionare comunque.

domanda:
è possibile che alla prima prova sul pin D0 tu abbia dimenticato di mettere la R di limitazione? In tal caso il pin potrebbe essere danneggiato.
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

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

DOPO l'upload collega una R ed un LED sul pin D0 verso massa
In tal modo hai certezza che tu non stai mandando nulla, il led NON dovrebbe accendersi, se si accende c'è qualcosa che non va

Si accende debolmente in tutti i casi perché D0 è Rx di Arduino, quindi un input, ed è collegato con una R da 1k con il Tx del 8u2 che sta a 1 logico, condizione di idle della seriale, pertanto il led risulta polarizzato e può drenare circa 3 mA che gli consentono di accendersi più o meno debolmente.

Quote
è possibile che alla prima prova sul pin D0 tu abbia dimenticato di mettere la R di limitazione? In tal caso il pin potrebbe essere danneggiato.

Impossibile perché in questo caso non potrebbe più caricare sketch.

Adesso non posso fare prove, però è possibile che l'IDE 1.0.1 preveda come default la seriale attiva anche se non specificatamente inizializzata, in questo caso D0 è un input (D1 è Tx quindi un out), e non permetta l'override  del pin se prima non viene esplicitamente disabilitata la seriale, è solo una mia ipotesi ed è da verificare, però tra le varie possibilità è quella più semplice e probabile, "Occam docet".
Logged

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

NON blinka (rimane acceso con una luce debole) SOLO quando lo collego al pin 0.
Questo fa pensare al 16U2 che tiene un segnale alto sulla linea che va a D0, e con la R da 1K tale segnale funga da pull-up per il led. Hai un multimetro per verificare se, a vuoto, su D0 leggi qualcosa?
ma dovrebbe blinkare tra luce forte e luce debole (non si spegne perché riceve corrente dal 16U2) e non rimanere sempre acceso debolmente.
@ astrobeed
Se non usi (inizalizzi) la seriale il pin 0 e 1 sono pin normali e percui se lo metti come uscita dovrebbe funzionare? Potresti avere problemi di upload a causa dei componenti collegati.

Il UNO R3 monta un 16U2 non un 8U2 come gli UNO prima. Per questa discussione non fa differenza.

Ciao Uwe
« Last Edit: October 10, 2012, 03:34:13 am by uwefed » Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@ astrobeed
Se non usi (inizalizzi) la seriale il pin 0 e 1 sono pin normali e percui se lo metti come uscita dovrebbe funzionare? Potresti avere problemi di upload a causa dei componenti collegati.

Infatti ho detto che la mia è solo una ipotesi, però è quella più semplice che spiega il problema, più tardi faccio un paio di verifiche e vediamo subito se è così oppure il problema è di altra natura.
Logged

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

ma dovrebbe blinkare tra luce forte e luce debole (non si spegne perché riceve corrente dal 16U2) e non rimanere sempre acceso debolmente.
Io ho capito che lo accende ma non si spenge del tutto:

Risultato: il pin si accende e spegne (blinka) dalla posizione 13 alla posizione 1, ma NON blinka (rimane acceso con una luce debole) SOLO quando lo collego al pin 0.
Io leggo che il led lampeggia tra acceso bene e acceso flebile.
Logged


Pages: [1] 2 3   Go Up
Jump to: