Guten Tag,
Ich versuche Zurzeit ein altes Projekt etwas umzubauen.
Hierbei möchte ich 8 Relais mit 8 Tastern ein und ausschalten können.
Bis jetzt funktioniert es über externe Schalter.
Leider habe ich so gut wie keine Erfahrung, und habe nichts passendes für mein Problem gefunden das ich auch verstanden habe.
Ich würde gerne wissen was ich falsche mache oder wie ich es umsetzten kann.
Ich möchte keinen fertigen Code haben.
Vielen dank schonmal für Eure Hilfe.
Dies ist der Code mit den externen Schaltern.
const byte relais1 = 2;
const unsigned long onZeit = 400;
const unsigned long offZeit = 5000;
const byte relais2 = 3;
const unsigned long onZeit1 = 400;
const unsigned long offZeit1 = 10000;
const byte relais3 = 4;
const unsigned long onZeit2 = 400;
const unsigned long offZeit2 = 176600;
const byte relais4 = 10;
const unsigned long onZeit3 = 400;
const unsigned long offZeit3 = 209600;
const byte relais5 = 11;
const unsigned long onZeit4 = 400;
const unsigned long offZeit4 = 160000;
const byte relais6 = 7;
const unsigned long onZeit5 = 400;
const unsigned long offZeit5 = 800;
const byte relais7 = 8;
const unsigned long onZeit6 = 400;
const unsigned long offZeit6 = 800;
const byte relais8 = 9;
const unsigned long onZeit7 = 00;
const unsigned long offZeit7 = 000;
void setup() {
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);
pinMode(relais3, OUTPUT);
pinMode(relais4, OUTPUT);
pinMode(relais5, OUTPUT);
pinMode(relais6, OUTPUT);
pinMode(relais7, OUTPUT);
pinMode(relais8, OUTPUT);
}
void loop() {
digitalWrite(relais1, (millis() % (onZeit + offZeit)) < onZeit);
digitalWrite(relais2, (millis() % (onZeit1 + offZeit1)) < onZeit1);
digitalWrite(relais3, (millis() % (onZeit2 + offZeit2)) < onZeit2);
digitalWrite(relais4, (millis() % (onZeit3 + offZeit3)) < onZeit3);
digitalWrite(relais5, (millis() % (onZeit4 + offZeit4)) < onZeit4);
digitalWrite(relais6, (millis() % (onZeit5 + offZeit5)) < onZeit5);
digitalWrite(relais7, (millis() % (onZeit6 + offZeit6)) > offZeit6);
digitalWrite(relais8, (millis() % (onZeit7 + offZeit7)) < onZeit7);
}
Bis jetzt habe ich es so probiert (was leider nicht funktioniert hat).
int Lichtschranke = 3; // oder Taster
int var; // Variable für den Pin Zustand
int buttonState; // Variable für den letzten Schalterzustand
int Runde = 0; // Wie oft ist der Schalter gedrückt
const byte relais1 = 2; //led
const unsigned long onZeit = 400;
const unsigned long offZeit = 5000;
void setup() {
pinMode(Lichtschranke, INPUT);
pinMode(relais1, OUTPUT);
buttonState = digitalRead(Lichtschranke); // Start der seriellen Kommunikation mit 9600bps
}
void loop() {
var = digitalRead(Lichtschranke);
if (var != buttonState) { // Der Zustand des Schalters hat sich verändert
if (var == HIGH) { // Ist der Schalter gedrückt?
Runde++; // Inkrementieren der Variablen Runde
if (Runde == 0) {
digitalWrite(relais1, 0);
}
if (Runde == 1) {
digitalWrite(relais1, (millis() % (onZeit + offZeit)) < onZeit);
}
if (Runde == 2) {
digitalWrite(relais1, 0);
Runde++;
}
if (Runde > 2) Runde = 0;
}
}
buttonState = var; //Den Zustand merken
}