Forum: Mikrocontroller und Digitale Elektronik ESP32, Taster auswerten


von Anton (anton66)


Lesenswert?

Hallo,
ich habe einen ESP32 und möchte mir anzeigen lassen, ob der Taster 
gedrückt ist oder nicht. Der Taster wird gegen GND geschaltet. Nach 
einem RESET steht in der ser. Konsole "asterstatus" also ein Zeichen 
weniger oder verschluckt. Eigentlich sollte nichts dastehen. Wenn ich 
den Taster drücke, steht "Tasterstatus" da. So wie gewollt. Aber wo 
kommt das "asterstatus" her? Warum kommt es überhaupt?
1
# define TASTER 32
2
3
volatile bool TasterStatus = HIGH; 
4
5
void Button()  
6
{ 
7
    TasterStatus = !TasterStatus;  
8
}
9
10
void setup()  
11
{ 
12
  Serial.begin(9600);
13
  pinMode(TASTER, INPUT_PULLUP); 
14
  attachInterrupt(digitalPinToInterrupt(TASTER), Button, CHANGE); 
15
} 
16
17
void loop()  
18
{ 
19
   Serial.println("Taster Status: " + TasterStatus);
20
}

Gruß Anton

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Anton L. schrieb:
> Eigentlich sollte nichts dastehen.

Dann musst du dafür sorgen, dass das nicht passiert. So machst du ein 
ziemliches Dauerfeuer von Ausgaben.

von Hardy F. (hflor)


Lesenswert?

Es steht doch immer wieder da, daß Taster keinen Interrupt auslösen 
sollen. Dafür einen Timer mit der Abfrage zum Entprellen.

von Matthias L. (lindner8712)


Lesenswert?

1.Doch da muss was da stehen...
"Taster Status:" "...
Die Endlosschleife macht nix anderes als serial print.

Mach doch mal nen Screenshot der Ausgabe bzw. des Seriellen Monitors

Bin nicht so tief drin wie Arduino das mit println macht, ist das "+" 
dort erlaubt?
Ich kenn das so :
Serial.print("Taster Status") ;
Serial.println(tasterStatus) ;

Bei der Gelegenheit kannst gleich noch nen delay() reinmachen :-)

von Anton (anton66)


Lesenswert?

Danke für die Antwort.
Ich hab den Quelltext etwas gekürzt, damit es nicht zulang wird.
Tastenentprellung hab ich weggelassen.
Ich denke ich habe es gefunden.

   Serial.print("Status: ");
   Serial.println(TasterStatus);

funktioniert bestens.
Es liegt sicher an der Typumwandlung. Da muß ich mal Nachlesen.
Gruß Anton

von Anton (anton66)


Lesenswert?

Matthias L. schrieb:
> Ich kenn das so :
> Serial.print("Taster Status") ;
> Serial.println(tasterStatus) ;
Prima. Diese Idee hatte ich auch gerade und es funktioniert. Danke.

Hardy F. schrieb:
> Es steht doch immer wieder da, daß Taster keinen Interrupt auslösen
> sollen.
Das habe ich noch nicht gelesen.

Hardy F. schrieb:
> Dafür einen Timer mit der Abfrage zum Entprellen.
Wo kann ich das mit den Timern nachlesen?
Danke an Alle.
Gruß Anton

: Bearbeitet durch User
von Anton (anton66)


Lesenswert?

Matthias L. schrieb:
> Bin nicht so tief drin wie Arduino das mit println macht, ist das "+"
> dort erlaubt?

Oh, ich glaube Du hast Recht. Ich habe da was durcheinandergebracht. In 
den Beispielen der Arduino-Referenz gibt es kein +.

Gruß Anton

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.