Salve a tutti, sono giorni che sto facendo prove su prove per cercare di far funzionare uno sketch su Arduino,ma sto impazzendo perchè non funziona,
questo è un pezzo dello sketch:
int R = 7;
int G = 6;
int B = 8;
int Rv = LOW;
int Gv = LOW;
int Bv = LOW;
int color = 0;
int oldColor = 0;
int val = 0;
unsigned long zero = 0;
void setup()
{
Serial.begin (9600);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
}
void loop()
{
Blink();
Rgb();
}
void Rgb()
{
if (millis() - rgb >= 500 ){
rgb = millis();
do{
color = random(7);
}
while(color==oldColor);//Continua a generare numeri finché sono uguali al precedente
oldColor=color; // E' uscito dal while perché ha generato un numero diverso dal precedente
switch(color){
case 0:
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
break;
case 1:
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, HIGH);
break;
case 2:
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
break;
case 3:
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
break;
case 4:
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
break;
case 5:
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
digitalWrite(B, HIGH);
break;
case 6:
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
break;
}
}
}
void Blink()
{
digitalWrite(G, LOW), digitalWrite(B, LOW);
if (millis() - zero >= 500 )
{
zero = millis(); //Tiene in memoria l'ultimo lampeggio
//Se il LED è spento lo accende e viceversa
if (Rv == LOW)
Rv = HIGH;
else
Rv = LOW;
digitalWrite(R, Rv);
}
}
quello che vorrei fare è far girare i due " void" per un certo tempo, prima uno poi l'altro.
Ho provato con un switch case, poi con millis, dando un tempo ad agni void, poi adesso sto provando con due for, nulla, non vanno.
Qualcuno mi sa dare un aiuto? grazie