Funzione incrementa e decrementa

Ciao a tutti, ecco il problema: la funzione che segue dovrebbe incrementare o decrementare le variabili PBA e PbA (che corrispondono a delle uscite pwm) fino a quando diventano uguale a i valori bianco2 e blu2; ma per adesso per aumentare aumenta… ma non riesco a farla decrescere e non caisco dove sto sbagliando :frowning:

ecco le 2 funzioni:

void Passaggio(int bianco1, int blu1, int bianco2, int blu2)
{
  PBA = blu1;
  PbA = bianco1;
  while((PbA != bianco2) || (PBA != blu2))
  {

    PBA = IncrDecr(PBA, blu2);
    PbA = IncrDecr(PbA, bianco2);
    
    delay(1000);
    analogWrite(B, (PbA*10)+5);
    analogWrite(b, (PBA*10)+5);

    Vis(PbA, PBA);
    
  }
lcd.clear();
}


int IncrDecr(int x, int x1)
{
  if(x > x1)
  {
    x--;
  }
  if(x < x1);
  {
    x++;
  }
  return x;
}

grazie a tutti in anticipo.

In quel pezzo di codice non trovo errore. forse l' errore é fuori da quel codice?
Ciao Uwe

Allora ti posto tutto il codice:

void AlbaTramonto()
{
  lcd.clear();
  while(digitalRead(ok) == HIGH)
  {
    if(rtc.getTime().hour == o1)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 1");
      delay(500);
      Passaggio(0, 0, Pb1, PB1);
      while(rtc.getTime().hour == o1)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if(rtc.getTime().hour == o2)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 2");
      delay(500);
      Passaggio(PbA, PBA, Pb2, PB2);
      while(rtc.getTime().hour == o2)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if(rtc.getTime().hour == o3)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 3");
      delay(500);
      Passaggio(PbA, PBA, Pb3, PB3);
      while(rtc.getTime().hour == o3)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if(rtc.getTime().hour == o4)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 4");
      delay(500);
      Passaggio(PbA, PBA, Pb4, PB4);
      while(rtc.getTime().hour == o4)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if(rtc.getTime().hour == o5)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 5");
      delay(500);
      Passaggio(PbA, PBA, Pb5, PB5);
      while(rtc.getTime().hour == o5)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if(rtc.getTime().hour == o6)
    {
      lcd.setCursor(0, 0);
      lcd.print("FASE 6");
      delay(500);
      Passaggio(PbA, PBA, 0, 0);
      while(rtc.getTime().hour == o6)
      {
        Vis(PbA, PBA);
        delay(5000);
      }
    }
    if((rtc.getTime().hour > o6) || (rtc.getTime().hour < o1))
    {
      lcd.clear();
      lcd.print("NOTTE");
      delay(5000);
    }
  }
}

fa la stessa cosa 6 volte in sostanza ma non penso che l’errore sial li. sto veramente diventando stupido.

Se quello é tutto il codice allora qualcuno Ti ha rubato la funzione setup() e loop() dal Tuo sketch. :o :o :o :confused: :confused:

Ciao Uwe

if(x < x1);

in realtà non è tutto il codice è l funzione dentro il void loop. nella fase di setup prendo tutte le variabili che mi servono. riuscite a capire perchè non va?

Guarda bene quel che ha scritto @Brunello ;).

NON CI POSSO CREDERE GRAZIEEEEEEEE

cgyui:
NON CI POSSO CREDERE GRAZIEEEEEEEE

Un punto e virgola fa la differenza; :grin: