Hallo,
Das Typische Problem.
Der Computer macht nicht das was man von ihm will sondern das was man ihm sagt.
Der Prinzipielle Aufbau eines Arduino Sketchs:
void setup() //wird genau einmal ausgeführt.
void loop() // wird als Endlosschleife (loop) immer wieder ausgeführt.
Am Beginn der Schleife fragst Du den Eingang ab.
Dann kommt eine IF Verzweigung in der Du bei gesetztem Eingang einen Ausgang Low setzt.
Und die bedingte Verzweigung ist zuende.
Ab hier wird der Code bei jedem Schleifendurchlauf einmal ausgeführt. (Das ist daß was du dem Computer sagst)
Dann kommt FOR eine Schleife in der der RC-Servo in 1° Schritten mit einem Delay von 50ms je Durchlauf verfährt.
Dann 20 Sekunden warten und noch eine FOR Schleife die den RC-Servo wieder in Ausgangsposition bringt.
Dann ein Delay von 2ms (der Zahlenwert der Variable pinEingang ist 2)
Und die Schleife beginnt von vorne.int pinEingang = 2;
Delay ist ein recht unpraktischer Befehl wenn man mehr als eine Sache parallel machen will (Taster abfragen, LED blinken und Servo verfahren)
Als erstes lege mal den Schankenablauf in die bedingte Verzweigung, so daß dieser nur ausgeführt wird, wenn der Taster betätigt wurde.
Damit ist das Loop Verhalten des Servos weg und wird zu einem Eventgesteuerten Verhalten.
Danach sollten die Delays raus und dafür alle Wartezeiten per IRQ oder Timervergleich ausgeführt werden. So kann die CPU auch was machen wärend eine Sache auf das Verstreichen einer bestimmten Zeit wartet.
Lesezeichen