Ich habe 4 Servos und diese möchte ich (bzw. eine bestimmte reihe an schritten) mit verschiedenen Befehlen ansteuern können.
Leider hab ich das problem das meine programmierung linear arbeitet, soll heißen wenn ich zwei verschiedene schritte habe (sagen wir F und D) und den zweiten ansteuern will , wird aber der erste vorrausgesetzt… Kann man die nicht unabhängig voneinander ansteuern?
ich bin am verzweifeln
Danke schon mal
Unter “6. Make a meaningful subject line” steht folgendes:
In particular avoid subject lines in ALL CAPITALS. That annoys a lot of people, they feel as if you are shouting at them.
Das bedeutet:
Vermeide insbesondere Betreffs VOLLSTÄNDIG IN GROSSBUCHSTABEN. Das belästigt viele Leute, die sich fühlen, als wenn Du sie anschreist.
Und unter “13. Forum etiquette” findest Du:
Don’t cross-post!
We know you are anxious to get an answer to your problem, but re-posting the same question
to multiple parts of the forum causes duplicate effort, and divides the focus on your problem.
Das bedeutet, Du sollst dasselbe Posting nicht mehrfach posten.
... und Code gehört in Code -Tags. ( Markieren, dann den # Befehl klicken )
Wenn du ihn vorher noch richtig einrückst (bzw. einrücken lässt mit Strg-T in der Arduino IDE ),
macht sich vielleicht auch jemand die Mühe, deine vielen geschweiften Klammern anzusehen
Dann ist "unabhängig steuern" und "delay" ein absoluter Gegensatz...
Zu Deinem Code: Der wird immer genau so abgearbeitet, wie Du ihn programmierst.
Wenn Du es so programmierst, dass am Anfang einmal auf das Vorhandensein eines Zeichens (Serial.available()) prüfst, und in jedem if-Zweig dieses Zeichen per Serial.read() ausliest, dann kann natürlich nur im ersten if-Zweig ein gesendetes Zeichen vorhanden sein.
Korrekt wäre in der loop:
einmal prüfen, ob ein Zeichen vorhanden ist
wenn ja, das eine Zeichen auslesen
und dieses eine gelesene Zeichen in allen if-Zweigen prüfen, ob eine Aktion notwendig ist
void loop() {
if (Serial.available())
{
char data = Serial.read();
if (data == 'F')
{
Serial.println("Aktion F");
}
else if (data == 'D')
{
Serial.println("Aktion D");
}
else if (data == 'G')
{
Serial.println("Aktion G");
}
}
}