Benötige Hilfe für Relaissteuern mit mehrenen Tastern und zum bestimmten Relais

Hi Arduino Experten,

ich beschäftige mich erst seid kurzem mit Arduino Uno.

Aus dem WWW. habe ich ein kleines Programm entnommen und auf meine Anschlüsse geschrieben. Das einfache einschalten mit TasterPin 1 zum Relais 1 funktioniert. Jetzt möchte ich aber TasterPin 2 mit Relais 2 zum schalten bringen. Auch ist im Plan TasterPin 3 mit Relais 3 zum schalten zu bringen. Da verlassen sich meine Kentnisse. Wer kann mir helfen? Hier mein kleines Programm mit den Taster und Relais erweiterungen.

int ledPin = 9; int tasterPin1 = 11; int tasterPin2 = 12; int tasterPin3 = 8; const int Relais_1= 7; const int Relais_2= 6; const int Relais_3= 6; int state; int lastState; int ledState; int Relais_1State; int Relais_2State; int Relais_3State;

void setup(){ pinMode(ledPin,OUTPUT); pinMode(tasterPin1,INPUT); pinMode(tasterPin2,INPUT); pinMode(tasterPin3,INPUT); pinMode(Relais_1, OUTPUT); pinMode(Relais_2, OUTPUT); Serial.begin(9600); }

void loop(){ state = digitalRead(tasterPin1);

if (state != lastState) { if (state == HIGH) { if ((ledState == HIGH) && (Relais_1State ==LOW)) { ledState = LOW; Relais_1State = HIGH;

Serial.println("LED AUS"); } else { ledState = HIGH; Relais_1State = LOW; Serial.println("LED EIN"); } } lastState = state; }

digitalWrite(ledPin, ledState); digitalWrite(Relais_1, Relais_1State); delay(20); }

Ich danke für Eure Hilfe im voraus.

Ist alles Murks. Nimm die ClickButton oder OneButton Library.

const int Relais_2= 6;
const int Relais_3= 6;

Ist ungünstig. :wink:

Drei Tasten (interner PULLUP, schließen nach GND),
drei Relais (active LOW), eine LED die den Zustand von Relais 1 wiederspiegelt.

#include <Bounce2.h> // https://github.com/thomasfredericks/Bounce2

const byte ledPin = 9;
const byte tasterPin1 = 11;
const byte tasterPin2 = 12;
const byte tasterPin3 = 8;
const byte Relais_1 = 7;
const byte Relais_2 = 6;
const byte Relais_3 = 5;

Bounce Tasten[3];

void initRelais(byte pin) {
  digitalWrite(pin, HIGH);
  pinMode(pin, OUTPUT);
  digitalWrite(pin, HIGH);
}

void tastenRelais(Bounce& taste, byte pin) {
  taste.update();
  if (taste.fell()) {
    digitalWrite(pin, LOW);
  } else if (taste.rose()) {
    digitalWrite(pin, HIGH);
  }
}

void setup() {
  pinMode(ledPin, OUTPUT);
  initRelais(Relais_1);
  initRelais(Relais_2);
  initRelais(Relais_3);
  Tasten[0].attach(tasterPin1, INPUT_PULLUP);
  Tasten[1].attach(tasterPin2, INPUT_PULLUP);
  Tasten[2].attach(tasterPin3, INPUT_PULLUP);
}
void loop() {
  tastenRelais(Tasten[0], Relais_1);
  tastenRelais(Tasten[1], Relais_2);
  tastenRelais(Tasten[2], Relais_3);
  digitalWrite(ledPin, !digitalRead(Relais_1));
}

Warum ungünstig, wird doch garnicht benutzt ;)