INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
RGB Controller Hilfe bei der Programmierung
15.08.2020, 17:25
Beitrag #1
RGB Controller Hilfe bei der Programmierung
Hallo,
ich bin absoluter Anfänger. Habe mich ein bisschen durchgearbeitet und würde mir jetzt gerne einen RGB LED Controller basteln. Ich habe vier Taster. Taster 1-3 sollen jeweils ein RGB Ablauf starten, Taster 4 soll ein Stop Taster werden, der die Abläufe stoppt und die LEDs ausschaltet. Ablauf 1 (Taster 1) soll ein einfacher Chase werden, indem verschiedene Farben nacheinander aufleuchtet. Ablauf 2 (Taster 2) soll ein Fade werden, indem verschiedene Farben auf und wieder abfaden. Ablauf 3 habe ich mir noch nicht überlegt, bis jetzt hat Taster 3 die gleiche Funktion wie Taster 4.

Probleme, auf die ich gerade stoße sind:
-dass ich im Ablauf 1 erst bei erneutem drücken von Taster 1 die nächste Farbe angezeigt bekomme.
-dass ich erst am Ende eines Ablaufs umschalten kann auf einen anderen Ablauf oder austellen kann.

Bitte um verständliche Unterstützung. Vielen Dank!

Code:

int Leds[]= {9,10,11};
int Buttons1 = 1;
int Buttons2 = 2;
int Buttons3 = 3;
int Buttons4 = 4;
double fade;
long myTimer = 0;
long myTimeout = 7;
long myTimeout_flash= myTimeout * 200;
int x=1;
int menu = 0;


void setup()
{

for (int i=0;i<3;i++)
{
pinMode(Leds[i],OUTPUT);
}

pinMode(Buttons1,INPUT_PULLUP);
pinMode(Buttons2,INPUT_PULLUP);
pinMode(Buttons3,INPUT_PULLUP);
pinMode(Buttons4,INPUT_PULLUP);

}



void loop()
{
if (digitalRead(Buttons1)==LOW) //Abfrage von Button 1
{
menu = 1;
updateMenu();
delay(100);
while(!digitalRead(Buttons1));
}

if (digitalRead(Buttons2)==LOW) //Abfrage von Button 2
{
menu = 2;
updateMenu();
delay(100);
while(!digitalRead(Buttons2));
}

if (digitalRead(Buttons3)==LOW) //Abfrage von Button 3
{
menu = 3;
updateMenu();
delay(100);
while(!digitalRead(Buttons3));
}

if (digitalRead(Buttons4)==LOW) //Abfrage von Button 4
{
menu = 4;
updateMenu();
delay(100);
while(!digitalRead(Buttons4));
}
}

void updateMenu()
{
switch(menu){
case 0:
menu = 4;
updateMenu();
break;
case 1:
FarbenSpringen();
break;
case 2:
FadeLED();
break;
case 3:
menu = 4;
updateMenu();
break;
case 4:
analogWrite(Leds[0],0);
analogWrite(Leds[1],0);
analogWrite(Leds[2],0);
break;
case 5:
menu = 4;
updateMenu();
break;
}
}


void FarbenSpringen()
{
if (millis()> myTimer + myTimeout_flash && x==1 )
myTimer=millis();
analogWrite(Leds[0],255);
analogWrite(Leds[1],0);
analogWrite(Leds[2],0);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==2)
{
myTimer=millis();
analogWrite(Leds[0],0);
analogWrite(Leds[1],255);
analogWrite(Leds[2],0);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==3)
{
myTimer=millis();
analogWrite(Leds[0],0);
analogWrite(Leds[1],0);
analogWrite(Leds[2],255);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==4)
{
myTimer=millis();
analogWrite(Leds[0],255);
analogWrite(Leds[1],255);
analogWrite(Leds[2],0);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==5)
{
myTimer=millis();
analogWrite(Leds[0],0);
analogWrite(Leds[1],245);
analogWrite(Leds[2],255);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==6)
{
myTimer=millis();
analogWrite(Leds[0],255);
analogWrite(Leds[1],127);
analogWrite(Leds[2],36);
x++;
}

if (millis()> myTimer + myTimeout_flash && x==7)
{
myTimer=millis();
analogWrite(Leds[0],255);
analogWrite(Leds[1],0);
analogWrite(Leds[2],255);
x++;
}

if (millis()> myTimer + myTimeout_flash &&x==8)
{
myTimer=millis();
analogWrite(Leds[0],255);
analogWrite(Leds[1],255);
analogWrite(Leds[2],255);
x=1;
}
}


void FadeLED()
{

fade = 0;
for(int i=0;i<3;i++)
{
while ( ! (fade == 255) )
{
if(millis()> myTimer + myTimeout)
{
myTimer = millis();
analogWrite(Leds[i], fade);
fade = fade + 1;
}
}

if ( fade == 255 )
{
while ( ! (fade == 0) )
{
if(millis()> myTimer + myTimeout)
{
myTimer = millis();
analogWrite(Leds[i], fade);
fade = fade - 1;
}
}
}
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.08.2020, 17:32
Beitrag #2
RE: RGB Controller Hilfe bei der Programmierung
Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

Zusätzlich formatiere bitte den Code ordentlich (<Strg>+T in der IDE hilft Dir dabei).
So ist er schwer zu lesen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Benötige dringende Hilfe bei CHAR DO3GE 4 182 07.10.2020 10:41
Letzter Beitrag: Tommy56
  [gelöst; Reihenfolgeproblem bei der Programmierung]Position falsch von Text ManniP 3 249 27.09.2020 14:29
Letzter Beitrag: ManniP
  Brauch Hilfe bei Laser Nevelierung mit Traktor Schild SiR WonG 4 711 26.07.2020 10:00
Letzter Beitrag: SiR WonG
  Programmierung Attiny 84 MaxSi 14 1.028 23.06.2020 19:39
Letzter Beitrag: Tommy56
  8x8x8 LED Würfel Programmierung AK79 11 1.187 17.06.2020 22:52
Letzter Beitrag: AK79
  Hilfe Millis treibt mich in den Wahnsinn Nefrett 17 1.705 04.05.2020 20:53
Letzter Beitrag: Tommy56
  Mit Arduino Uno Sirene Programmierung mh128828 20 1.911 27.03.2020 22:30
Letzter Beitrag: mh128828
  Brauche Hilfe, Was Stimmt an meinem Sketch nicht Andi-1090 12 1.326 20.03.2020 10:04
Letzter Beitrag: hotsystems
  Bitte um Hilfe für ein Arduino Nano Andi-1090 14 1.463 08.03.2020 14:55
Letzter Beitrag: Andi-1090
  brauche Hilfe, zeitlicher Ablauf tolotos789 9 1.368 05.03.2020 13:34
Letzter Beitrag: MicroBahner

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste