Hallo, ich muss zugeben, dass ich noch nie einen Mikrocontroller programmiert habe, da ich aber Arduino ganz interessant finde, wollte ich mir einen bestellen und ein wenig experimentieren. Habe mich dazu in letzter Zeit ein wenig eingelesen, es ist allerdings eine Frage offen geblieben: Ich habe eine konkrete "Projekt"-Idee, allerdings weiß ich nicht, ob ein Arduino dafür geeignet ist. Meine Projekt-Idee sieht so aus: Es gibt ein Fahrzeug aus Lego, das von einem Motor angetrieben wird. Die Lenkung wird von einem Servo gesteuert. Auf dem Fahrzeug ist ein weiterer Servo montiert, an dem ein Ultraschallsensor montiert ist. Zur Vereinfachung wollte ich das ganze erstmal mit der Kabelverbindung über USB steuern. Der Ultraschallsensor soll sich um 180° drehen und dann wenden um 180°, dann wieder wenden, sich also auf einem Halbkreis bewegen. Die Messung des Ultraschallsensors soll alle 2° an den PC gesendet werden. Ich kann C/C++ und Java recht gut, allerdings bleibt eine Frage offen: Die Arduinos haben ja nur einen Thread, wie kann ich dann gewährleisten, dass sich der Servo kontinuierlich dreht und die Ultraschallsensordaten ausgelesen und gesendet werden, WÄHREND das Fahrzeug bewegt wird? Wenn ich zum Beispiel das Signal sende, "Fahre für 5 Sekunden vorwärts", dann kann in diesen 5 Sekunden eigentlich ja nicht der Servo bewegt werden, weil der Code für "Fahre für X Sekunden vorwärts" noch abgearbeitet wird (zum Beispiel in einer Schleife). Danach wird der Servo dann wieder angesteuert. Wenn ich die Zeit für "Fahre X Sekunden vorwärts" aber zum Beispiel auf 0.1 Sekunden reduziere und diesen Befehl mehrfach sende, dann könnte der Mikrocontroller ja die restlichen Befehle abarbeiten, zum Beispiel 2° weiter drehen, Daten lesen und senden und dann anschließend prüfen, ob ein neuer Fahrbefehl vorliegt. Könntet Ihr bitte bewerten, ob das so möglich ist oder ob es noch andere Möglichkeiten für die Lösung meines Problemes gibt? Eine Lösung wäre es ja zum Beispiel einen zweiten Arduino zu besorgen ... ;)
Hallo Luca, Einfache Lösung: Moter einschalten und Zeit merken mit millis() Sensordaten auslesen ggf lenken (2°) wenn Moterlaufzeit erreicht -> abschalten Und dann die Schleife wieder von vorne.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.