Programierung für RBG Led´s

hey,

ich bin ein Arduino anfänger und hab meine erste RGB schaltung gemacht und sie faden auch schön.

Aber ich möchte gerne, wen ich nen Taster drücke z.B. Blau langsam hoch faden und dan wen ich den Taster los lasse soll das faden stehen bleiben z.B. bei 135, dan nehme ich Rot und fade es bis z.B. 87......ich hoffe ihr versteht wo drauf ich hinaus will.

Ich hab schon probier ob ichs hin bekomme aber ich weiß nicht mehr weiter vll. kann von euch mir einer weiter helfen bzw. nen tip geben. :wink:

schönen Ostersonntag noch
lg

Du incrementierst den Wert für die Farbintensität solange der Taster gedrückt ist; baue eine Verzögerung ein, damit der Zähler nicht zu schnell hinaufzählt.
Grüße Uwe

hey,

danke erstmal Uwe

ich hab gestern bis 3 uhr rumprobiert, den schalterzustand auslesen und verarbeiten das krige ich hin, verstehe ich auch aber wen ich nach "digitalWrite(LedPinRot,.........);" komme, da hörts auf mit dem verständnis

Poste doch mal den Code, den Du schon hast. Dann schauen wir was fehlt und wie Du Dein Problem lösen kannst. Bite verwende beim Code posten die "#" Tags oben in der Editorleiste. Das macht das Lesen für alle einfacher.
Mario.

Hey mkl0815,

so weit bin ich, nach der "if bedingung" weiß ich nicht weiter......ist ne if bedingung überhaupt richtig? oder eher eine while schleife?

int LedPinR = 6;
int LedPinB = 9;
int LedPinBB = 10;
int LedPinG = 11;
int SchalterR = 2;
int SchalterB = 4;
int SchalterBB = 7;
int SchalterG = 8;
int SchalterZustandR;
int SchalterZustandB;
int SchalterZustandBB;
int SchalterZustandG;

void setup() {
  Serial.begin(9600);
  pinMode(LedPinR,OUTPUT);
  pinMode(LedPinB,OUTPUT);
  pinMode(LedPinBB,OUTPUT);
  pinMode(LedPinG,OUTPUT);
  pinMode(SchalterR,INPUT);
  pinMode(SchalterB,INPUT);
  pinMode(SchalterBB,INPUT);
  pinMode(SchalterG,INPUT);
}

void loop() {
  
  SchalterZustandR = digitalRead(SchalterR);
  Serial.println(SchalterZustandR,DEC);
 
  SchalterZustandB = digitalRead(SchalterB);
  Serial.println(SchalterZustandB,DEC);
 
  SchalterZustandBB = digitalRead(SchalterBB);
  Serial.println(SchalterZustandBB,DEC);
 
  SchalterZustandG = digitalRead(SchalterG);
  Serial.println(SchalterZustandG,DEC);
  
  
  if (SchalterZustandR == 1)
  {
    
    
  }
  if (SchalterZustandR == 0)
  {
    
    
  }

}

Nur ein Auszug einer Farbe; die anderen Funktionieren genauso.
Das beispiel dimmt von 0 bis maximalwert. Wenn Du möchtest daß nach voller Helligkeit wieder von 0 startet dan lösche "intensitaetR<=255" in der if-Bedingung.

Grüße Uwe

  int intensitaetR=0;
  int SchalterR = 2;
  int SchalterZustandR = 0;
  ...
  SchalterZustandR = digitalRead(SchalterR);
  Serial.println(SchalterZustandR,DEC);
  ... 
  if (SchalterZustandR == 1 && intensitaetR<=255)
  {
  intensitaetR +=1;
  delay(100);
  }
  ...

ja super danke funktioniert

das "intensitaet" is das nen eigener befehl oder ich sag jetzt mal selber ausgedacht?

ich schreib den code mal rein vll. kann jemand damit mal was anfangen.

int LedPinR = 6;
int LedPinB = 9;
int LedPinBB = 10;
int LedPinG = 11;
int SchalterR = 2;
int SchalterB = 4;
int SchalterBB = 7;
int SchalterG = 8;
int SchalterZustandR=0;
int SchalterZustandB=0;
int SchalterZustandBB=0;
int SchalterZustandG=0;
int intensitaetR=0;
int intensitaetB=0;
int intensitaetBB=0;
int intensitaetG=0;

void setup() {
  Serial.begin(9600);
  pinMode(LedPinR,OUTPUT);
  pinMode(LedPinB,OUTPUT);
  pinMode(LedPinBB,OUTPUT);
  pinMode(LedPinG,OUTPUT);
  pinMode(SchalterR,INPUT);
  pinMode(SchalterB,INPUT);
  pinMode(SchalterBB,INPUT);
  pinMode(SchalterG,INPUT);
}
void loop() {
  SchalterZustandR = digitalRead(SchalterR);
  Serial.println(SchalterZustandR,DEC);
 if (SchalterZustandR == 1)
  {
  intensitaetR +=5;
  analogWrite(LedPinR,intensitaetR);
  delay(100);
  }
   SchalterZustandB = digitalRead(SchalterB);
  Serial.println(SchalterZustandB,DEC);
 if (SchalterZustandB == 1)
  {
  intensitaetB +=5;
  analogWrite(LedPinB,intensitaetB);
  delay(100);
  }
   SchalterZustandBB = digitalRead(SchalterBB);
  Serial.println(SchalterZustandBB,DEC);
 if (SchalterZustandBB == 1)
  {
  intensitaetBB +=5;
  analogWrite(LedPinBB,intensitaetBB);
  delay(100);
  }
   SchalterZustandG = digitalRead(SchalterG);
  Serial.println(SchalterZustandG,DEC);
 if (SchalterZustandG == 1)
  {
  intensitaetG +=5;
  analogWrite(LedPinG,intensitaetG);
  delay(100);
  }
}

Das "intensitaet" ist eine Variable, die den aktuellen Helligkeitswert (PWM-Wert für den PWM-Ausgang) mit dem Du die entsprechende Farbe dimmst, speichert.

Da kann ich auch nichts anderes sagen.
Man!, man versteht mich!!! :wink: :wink: :wink:
Grüße Uwe