INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Schalter als Taster perfekte Lösung?
27.07.2015, 22:20 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2015 23:13 von julius858.)
Beitrag #1
Schalter als Taster perfekte Lösung?
Hallo zusammen,

ich habe einen Schalter, dieser ist entweder immer HIGH oder LOW.

Ich möchte jetzt gerne, dass der Schalter einen If-Schleife ausführt, wenn dieser von HIGH auf LOW oder von LOW auf HIGH wechselt.

Die If-Schleife soll also ausgeführt werden, wenn sich der Zustand des Schalters ändert, egal ob von HIGH auf LOW oder von LOW auf HIGH.

Im Internet habe ich nur dies hier gefunden:

Code:
oldbutton = 0;
buttonState = 0;

void setup()
{
...
}
void loop()
{
  buttonState = digitalRead(button);

if (buttonState != oldbutton)
{
mach etwas
}

oldbutton = buttonState;
}

Nur sobald der Code etwas komplizierter wird, klappt das nicht mehr so gut.
Gibt es da vielleicht noch bessere Lösungen?

Ich hoffe, mir kann jemand helfen..

Wünsch euch allen eine schöne Woche!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.07.2015, 23:09
Beitrag #2
RE: Schalter als Taster perfekte Lösung?
(27.07.2015 22:20)julius858 schrieb:  
Code:
void loop()
{
  buttonState = digitalRead(button);

if (button != oldbutton)
{
mach etwas
}

oldbutton = button;
}

Ich vermute mal der Fehler liegt an diesen beiden Zeilen:

if (button != oldbutton)
und
oldbutton = button;

da müsste es heißen:

if (buttonState != oldbutton)
und
oldbutton = buttonState;

anders wird der Wert der Variablen nicht genutzt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.07.2015, 23:15 (Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2015 23:16 von julius858.)
Beitrag #3
RE: Schalter als Taster perfekte Lösung?
Upps, stimmt. Ich korrigiere das mal gerade schnell. Danke!

Ich habe mich da nur vertan.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2015, 07:47
Beitrag #4
RE: Schalter als Taster perfekte Lösung?
(27.07.2015 22:20)julius858 schrieb:  Nur sobald der Code etwas komplizierter wird, klappt das nicht mehr so gut.
Gibt es da vielleicht noch bessere Lösungen?
So sollte es dann funktionieren.
Dann liegt es vermutlich an dem Code der in "mach etwas" ausgeführt wird. Der kann natürlich das gesamte Verhalten negativ beeinflussen.
Evtl. vorhandene Delays() aus dem Code entfernen!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.07.2015, 11:44
Beitrag #5
RE: Schalter als Taster perfekte Lösung?
(27.07.2015 22:20)julius858 schrieb:  Nur sobald der Code etwas komplizierter wird, klappt das nicht mehr so gut.
Gibt es da vielleicht noch bessere Lösungen?
Hi,
wenn etwas zu kompliziert wird, dann macht man sich eine Funktion.
Code:
# define SWITCH 3  // nehmen wir man an, Pin 3

boolean switchChanged() {
   static int oldState = LOW;  // oder auch HIGH, je nachdem

   int currentState = digitalRead(SWITCH);
   if(currentState == oldState)
      return false;
   oldState = currentState;
   return true;
}

void setup()
{
...
}

void loop()
{
   if (switchChanged()) {
       mach etwas
   }
}

Später kann man dann in der Funktion auch noch entprellen.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Lightbulb mehrere Funktionen mit Schalter mechastef 5 356 18.08.2017 21:24
Letzter Beitrag: mechastef
  Taster an Interrupt - Prellen geschickter vermeiden als millis() zu prüfen? Flap 19 1.409 04.08.2017 08:10
Letzter Beitrag: Binary1
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.348 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  Taster als Schalter -> Blinker bino29 8 543 22.06.2017 07:21
Letzter Beitrag: hotsystems
Question Relais und Knopf/Schalter le16on 8 405 20.03.2017 22:33
Letzter Beitrag: Tommy56
Smile Motorsteuerung mit Taster Eggi123 11 719 26.02.2017 15:48
Letzter Beitrag: MicroBahner
  Arduino-UNO LED über Taster digital zum leuchten zu bringen IvKriz 9 595 18.02.2017 08:33
Letzter Beitrag: renid55
  Hilfe bei Taster huber5093 11 574 14.02.2017 19:26
Letzter Beitrag: Tommy56
  8 Taster an einem Pin Kitt 9 738 04.02.2017 18:51
Letzter Beitrag: ardu_arne
  Led Impuls beim Taster betätigen clemens5555 11 759 17.01.2017 20:00
Letzter Beitrag: renid55

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste