ciao a tutti,
ho collegato 7 led, uno ad ogni porta del mio arduino 2009.
Vorrei far si che lo stato di questi led, in maniera random, passi da LOW ad HIGH, ma in contemporanea agli altri led. Mi spiego meglio:
vorrei simulare l'accensione e lo spegnimento nelle casette del presepe, ma facendo questo sketch:
long ledrandom;
long timerandom;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
randomSeed(analogRead(0));
}
void loop() {
timerandom = random(5000);
ledrandom = random(2, 9);
digitalWrite(ledrandom, HIGH); // set the LED on
delay(timerandom); // wait for a second
digitalWrite(ledrandom, LOW); // set the LED off
delay(timerandom); // wait for a second
}
mi si accende solo un led alla volta, io invece vorrei che ad esempio ce ne fossero anche tre-quattro accese alla volta (o magari tutte o nessuna!)...mi aiutate con il programmino??
grazie mille!!
Ciao fai attenzione a collegare i led direttamente ad arduino. Dal datasheet si legge 40mA max per uscita e in totale 200mA.
Quindi se la corrente su ogni led e di 20mA x 7 140mA occhio che siamo vicini. Cerca nel forum o nel playground per la soluzione, in breve devi usare dei transistor, per pilotare i led.
Per il codice io intanto farei andare avanti un contatore per circa 10, poi lo azzero e questo corrisponde con le ore 0:00, quindi buio. Man mano che il contatore aumenta incremento l'illuminazione globale se prevista.
Per il resto non sono espertissimo.
potrebbe essere che arduino va a prendere sempre valori per il time random molto piccoli e quindi è troppo veloce la sequenza di accensione e spegnimeto prova a mettere al posto di solo (5000) nn so (500,5000)
cosi dovrersti rallentare un po'
No, purtroppo non le ho messe le resistenze
rimedierò il prima possibile. A tal proposito: vedendo questo schema:
pensavo di utilizzare questo, ma mi sono chiesto: le resistenze da 330ohm vanno bene per tutti i led oppure devo variarle, visto che uso led bianchi?
Per lo sketch che mi hai postato, ti ringrazio...è perfetto!
Un'ulteriore, forse stupida domanda...come si chiamano in italiano le "puntine" che vanno inserite nei connettori dell'arduino, che in inglese si chiamano pin strip? grazie!
Un'ulteriore, forse stupida domanda...come si chiamano in italiano le "puntine" che vanno inserite nei connettori dell'arduino, che in inglese si chiamano pin strip? grazie!
Metti le resistenze subito; rischi di rompere l' arduino.
Per calcolare le resistenze dei LED:
Dai dati tecnici del LED ricavi VF, la tensione sopra il LED quando é acceso e IF la corrente massima che puó circolare nel LED senza riscaldarlo troppo e percui romperlo.
Valori stimati con cui lavorare:
Per LED bianchi UF é intorno ai 3,6V
In generale IF si puó considerare 20mA anche se alcuni LED sopportano di piú e di consequenza sono piú luminosi.
Calcolo:
Dalla tensione di alimentazione si sottrae UF e si ricava la tensione sulla resistenza. Per avere il valore della resistenza si divide quella tensione per la corrente del LED.
Nel Tuo caso: R= (5V-3,6V)/20mA = 70 Ohm.
Le resistenze hanno certi valori e il piú vicino é 68 Ohm.
I 330 Ohm nel esempio sarano calcolati per dei LED rossi perché quelli hanno una tensione da acceso piú piccola.
Puoi sempre mettere una resistenza piú grande di quela calcolata. in quel caso il LED sará meno luminoso.
Il circuito che hai nominato va bene per aumentare la corrente e poter usare piú LED.