Ciao a tutti, sono alle prime armi con arduino e sto pian piano imparando.
Sto cercando di fare alcuni sketch e mi sono imbattuto in un problema che non riesco a risolvere. In pratica ho collegato alla scheda 6 Led alle uscite in PWM e ho come obiettivo far accendere o spegnere in fade ogni led con tempi diversi e valori di luminosità diversi. Ho provato ad utilizzare lo sketch di esempio chiamato "fade", ma fa lavorare un solo led alla volta finchè non è trascorso il tempi di delay. Vorrei chiedervi come devo procedere per far funzionare tutti i led contemporaneamente?
Grazie.
La temporizzazione non puó essere fatta con delay()
Devi usare millis()
vedi https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
In pratica non viene aspettato che il tempo sia trascorso (delay()) ma controllato ripetutamente se il tempo é arrivato per fare qualcosa (millis()).
Ciao Uwe
Ma la guida che mi hai postato non è per accendere e spegnere il Led senza fade? Io cercavo uno sketch che facesse il fade a diversi led. Ho trovato questo codice:
/*
Fade
This example shows how to fade an LED on pin 9
using the analogWrite() function.
This example based on the Arduino Example Fade sketch
but modified to use timing instead of the delay() function
*/
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
unsigned long currentTime;
unsigned long loopTime;
void setup() {
// declare pin 9 to be an output:
pinMode(9, OUTPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 20)){
// set the brightness of pin 9:
analogWrite(9, brightness);
// change the brightness for next time through the loop:
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
loopTime = currentTime; // Updates loopTime
}
// Other processing can be done here
}
Il problema è che non riesco ad adattarlo a diversi led con diversi valori di luminosità e durata. Come posso fare?
Devi ovviamente creare un diverso ciclo di controllo per ogni led, ognuno con una diversa variabile da confrontare di volta in volta con millis ... ![]()
Grazie per l'aiuto, alla fine ci sono riuscito ![]()