Il for che non funziona

di il
1 risposte

Il for che non funziona

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

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte