Schaltung für Knopfdruck Aktionen.

#1 von Heinz1503 , 14.10.2021 10:47

Hallo Zusammen,

ich zerbreche mir seit Tagen den Kopf darüber wie ich es Hinbekomme einen Adruino Sketch zu erweitern damit dieser an mehreren ausgängen über verschidene Taster Aktionen ausführt und bin dabei auf einen Sketch gestoßen hier im Forum, der es mir ermöglicht es über einen Taster zu steuern damit wird aber nur ein Ausgang angesprochen, nun weiß ich nicht wie ich diesen Sketch umschreiben muss um Ihn für mehrere Taster zu erweitern.

Hier der von mir gefundene Sketch könnte mir dabei vieleicht jemand weiter Helfen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

 
// Taster drücken LED leuchtet kurz und geht nach einer eingestellten Zeit wieder aus!
int pinREED = 14;
int pinLED1 = 3;

 
void setup() {
pinMode(pinREED, INPUT_PULLUP); // welcher PIN ist für was zuständig
pinMode(pinLED1, OUTPUT);

}

void loop() {
int zustand = digitalRead(pinREED); // Nun LDR tu was...
if (zustand == HIGH){ //zustand ist aus!!
digitalWrite(pinLED1, LOW);}
else { //zustand ein!!
digitalWrite(pinLED1, HIGH); // nun geht das Blitzlichtgewitter los
delay(60000);// an dieser Stelle kann man die Zeiten einstellen!
digitalWrite(pinLED1,LOW);// anstelle einer LED kann man auch ein Realis ansteuern!
delay(50);// das ist die Pufferzeit bis der Arduino wieder bei Tastendruck losläuft!

}
}

 


 
Heinz1503
Beiträge: 4
Registriert am: 11.10.2021
Ort: Wuppertal
Gleise Fleischmann und Trix
Spurweite N
Stromart Digital, Analog


RE: Schaltung für Knopfdruck Aktionen.

#2 von Langsamfahrer , 14.10.2021 11:06

Hallo Heinz!

Zitat von Heinz1503 im Beitrag #1
Hallo Zusammen,
ich zerbreche mir seit Tagen den Kopf darüber wie ich es Hinbekomme einen Adruino Sketch zu erweitern damit dieser an mehreren ausgängen über verschidene Taster Aktionen ausführt und bin dabei auf einen Sketch gestoßen hier im Forum, der es mir ermöglicht es über einen Taster zu steuern damit wird aber nur ein Ausgang angesprochen, nun weiß ich nicht wie ich diesen Sketch umschreiben muss um Ihn für mehrere Taster zu erweitern.



Da gab es vor kurzem einen schönen Beitrag, in dem ein Sketch für die "gleichzeitige" Abfrage verschiedenen Bedingungen entwickelt wurde:
Arduino Zeitsteuerungen ...
Ich hoffe, dass dieser Sketch Dich auf die richtige Spur bringt.

Viel Erfolg!
Jörg


H0, Märklin C+K, DCC, kleine Fahrzeuge, Dampf+Diesel, III-IV, eingleisig


Heinz1503 hat sich bedankt!
Langsamfahrer  
Langsamfahrer
InterCity (IC)
Beiträge: 612
Registriert am: 13.05.2020
Ort: Berlin
Gleise Märklin C+K
Spurweite H0
Stromart Digital


RE: Schaltung für Knopfdruck Aktionen.

#3 von Heinz1503 , 15.10.2021 08:13

Hallo Jörg,

Danke für deine Antwort,
aber hat mir nicht wirklich weiter geholfen, den Sketch den ich gepostet habe der Funktioniert ja ich habe nur Probleme dabei diesen zu erweitern,

das nicht nur ein ein und ausgang angesprochen wird sondern gleich mehrere,

Z.B
Taster 1 an Pin 8
Taster 2 an Pin 9
Taster 3 an Pin 10
Taster 4 an Pin 11

Relay 1 an Pin 2
Relay 2 an Pin 3
Relay 3 an Pin 4
Relay 4 an Pin 5

Taster 1 steuert Relay 1 an
Taster 2 Steuert Relay 2 an
Taster 3 Steuert Relay 3 an
Taster 4 Steuert Relay 4 an

jedes Relay soll aber eine andere Zeit einstellung bekommen, da jedes Relay andere Aktionen ausführen soll.

Das Taster 1 Relay 1 Steuert mit Angegebener Zeit habe ich Hinbekommen,

aber sobald ich den Sketch erweitern möchte, kommen nur noch Fehler meldungen.


 
Heinz1503
Beiträge: 4
Registriert am: 11.10.2021
Ort: Wuppertal
Gleise Fleischmann und Trix
Spurweite N
Stromart Digital, Analog


RE: Schaltung für Knopfdruck Aktionen.

#4 von volkerS , 15.10.2021 08:55

Hallo Heinz,
dein Problem ist das delay. In der Loop wird erst die Led eingeschaltet und dann eine Verzögerung gestartet (delay). Da aber das Programm in der delay-Schleife hängt kann keine weitere Aktion ausgeführt werden. Wenn immer nur eine Aktion zeitgleich ausgeführt wird kannst du mit delay arbeiten. Dann musst du aber eine Schleife programmieren, die reihum alle Taster abfragt und, wenn einer betätigt ist, in das zum Taster gehörende Unterprogramm springt. Dort verbleibt das Programm dann bis es nach Ende von delay die Aktion abschaltet und wieder zurück in die Tasterabfrageschleife springt.
Volker


Heinz1503 hat sich bedankt!
volkerS  
volkerS
ICE-Sprinter
Beiträge: 5.981
Registriert am: 14.10.2014


RE: Schaltung für Knopfdruck Aktionen.

#5 von Heinz1503 , 15.10.2021 09:00

Hallo Volker,

Danke für deine Antwort,

und wie kann ich das Umschreiben damit es dann so Funktioniert wie ich es haben möchte??


 
Heinz1503
Beiträge: 4
Registriert am: 11.10.2021
Ort: Wuppertal
Gleise Fleischmann und Trix
Spurweite N
Stromart Digital, Analog


RE: Schaltung für Knopfdruck Aktionen.

#6 von Bodo , 15.10.2021 12:59

Hallo Heinz,

Zitat von Heinz1503 im Beitrag #5
und wie kann ich das Umschreiben damit es dann so Funktioniert wie ich es haben möchte??


Jörg hat ja oben auf den Beitrag von Franz-Peter verlinkt ... "einfach umschreiben" ist nicht, man muss da gedanklich anders rangehen (als - vereinfacht gesagt - nur per "delay" die Pause-Taste zu drücken).

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.473
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Schaltung für Knopfdruck Aktionen.

#7 von volkerS , 15.10.2021 14:52

Hallo Heinz,
wenn immer nur zeitgleich eine Aktion stattfinden soll (darf) dann musst du das Programm so aufbauen:
Eingänge definieren
Ausgänge definieren
Schleife (Hauptprogramm) schreiben. Das sind bei 4 Tastern 4 If / Else Tastenabfragen die im Kreis laufen. Bei If erfüllt rufst du das zu dieser Taste gehörende Unterprogramm auf, bei Else geht es zur nächsten If / Else Tastenabfrage. Beachten musst du wie deine Tasten abgefragt werden. Wenn du an den Eingängen die Pull-Ups aktiv hast ist eine betätigte Taste Low, offene Taste High. Auf eine Tastenentprellung, also Prüfung ob die Taste nach x millisec noch gedrückt ist, wirst du verzichten können.
Ist also mit aktiven Pull-Ups eine Tastenabfrage low dann ist If erfüllt und du springst zum betreffenden Unterprogramm. Ist dieses abgearbeitet springst du zurück hinter das If das den Sprung ausgelöst hat oder nach Loop-Start.
Und dann wird wieder die Hauptprogrammschleife durchlaufen.
Volker


volkerS  
volkerS
ICE-Sprinter
Beiträge: 5.981
Registriert am: 14.10.2014

zuletzt bearbeitet 15.10.2021 | Top

RE: Schaltung für Knopfdruck Aktionen.

#8 von Domapi , 15.10.2021 15:18

Du musst delay()-unabhängig werden. Dazu musst du die millis() Funktion verwenden.
Einfach mal nach "delay mit millis()" googeln (oder blink without delay). delay() blockiert deinen Arduino. In dieser Zeit macht er nicht anderes, als dumm zu warten.
Er bekommt dann keine Tastendrücke mehr mit oder verpasst es, ein Relais wieder auszuschalten.

Die Taster packst du am besten in ein Array, ebenso wie die ggf. unterschiedlichen Einschaltzeiten der Relais.
Da Taster gerne prellen, wäre es gut, wenn du sie geeignet entprellst. Die Entprellzeiten packt man auch in ein Array.

In der loop() wird dann der Tastenstatus abgefragt, ggf. ein Relais eingeschaltet und aber auch wieder abgeschaltet.
Die loop() wird sehr schnell durchlaufen, ohne auf irgendetwas zu warten. Drum bekommt der Arduino alles mit und behält die Übersicht
Quasi Multitasking.

Die millis() kannst Du dir wie einen langen Zeitstrahl vorstellen, der etliche Zeitstempel beinhaltet. Wird im Zeitablauf ein solcher Zeitpunkt erreicht, schaltet der Arduino z.B. ein Relais wieder aus, oder erkennt, dass die Entprellzeit abgelaufen ist und verarbeitet den Tastendruck.

Hier 👍 Rund übers Eck - Photogeshoppte Bilder ‼️ (8) hatte ich mal einen Sketch für einen Servodekoder reingestellt.
Ab ca. Zeile 300 sind die Routinen, um die Tastklicks zu prüfen. So in der Art kann man das machen.


Viele Grüße
Martin

- Mein Trennungsbahnhof: viewtopic.php?f=64&t=152275
- Drehscheibensteuerung auf Arduinobasis "LocoTurn": https://wiki.mobaledlib.de/anleitungen/b...v10/150_inhalte


 
Domapi
CityNightLine (CNL)
Beiträge: 1.633
Registriert am: 22.09.2015
Ort: Nämberch
Gleise Ohne Pickel
Spurweite H0
Steuerung Mit Hirn und Verstand
Stromart DC, Digital

zuletzt bearbeitet 15.10.2021 | Top

   

Lok liste aus CS2 VB.Net oder C#
Gleisplan app

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz