Hallo zusammen,
ich habe ein Problem mit einer Whileabfrage.
Ich habe den Code schon soweit es ging gekürzt.
Der Code soll folgendes tun:
Es soll die Routine nur einmal kpl. durchlaufen werden, außer der Do -
While-Schleife!
Beim ersten Mal läuft das Programm in die Do - while-Schleife und soll
dabei solange darin bleiben, bis der Taster gedrückt wird.Mir ist klar,
das das mit den delays nicht gut ist, die kommen später raus aus dem
Code.
Ich stecke statt des Tasters deswegen einfach ein Kabel zwischen dem Pin
10 und GND.
Es passiert aber folgendes:
Ohne das dieser Tastereingang GND bekommt, läuft das Programm aus der
Do-While-Schleife raus und weiter. Es erscheint im seriellen Monitor:
drin raus raus raus..
Stecke ich das Kabel auf Pin 10 + GND und starte neu, läuft er
richtigerweise nicht durch diesen Zweig und druckt nur "raus".
Warum bleibt das Programm bei nicht angeschlossenem Kabel nicht in der
Do-While-Schleife??????
1 | int Ref_Taste_X = 10;
|
2 | bool boolEinmalig = false;
|
3 | //
|
4 | void setup()
|
5 | {
|
6 | pinMode(Ref_Taste_X, INPUT_PULLUP);
|
7 |
|
8 | Serial.begin(9600);
|
9 | }
|
10 | //
|
11 | void loop()
|
12 | {
|
13 | if (digitalRead(Ref_Taste_X) == HIGH && (boolEinmalig) == false)
|
14 | {
|
15 | Serial.println("drin" );
|
16 | delay(2500);
|
17 | do
|
18 | {
|
19 |
|
20 | } while (digitalRead(Ref_Taste_X) == LOW);
|
21 | }
|
22 | delay(2500);
|
23 | Serial.println("raus" );
|
24 | boolEinmalig = true;
|
25 | }
|
--
Bitte für Quelltext die [ c ] [ /c ] - Tags verwenden. Dann ist das
ganze besser lesbar.
-rufus