warum will das nicht funktunieren ? (Variablen addiren)

Ich versuche heute schon den ganzen Tag dieses Problem zu lösen, habe schon so oft probiert und danach gesucht und das alles leider ohne Erfolg.

Also ich habe mir ein OSU!Gamepad gebaut der mit LEDs ausgestattet ist, jetzt hatte ich einen neuen Effektplan und konnte den so theoretisch umsetzten, aber leider nur in der Theorie, in der Praxis geht der nicht … sobald der RGB code kommt wird der counter nicht mehr zurückgesetzt.
Hier mein Code:

void bpm_rgb(boolean anaus) {
  if (anaus == true) {

  if (millis() - rgb >= 1000){
  rgb = millis(); // Zeit speichern
    counter = 0;
  

    if (r < 255 && b == 255) {
      r + counter ;
      g - counter ;
    }
    if (g < 255 && r == 255) {
      g + counter ;
      b - counter ;
    }
    if (b < 255 && g == 255) {
      r - counter ;
      b + counter ;
    }
    
    analogWrite(r2, r);
    analogWrite(g2, g);
    analogWrite(b2, b);
    analogWrite(r1, r);
    analogWrite(g1, g);
    analogWrite(b1, b);
  }
}
}

bin echt verzweifelt, hoffe ihr könnt mir helfen

Mal ein paar Fragen meinerseits, als Kommentar angehängt im Code an @Aleksi1999

void bpm_rgb(boolean anaus) {
  if (anaus == true) {
    if (millis() - rgb >= 1000) {
      rgb = millis(); // Zeit speichern
      counter = 0;
      if (r < 255 && b == 255) {
        r + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        g - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      if (g < 255 && r == 255) {
        g + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        b - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      }
      if (b < 255 && g == 255) {
        r - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        b + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      }
      analogWrite(r2, r);
      analogWrite(g2, g);
      analogWrite(b2, b);
      analogWrite(r1, r);
      analogWrite(g1, g);
      analogWrite(b1, b);
    }
  }
}
void bpm_rgb(boolean anaus) {
  if (anaus == true) {

  if (millis() - rgb >= 1000){
  rgb = millis(); // Zeit speichern
    counter = 0;
  }
  if (millis() - rgb >= 200){
  rgb = millis(); // Zeit speichern

    if (r < 255 && b == 255) {
      r + counter ;
      g - counter ;
    }
    if (g < 255 && r == 255) {
      g + counter ;
      b - counter ;
    }
    if (b < 255 && g == 255) {
      r - counter ;
      b + counter ;
    }
    
    analogWrite(r2, r);
    analogWrite(g2, g);
    analogWrite(b2, b);
    analogWrite(r1, r);
    analogWrite(g1, g);
    analogWrite(b1, b);
  }
}
}

ich hatte vergessen alles zu kopieren … tut mir leid

welche Variable willst du adieren
counter?
b?
g?
r?
if (millis() - rgb >= 1000){
rgb = millis(); // Zeit speichern
counter = 0;
}
wird nie ausgeführt, da bei 200 rgb neu gesetzt wird

Willst Du uns auch zum Verzweifeln bringen oder gibst Du uns vorher den gesamten Sketch?

Grüße Uwe

Okay, danke schon mal ...weil ich jetzt gerade im Bett bin kann ich nicht das ganze Programm zeigen, aber schon mal danke dafür das ich zwei Zeitvariablen brauche

Außerdem ist der Code den ich gerade zeige auch schon der gesamte Effekt, der Rest ist da echt unwichtig weil er die Funktion nur aufruft, habe ja noch mehr Effekte...die sind aber unwichtig für den Rest

Ich möchte zu r, g und b counter dazu rechnen um das RGB Farbspektrum der clickgeschwindigkeit anzupassen . Weil der counter ja alle 1000ms zurückgesetzt wird sollte das ja gehen .

Wenn ich aber den RGB Teil drinnen habe wird der counter gar nicht mehr zurückgesetzt .

Ich probiere mal morgen aus ob es hilf eine zweite Zeitvariabel zu nutzten.

Vielen Dank schon mal, und bis morgen

r + counter

Du addierst da was, aber speicherst das Ergebnis nicht ab

entweder
r = r + counter;
oder
r+=conter;

ardubu:
entweder
r = r + counter;

Okay, danke das hat schon mal geholfen, das RGB geht jetzt, aber der counter wird wie vorher auch nicht mehr zurückgesetzt.

versuch es mal so

if (millis() - rgb_1000 >= 1000){
  rgb_1000 = millis(); // Zeit speichern
    counter = 0;

Zuerst hast du ja das:

if (anaus == true) {
    if (millis() - rgb >= 1000) {
      rgb = millis(); // Zeit speichern
      counter = 0;

und darauf folgt dann:

if (r < 255 && b == 255) {
        r = r + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        g = g - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      if (g < 255 && r == 255) {
        g = g + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        b = b - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      }
      if (b < 255 && g == 255) {
        r = r - counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
        b = b + counter ;//was bezweckt das? counter = 0, also überflüssig, wird nicht gespeichert!
      }

Aber hier indem Letzten Teil machst du ja gar nichts ausser r=r, b=b oder r=r, g=g oder g=g, b=b. Der counter ist an dieser Stelle 0 und somit nutzlos!

Lg Simon

Vielen Dank euch allen.

Hat supper geklappt.