Buon Natale a tutto il forum.
Ho creato un semplice sketch di 4 led che accendono in modo causale uno alla volta o tutti insieme.
dal ciclo 0 a 3 non ho problemi, ottengo quello che voglio, cioè un led per volta acceso, ma quando inserisco il ciclo 4, accendono tutti insieme ed è corretto ma non accendono più uno per volta o meglio sfarfallano per una frazione di secondo in modo causale, ma non resta un colore per volta acceso per il secondo del delay.
Mentre se cancello il ciclo 4 ogni colore accende uno per volta per 1 secondo, perché?
Grazie a tutti.
#define BLU 5 // porta analogica
#define ROSSO 10 // porta analogica
#define VERDE 9 // porta analogica
#define GIALLO 7 // porta digitale
#define UV 6 // porta analogica
// VARIABILI CICLO LAMPEGGIO
int ciclo;
// VARIABILI RGB
void setup() {
random(analogRead(A0));
pinMode(VERDE, OUTPUT);
pinMode(GIALLO, OUTPUT);
pinMode(BLU, OUTPUT);
pinMode(ROSSO, OUTPUT);
pinMode(UV, OUTPUT);
Serial.begin(9600);
}
void loop() {
PSICHEDELICHE();
LED_UV();
}
// LED UV ILLUMINAZIONE LOGO
void LED_UV(){
analogWrite(UV, 255);
}
// INIZIO CLICLO PSICHEDELICHE
void PSICHEDELICHE(){
ciclo = 0;
ciclo += random(0,5);
if(ciclo == 0){
analogWrite(VERDE, 30);
}
else{
analogWrite(VERDE, 0);
}
if(ciclo == 1){
digitalWrite(GIALLO, HIGH);
}
else{
digitalWrite(GIALLO, LOW);
}
if(ciclo == 2){
analogWrite(BLU, 30);
}
else{
analogWrite(BLU, 0);
}
if(ciclo == 3){
digitalWrite(ROSSO, HIGH);
}
else{
digitalWrite(ROSSO, LOW);
}
if(ciclo == 4){
digitalWrite(VERDE, HIGH);
digitalWrite(GIALLO, HIGH);
digitalWrite(BLU, HIGH);
digitalWrite(ROSSO, HIGH);
}
else{
digitalWrite(VERDE, LOW);
digitalWrite(GIALLO, LOW);
digitalWrite(BLU, LOW);
digitalWrite(ROSSO, LOW);
}
Serial.println("ciclo: ");
Serial.print(ciclo);
delay(1000);