Probleme mit while Schleife - RGB Lampe

Hallo,

Ich habe gerade angefangen mit Arduino ein paar leichte Sachen zu programmieren.
Allerdings habe ich bei der Programmierung der RGB-Lampe ein kleines Problem und komme nicht weiter. Ich hab den Sketch mit Hilfe eines Tutorials gemacht und obwohl dieser exakt dem des Tutorials gleicht, wird mir die Fehlermeldung

expected ")" before ";" token

an folgender Stelle angezeigt:

analogWrite(r_pin,r_val);

Hier einmal der Sketch. Der Plan war, dass die Lampe ihre Farbe wechselt mit Übergang von rot zu grün zu blau zu rot.

int r_pin = 9;
int g_pin = 10;
int b_pin = 11;

int r_val = 255;
int g_val = 0;
int b_val = 0;

void setup()
{
pinMode(r_pin,OUTPUT);
pinMode(g_pin,OUTPUT);
pinMode(b_pin,OUTPUT);
}

void loop()
{
while (r_val != 0)
(
analogWrite(r_pin,r_val);
analogWrite(g_pin,g_val);

r_val--;
g_val++;

delay(20);
)

while (g_val != 0)
(
analogWrite(g_pin,g_val);
analogWrite(b_pin,b_val);

g_val--;
b_val++;

delay(20);
)

while (b_val != 0)
(
analogWrite(b_pin,b_val);
analogWrite(r_pin,r_val);

b_val--;
r_val++;

delay(20);
)
}

Du verwendest an der fehlerhaften Stelle falsch Klammern: ist "()", soll "{}"

Hat geklappt.
Super Danke!

Steffi1810:
Hat geklappt.
Super Danke!

Ok, gerne...

Ich mag keine while Schleifen, delay, etc.

Schau mal, es geht auch ohne:

const byte r_pin = 9;
const byte g_pin = 10;
const byte b_pin = 11;

enum {
  fadeRotGruen,
  fadeGruenBlau,
  fadeBlauRot,
};

int r_val = 255;
int g_val = 0;
int b_val = 0;

void setup() {
  pinMode(r_pin, OUTPUT);
  pinMode(g_pin, OUTPUT);
  pinMode(b_pin, OUTPUT);
}

void loop() {
  static unsigned long lastStep;
  static byte fade = fadeRotGruen;
  unsigned long topLoop = millis();
  if (topLoop - lastStep > 20) {
    lastStep = topLoop;
    switch (fade) {
      case fadeRotGruen:
        if (--r_val == 0) {
          fade = fadeGruenBlau;
        }
        g_val++;
        break;
      case fadeGruenBlau:
        if (--g_val == 0) {
          fade = fadeBlauRot;
        }
        b_val++;
        break;
      case fadeBlauRot:
        if (--b_val == 0) {
          fade = fadeRotGruen;
        }
        r_val++;
        break;
    }
    analogWrite(r_pin, r_val);
    analogWrite(g_pin, g_val);
    analogWrite(b_pin, b_val);
  }
}

Ich mag keine while Schleifen, delay, etc.

Ich bin ein while Fan!
Und am häufigsten setze ich wohl die while(1), die endlose, ein.

Auch gerne ein Dutzend davon, in einem Programm.

combie:
Ich bin ein while Fan!
Und am häufigsten setze ich wohl die while(1), die endlose, ein.

Auch gerne ein Dutzend davon, in einem Programm.

Das hatte ich mir irgendwie schon gedacht.

:sunglasses: