Accendere o spegnere piu led contemporaneamente...

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'

ciao smartgatto

Spero che hai messo delle resistenze sui led come ha scritto MauroTec

Poi per accendere i led casuali e genera per ogni led un numero causale e controlla se é sopra o sotto una certa soglia.

for (led = 2; led>=9; led++)
{
if(random(2)>1)digitalWrite(led, HIGH);else digitalWrite(led, LOW);  
}

Metterei anche un tempo minimo di accensione led come consiglia pdor90 ( da 0,5 a 5 secondi). Vedi con tentativi quali valori sono meglio

Ciao Uwe

No, purtroppo non le ho messe le resistenze :frowning:
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! :slight_smile:

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!

si chiamano connettori a pettine :slight_smile:
Ciao

ciao smartgatto

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.

Ciao Uwe