Led arduino

Chiaramente come hanno detto gli altri il pin deve essere PWM, e sono quelli caratterizzati dal simbolo ~ affianco al numero. Sul sito di arduino trovi tutte le spiegazioni del caso

devil88bg:
ho appena effettuato l'esempio in questione. Funziona tranquillamente e c'è un esempio sul sito di arduino solo che bisogna capirlo e il codice è il seguente.

int luminosita = 0;
int sfuma = 5;

void setup(){
pinMode(9, OUTPUT);

}

void loop (){
analogWrite(9, luminosita);
luminosita = luminosita + sfuma;

if((luminosita == 0) || (luminosita ==255)){
sfuma = -sfuma;
}
delay(30);
}

scusate una cosa, questo codice in sostanza fa variare la luminosità passano di 5 in 5?...quindi fà : 0, 5,10,15,20,25, e cosi via fino a 255 con un'intervallo di 30 millisecondi esatto?...

in particolare questa riga " if((luminosita == 0) || (luminosita ==255)) " cosa fa?-.... nello specifico le due stanghette verticali che significano? grazie

Non ha senso di far rispondere albyy911 alle nostre domande senza inventarci il suo problema e rispondere a domande non poste?
Ciao Uwe

babbu95:
scusate una cosa, questo codice in sostanza fa variare la luminosità passano di 5 in 5?...quindi fà : 0, 5,10,15,20,25, e cosi via fino a 255 con un'intervallo di 30 millisecondi esatto?...

in particolare questa riga " if((luminosita == 0) || (luminosita ==255)) " cosa fa?-.... nello specifico le due stanghette verticali che significano? grazie

Allora mentre la funzione digitalWrite fa assumere valori 0 o 1(o è 0 o 5 V la tensione) al nostro pin, la funzione analogWrite fa assumere valori da 0 a 255(ma il PIN deve essere PWM) e con questa tecnica possiamo far accendere il LED lentamente o comunque a scaglioni. Qui c'è scritto come funzionano i pin PWM http://arduino.cc/en/Tutorial/PWM

Le due sbarrette || sono un operatore OR. In pratica fa questa operazione: Se la luminosità è uguale a zero oppure a 255 allora poni la variabile sfuma = -sfuma. Questo perchè come detto il range è tra 0 e 255. Allora quando sfuma è positivo, "sfuma" viene sommato a "luminosità". Se negativo viene sottratto. Il programma funziona così:
Inizialmente sfuma è positivo e luminosità è pari a zero. Quindi somma sfuma fin quando luminosità vale 255, perchè se andasse oltre l'intervallo passerebbe direttamente a zero e il led si spegnerebbe istantaneamente senza "sfumare" appunto. Quando è 255 pone sfuma negativo e quindi lo fa gradualmente scendere a zero e poi di nuovo il contrario.
Chiaramente se poniamo sfuma pari a 1 invece che a 5 il led si accenderà e spegnerà molto più lentamente.

devil88bg:
la funzione analogWrite fa assumere valori da 0 a 255(ma il PIN deve essere PWM)

Non è corretto, con analogwrite imponi il duty cycle su un pin di tipo PWM, la tensione è sempre compresa tra solo due livelli, 0V e 5V, quello che cambia è il rapporto temporale tra i due stati.

astrobeed:
Non è corretto, con analogwrite imponi il duty cycle su un pin di tipo PWM, la tensione è sempre compresa tra solo due livelli, 0V e 5V, quello che cambia è il rapporto temporale tra i due stati.

Quindi praticamente cosa succede, da quello che ho letto e capito inizialmente il duty cycle è tutto a zero e quindi led spento (i valori dell'onda sempre compresi tra 0 e 5). All'aumentare del range (che varia tra 0 e 255), l'onda diventa sempre più grande e che succede: Quindi la tensione è pari a 5 per un tempo inferiore al periodo e questo non consente al LED di accendersi completamente. Però all'aumentare del range cresce appunto il tempo t per cui l'onda assume valori pari a 5 V fino a che l'onda è esattamente pari al periodo: in quel momento il LED si accende completamente.
Giusto come discorso?

scusate una domanda che poco ci centra con questo topic ma riguarda più o meno...ma mi sembra una cavolata aprire un topic per questa domanda...comunque...
se io collego direttamente un led al piedino arduino, un led classico da 5mm, sò che crea un cortocircuito, stessa cosa con dei led di un display a 7 segmenti per esempio, comunque, se io lo collego senza resistenze, faccio cortocircuito, ma l'unica cosa che rischio di rovinare è il led, in quanto l'arduino non si rovina esatto? come teoricamente, data la sua struttura non si rovinerebbe nemmeno se cortocircuitassi direttamente il +5V con il GND ...esatto?

Non vorrei direi una fesseria ma da quel che ho letto sui tutorial e mi è sembrato di capire è che se fai una cosa del genere potresti rovinare definitivamente il pin, che risulterebbe un pin morto.
Se cortocircuiti +5 V e la massa potresti bruciare definitivamente il pin da 5 V e credo sia una pessima cosa. Magari si scollega in automatico l'alimentazione ma meglio non provarci :smiley:

Non lo bruci il pin solo collegando un led.

Bruci comunque il led perché ci transita troppa corrente: i led non sono fatti per lavorare a 5V, e le tensioni variano in base al colore.

Ci vuole sempre una resistenza.

leo72:
Non lo bruci il pin solo collegando un led.

Bruci comunque il led perché ci transita troppa corrente: i led non sono fatti per lavorare a 5V, e le tensioni variano in base al colore.
404 Error

Ci vuole sempre una resistenza.

capisco, e se per sbaglio (ci sto attento a non farlo ovvio, ma magari sbaglio con i collegamenti sulla breadbord per una svista, andassi a collegare direttamente i +5V o un pin analogico/digitale (comunque impostato rispettivamente su HIGH o 255 ) al GND? cosa succederebbe? rischierei di bruciare arduino o il microcontrollore o non rischierebbe nulla il mio arduino o parte di esso? grazie

Premesso che i corto non fanno mai bene, diciamo che un minimo di resistenza i componenti ce l'hanno (io ho messo un Atmega stand-alone col +5 nel piendo di massa da una parte ed i +5 per l'AVcc infilato in un pin a caso perché avevo sbagliato ad allineare il uC su una breadboard...) però non si può mai sapere: potresti bruciare qualcosa come no. Quindi, il corto è da evitare sempre.

leo72:
Premesso che i corto non fanno mai bene, diciamo che un minimo di resistenza i componenti ce l'hanno (io ho messo un Atmega stand-alone col +5 nel piendo di massa da una parte ed i +5 per l'AVcc infilato in un pin a caso perché avevo sbagliato ad allineare il uC su una breadboard...) però non si può mai sapere: potresti bruciare qualcosa come no. Quindi, il corto è da evitare sempre.

capisco, anche perchè comunque se non sbaglio in base a come è costruito il regolatore di tensione di arduino, regge i cortocircuiti per un tempo infinito...

Che li regga il regolatore a noi ce ne importa il giusto, a noi interessa che non li debba reggere il micro :wink:
Altrimenti... $)

e quello con un corto di tipo : pin HIGH ----> GND si rovina? grazie (dico per un corto di massimo una decina di secondi...)

Dipende da tanti fattori.
A me è andata bene, però non è la regola. Evita i corto.

Sennò, se vuoi usare il tuo Arduino come tester, poi ci fai sapere i risultati! ]:smiley: ]:smiley:

SCHERZO ovviamente XD

se nn sbaglio ogni pin di arduino supporta una corrente massima di 40mA.

esatto, quindi se metto un pin HIGH direttamente al GND non mi muore l'atmgea (per un tempo di 30 secondi)

Ma per quale motivo devi mettere per 30 secondi un pin in corto?
Comunque visto che sul forum ogni tanto qualcuno arriva con un arduino fumato, io eviterei.

30 secondi è un tempo indicativo per accorgersi che qualcosa non va ed identificare a grandi linee il problema :wink: