ich hänge gerade bei einem Problem. Ich habe das oben genannte Bt-Modul am Arduino angeschlossen und will verschiedene "Befehle" ausführen.
Das ist mein Sketch mit dem ich es testen will:
char btdata;
int led1 = 50;
int led2 = 51;
int led3 = 52;
int led4 = 53;
int i;
void setup() {
Serial.begin(9600);
for (i = 50; i < 54; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
if (Serial.available()) {
btdata = Serial.read();
Serial.print("btdata:");
Serial.println(btdata);
}
while (btdata == '1') {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
}
while (btdata == '2') {
for (i = 50; i < 54; i++) {
digitalWrite(i, HIGH);
}
delay(500);
for (i = 50; i < 54; i++) {
digitalWrite(i, LOW);
}
delay(500);
}
}
Der Sketch ist nur zum Versuchen! Ich will ihn später etwas ausweiten.
Nun mein Problem ist, wenn ich in einer while Schleife bin komme ich nicht mehr raus, ich will es so haben das wenn eine while läuft und das BT-Modul eine neue Zahl erhält, der Arduino die noch laufende Schleife zu Ende führt und an dann die andere ausführt.
Könnt ihr mir dabei helfen?
Im vor raus schonmal vielen dank euch.
Du hast in loop() schon eine Schleife. Weitere Schleifen bereiten bei sowas nur Probleme
Lege dir eine Variable an die den aktuellen Zustand beschreibt. Das hast du mit "btdata" im Prinzip schon.
Je nach dem Zustand kannst du dann unterschiedliche Dinge tun. Aber mit "if" statt "while"! Und nebenher noch die serielle Schnittstelle abfragen ob neue Daten da sind - und wenn ja den Zustand ändern.
Es gibt keinen Grund da zusätzliche Schleifen anzulegen. Wenn du das mit if einmal ausführst sorgt loop() schon dafür dass es nochmal dran kommt.
Mit der Doppelbelegung habe ich kein Problem, das funktioniert so.
Kann mir jemand vielleicht noch sagen wie ich es hinbekomme das die LED´s solange blinken bis ich dem BT-Modul die nächste Zahl sende sende um einen anderen Befehl auszuführen.