Arduino 2 LEDs mit einem Taster an und aus schalten?

3 Antworten

Wenn ich das richtig verstehe, dann möchtest du mal die blaue LED anhaben, wenn du wieder loslässt, soll diese wieder ausgehen und wenn du dann wieder drückst soll die rote LED an und wieder ausgehen.

Das kannst du hiermit realisieren:

const int ledRed = x // x = Pin-Nummer
const int ledBlue = y // y = Pin-Nummer
const int button = z // z = Pin-Nummer


void setup() {
    pinMode(ledRed, OUTPUT);
    pinMode(ledBlue, OUTPUT);
    pinMode(button, INPUT);
}


void loop() {
    int counter = 0;
    
    while(true) {
        if(button == HIGH) {
            if(counter % 2 == 0) {              //Modulo-Funktion
                digitalWrite(ledRed, HIGH);
                counter += 1;
            } else {
                digitalWrite(ledBlue, HIGH);
                counter += 1;
            }
        } else {
            digitalWrite(ledBlue, LOW);
            digitalWrite(ledRed, LOW);
        }
    }


}

}

ist schon etwas her, dass ich mit Arduino gearbeitet habe. Probier es mal aus, kann auch falsch sein.

Wenn du den Taster drückst soll die blaue dann ausgehen und die rote an? Oder die rote zusätzlich?

Im ersteren Fall würde ich etwa so arbeiten:

LED_blau = !LED_blau;
LED_rot = !LED_rot; 

im zweiteren Fall müsstest du eine Art counter für den Tastendruck einführen und auf diesen counter abfragen (if counter == 1 LED_blau=HIGH; if counter == 2 LED_rot=HIGH;

Vergiss das switch debouncing nicht

Woher ich das weiß:Berufserfahrung – Arbeit als Programmierer

Den Taster hast du aber schon richtig hinbekommen mit Prellschutz?

Eig ganz einfach.

Du gibst deinen LEDs Zustände und programmierst einen Zustandsautomaten

Ganz simpel (kannst du auch mit nem integer statt ner enumeration machen, so ists aber schöner) :

(Normalerweise macht man einen Zustandsautomaten im switch case, hab ich mir hier wegen der Größe mal gespart)

enum eZustand {
  aus,
  blau,
  rot
};
eZustand state = aus;

if state==aus then
//mach Lampe blau
state = blau;
else if state==blau then
//mach Lampe rot
state = rot;
else if state==rot then
//mach Lampe aus
state=aus;
end