Arduino Variablen speichern?

1 Antwort

Erstmal hat eine Variable und der Zustand eines Tasters nicht viel mit serieller Kommunikation zu tun.

Ich nehme an, du möchtest die Änderung der Variablen im seriellen Monitor ausgeben lassen?

Zunächst definierst du deine Variable, deinen Taster als Input und setzt die Variable auf 0.

Dann startest du die serielle Kommunikation, 9600 ist da voll ok.

Im Prinzip fragst du mit zwei unabhängigen if-Schleifen folgendes ab:

  1. Ist die Variable auf 0 und der Taster gedrückt, dann setze die Variable auf 1, schreib was in den seriellen Monitor und warte kurz (500ms).
  2. Ist die Variable auf 1 und der Taster gedrückt, dann setze die Variable auf 0, schreib was in den seriellen Monitor und warte kurz (500ms?).

Den kurzen Delay brauchst du, damit die Variable nicht sofort wieder (und wieder) umspringt. Eventuell wäre es sinnvoller, das mit millis() zu lösen, aber wenn es hier nur um das Prinzip geht, reicht ein Delay.

Du kannst mit && zwei Bedingungen in ein if packen.

So sollte es dann eigentlich klappen.

Woher ich das weiß:Hobby
Minihawk  13.05.2021, 10:13

Einen Taster fragst Du mit DigitalRead(Portnummer) ab. Meist werden Taster gegen GND geschaltet, die Eingänge mit einem Pullup versehen.

z.B. mit PinMode(Portnummer,INPUT_PULLUP)

Du definierst zwei Variablen, eine für den Zustand Deines "Schalters", eine für den letzten Zustand des tasters, also z.B.

#define Portnummer=1;
int schalter;
int tastzustand;
int neuzustand; 

Schalter wird z.B. beim Start auf 0 gesetzt.

schalter=0;
PinMode(Portnummer,INPUT_PULLUP);
tastzustand=DigitalRead(Portnummer);
neuzustand=tastzustand;  

Im Loop-Bereich:

while(1)
{
  neuzustand=DigitalRead(Portnummer);
  if (neuzustand!=tastzustand)
  {
    if neuzustand==LOW)
    {
      if(schalter==0) schalter=1;
      else schalter=0;
    }
    tastzustand=neuzustand;
  }
} 

Die Portnummer setzt Du auf den Wert, der Deinem Taster-Anschluss entspricht.

Dieses Programm benötigt keine Verzögerung bei der Abfrage, weil es nach dem Drucken des Tasters auf das Loslassen wartet und erst dann beim Nächsten Drücken wieder auf einen Tastendruck reagiert.

1