Go Down

Topic: Programierung für RBG Led´s (Read 1 time) previous topic - next topic

Yannic

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. ;-)

schönen Ostersonntag noch
lg

uwefed

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

Yannic

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


mkl0815

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.

Yannic

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?

Code: [Select]
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)
  {
   
   
  }

}

uwefed

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

Code: [Select]

  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);
 }
 ...

Yannic

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.
Code: [Select]
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);
  }
}

mkl0815

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

uwefed

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

Go Up