testos
February 13, 2025, 8:30am
1
Hallo Zusammen,
ich habe folgendes Problem:
Ich möchte mit einem Tastendruck eine Ausgangsfolge schalten.
--> wenn Starttaster=1--> Ausgang1=1 für 0,5s
--> wenn Ausgang1=0--> Ausgang2=1 für 0,5s --> 0,5s DELAY -->
Ausgang2=1 für 0,5s --> 0,5s DELAY --> Ausgang2=1 für 0,5s
-->wenn Ausgang2=0 --> Ausgang3=1für 0,5s
-->wenn Ausgang3=0 --> Ausgang4=1 für 0,5s
-->wenn Ausgang4=0 --> Ausgang3=1 für 0,5s --> Ausgang3=0
Vielleicht kann mir jemand helfen, falls ich hier falsch bin bitte löschen!
Vielen Dank schon mal im Voraus!
Bitte verwenden Sie in den englischen Bereichen des Forums die englische Sprache. Ihr Thema wurde in den deutschen Bereich des Forums verschoben.
wwerner
February 13, 2025, 8:57am
4
Für die Aufgabenstellung bräuchtest du @wwerner s Links noch nicht mal.
Aber woran es hängt, solltest du schon beschreiben.
Würdest du es denn hinkriegen, wenn die Aufgabe hieße:
Nach dem Einschalten sollen 5 Ausgänge nacheinander für je 0,5 sec HIGH und danach wieder für immer (bis zum nächsten RESET) LOW werden?
wwerner
February 13, 2025, 9:18am
6
Ansonsten: 1. Treffer bei Google: Ausgange nacheinander schalten
wno158
February 13, 2025, 10:36am
7
Das ist der "Schönes Wetter'-Fall.
Was soll nach diesem Ablauf passieren? (siehe #5 )
Was soll passieren, wenn nach der Folge der Start taster noch aktiv ist?
Hallo testos
Herzlich Willkommen im besten Arduino Forum der Welt
Was ist die Aufgabe des Programms im wirklichen Leben?
testos
February 14, 2025, 8:55am
9
Hi, so sieht es bisher aus, leider ohne Erfolg.
Ich scheitere am deuten der Fehlermeldungen:
int Starttaster =2;
int C =3;
int 6 =4;
int E =5;
int 0 =6;
int Pause =500;
void setup() {
pinMode(Starttaster, INPUT);
pinMode(C, OUTPUT);
pinMode(6, OUTPUT);
pinMode(E OUTPUT);
pinMode(0, OUTPUT);
}
void loop() {
if (digitalREAD(Starttaster) == HIGH);
{
digitalWrite(C, HIGH);
delay(Pause);
digitalWrite(C, LOW);
digitalWrite(6, HIGH);
delay(Pause);
digitalWrite(6, LOW);
digitalWrite(6 HIGH);
delay(Pause);
digitalWrite(6, LOW)
digitalWrite(6, HIGH);
delay(Pause);
digitalWrite(6, LOW)
digitalWrite(E, HIGH);
delay(500);
digitalWrite(E, LOW);
digitalWrite(0, HIGH);
delay(500);
digitalWrite(0, LOW);
digitalWrite(E, HIGH);
delay(500);
digitalWrite(E, LOW);
}
}
testos
February 14, 2025, 8:57am
10
Hi, danke für die schnelle Antwort!
-Nach dem Ablauf soll gewartet werden bis der Taster das nächste Mal betätigt wird.
-Der Taster gibt ja nur ein HIGH bei Betätigung aus, danach wird er ja automatisch wieder LOW.
testos
February 14, 2025, 8:58am
11
Hi, leider werde ich das wohl nicht schaffen.
Ich tue mich noch unsagbar schwer mit der Syntax.
Probier den Blink Sketch aus. Dann mach in kleinen Schritten weiter.
wwerner
February 14, 2025, 9:10am
13
testos:
HIGH);
mach mal das Semikolon weg
der compiliert nicht.
Du darfst keine numerische Variable benutzen.
Mach aus der 6 ein D und aus der 0 ein F.
Dann passe Deinen Sketch dementsprechend an.
Zum Beispiel hier:
testos:
pinMode(6, OUTPUT);
In dem Fall würde der compilier den PIN 6 nehmen und nicht PIN D, der ja eigentlich 4 ist.
wwerner
February 14, 2025, 9:16am
15
int Starttaster = 2;
int xC = 3;
int x6 = 4;
int xE = 5;
int x0 = 6;
int Pause = 500;
void setup() {
pinMode(Starttaster, INPUT);
pinMode(xC, OUTPUT);
pinMode(x6, OUTPUT);
pinMode(xE, OUTPUT);
pinMode(x0, OUTPUT);
}
void loop() {
if (digitalRead(Starttaster) == HIGH) {
digitalWrite(xC, HIGH);
delay(Pause);
digitalWrite(xC, LOW);
digitalWrite(x6, HIGH);
delay(Pause);
digitalWrite(x6, LOW);
digitalWrite(x6, HIGH);
delay(Pause);
digitalWrite(x6, LOW);
digitalWrite(x6, HIGH);
delay(Pause);
digitalWrite(x6, LOW);
digitalWrite(xE, HIGH);
delay(Pause);
digitalWrite(xE, LOW);
digitalWrite(x0, HIGH);
delay(Pause);
digitalWrite(x0, LOW);
digitalWrite(xE, HIGH);
delay(Pause);
digitalWrite(xE, LOW);
}
}
Ich habe mal 20 Fehler raus gemacht
1 Like
Nimmt er nicht den Finger von der Taste, wird das sofort neu starten.
Und ob das mit den delays so sinnvoll ist...
1 Like
testos
February 14, 2025, 10:12am
17
Vielen Dank! Ich glaube das habe ich jetzt verstanden!
testos
February 14, 2025, 10:15am
19
Hi, danke für den Hinweis! Wie könnte ich dieses Problem umgehen?
Nach dem Durchlauf prüfen, ob die Taste nicht gedrückt ist.
Sag mal, was das hier wird:
testos:
digitalWrite(6, HIGH);
delay(Pause);
digitalWrite(6, LOW);
digitalWrite(6 HIGH);
delay(Pause);
digitalWrite(6, LOW)
digitalWrite(6, HIGH);
delay(Pause);
digitalWrite(6, LOW)
Das wäre eigentlich einmal die HIGH-Time mit Pause*3 zu setzen...
Oder ist das ein Kopierfehler?