Hallo,
ich erkläre kurz mein Vorhaben:
Es gibt 3 Kippschalter die in einer bestimmten Reihenfolge zu einer bestimmten Zeit umgelegt werden müssen damit es einen positiven Output gibt, sonst negativ.
BSP: man legt den ersten Schalter um und muss dann ca 2 Sek. warten dann legt man den 2 um dann wartet man ca 5 Sek. und dann den dritten.
einen positiven Output gibt es nur wenn das genau so gemacht wurde (Toleranzbereich 0,5 Sek.)
wenn zwischendurch ein schalter wieder umgelegt wurde oder einer zu früh umgelegt wurde dann ist es falsch und z.B. ein kleiner ton ertönt oder eine LED.
Mein Problem ist nicht dann anschließen oder so, das habe ich alles hinbekommen. Die schalter sind entweder OFF oder ON und auch das abfragen von denen (mit internem pullup wiederstand) funktioniert einwandfrei.
Leider bekomm ich nicht hin das mit der reihenfolge und dem rythmus zu machen....
Ich habe es mit if schleifen versucht die dann millis starten etc aber das hat alles nicht funktioniert oder gebuggt wie sau.
Ich habs dann auch mit while schleifen probiert aber da komm ich auch nicht auf den richtigen Weg...
Mein Code gerade ist ein absolutes Chaos das weis ich selber. Ich habe einfach so viel da verändert und ausprobiert das ich das aufjedenfall nochmal von Grund auch schreiben werde.
Am Anfang hab ich noch so eine kleine debug Sequenz um zu verifizieren das noch alles richtig angeschlossen ist. Die LEDS bei jeder LED würden später wegkommen, sollen grade aber noch helfen zu veranschaulichen was passiert und welche Schalter On bzw. OFF sind. (also nur temporäre Hilfen)
Der Code:
int schalter1 = 8;
int LEDrot = 9;
int schalter2 = 5;
int LEDblau = 6;
int schalter3 = 2;
int LEDgruen = 3;
int knopf1 = 11;
int LEDweis = 12;
boolean pcON = false;
void setup() {
pinMode(schalter1, INPUT_PULLUP);
pinMode(LEDrot, OUTPUT);
pinMode(schalter2, INPUT_PULLUP);
pinMode(LEDblau, OUTPUT);
pinMode(schalter3, INPUT_PULLUP);
pinMode(LEDgruen, OUTPUT);
pinMode (knopf1, INPUT_PULLUP);
pinMode(LEDweis, OUTPUT);
digitalWrite(LEDrot, HIGH);
delay(500);
digitalWrite(LEDrot, LOW);
digitalWrite(LEDblau, HIGH);
delay(500);
digitalWrite(LEDblau, LOW);
digitalWrite(LEDgruen, HIGH);
delay(500);
digitalWrite(LEDgruen, LOW);
digitalWrite(LEDweis, HIGH);
delay(500);
digitalWrite(LEDweis, LOW);
Serial.begin(9600);
}
void loop() {
while (pcON == false) {
if (digitalRead(schalter1) == HIGH) {
digitalWrite(LEDrot, HIGH);
}
if (digitalRead(schalter1) == LOW) {
digitalWrite(LEDrot, LOW);
}
if (digitalRead(schalter2) == HIGH) {
digitalWrite(LEDblau, HIGH);
}
if (digitalRead(schalter2) == LOW) {
digitalWrite(LEDblau, LOW);
}
if (digitalRead(schalter3) == HIGH) {
digitalWrite(LEDgruen, HIGH);
}
if (digitalRead(schalter3) == LOW) {
digitalWrite(LEDgruen, LOW);
}
while (digitalRead(schalter1) == HIGH && digitalRead(schalter2) == HIGH && digitalRead(schalter3) == HIGH && digitalRead(knopf1) == LOW) {
digitalWrite (LEDrot, LOW);
digitalWrite (LEDblau, LOW);
digitalWrite (LEDgruen, LOW);
digitalWrite(LEDweis, HIGH);
}
if (knopf1 != LOW) {
digitalWrite (LEDweis, LOW);
pcON = true;
}
}
while (pcON == true) {
Serial.println(digitalRead(knopf1));
if (digitalRead(schalter1) == HIGH && digitalRead(schalter2) == HIGH && digitalRead(schalter3) == HIGH) {
pcON = false;
tone(13, 1000, 500);
delay(150);
noTone(13);
}
}
}
/*
if (digitalRead(schalter2) == HIGH || digitalRead(schalter2) == HIGH) {
tone(13, 1319, 850);
delay (100);
noTone(13);
digitalWrite(LEDrot, LOW);
}
if (millis >= 2000 && millis <= 3000) {
digitalWrite(LEDblau, HIGH);
}
if (digitalRead(schalter2) == HIGH || digitalRead(schalter3) == HIGH) {
tone(13, 1319, 850);
delay (100);
noTone(13);
digitalWrite(LEDrot, LOW);
}
*/
Das sind die Bilder von meiner aktuellen Verkabelung:
Nochmal: Ziel des Projekts soll sein das ich die Schalter in einer bestimmten Reihenfolge zum richtigen Zeitpunkt/Rhythmus umlege um einen "positiven" Output zu bekommen, der dann z.B. ein Relais schaltet..
Achja, der eine Taster der noch angeschlossen ist ist für was anderes
Vielen dank im Voraus schonmal!!