Sensorgesteuertes Auto mit Arduino Uno (R3)

Gast #3701760
Lesenswert?
• ▲
▼
Hallo Leute,

ich bin neu auf diesem Forum habe aber eine Fragen zu meinem Projekt und 
zwar  möchte für meine Prüfung in der Schule ein Auto bauen, welches 
durch ein Microcontroller (Arduino Uno) gesteuert werden soll. Das Auto 
habe ich schon "gebaut" es hat zwei 3V-Motoren und drei 
Ultraschallsensoren (HC-SR04) zur Hinderniserkennung.
Den Code habe ich soweit auch fertig nur habe ich ein kleines Problem.
Hier die Stelle:

  scanvorne();
  if(cm >= 10){
  GoForward();
  delay(400);
    }
  else{
    Stop(); }
  scanlinks();
  if(cm >= 10){
    GoLeft();
    delay(300);}
  else{
    Stop();}
  scanrechts();
  if(cm3 >= 10){
    GoRight();
    delay(300);}
    else{
    Stop();}
  scanvorne();
  if(cm <= 10){
    GoBackward();
    delay(350);}
  else{
    Stop();}

Ich möchte dass das Auto nicht rumzuckt wie auf Drogen sondern erst 
soweit fährt bis es etwas erkennt und danach ausweicht und nicht wie 
jetzt, abscannt 3sec fährt und dann plötzlich die Richtung ändert, 
obwohl da nichts ist.

Ich bin ein Anfänger im Programmieren deswegen wird sich der eine oder 
andere etwas über einen Code ärgern oder sogar lachen.
Und ich weiß dass mir noch massen an Bauteilen fehlen um alles in 
"Echtzeit" durchführen zu lassen, deswegen muss es nur so ne grobe 
Richtung haben und so ungefähr arbeiten.

MFG Vangola

P.S. Danke schon mal im Voraus.
Ich hab ein Foto vom Auto und den kompletten Code dabei gelegt.
Angehängte Dateien:
#3701937
Lesenswert?
• ▲
▼
Vangola schrieb:
> Ich möchte dass das Auto nicht rumzuckt wie auf Drogen sondern erst
> soweit fährt bis es etwas erkennt und danach ausweicht


Dann mußt Du das auch genau so programmieren.

Schaue Dir bitte mal den Code Deiner loop-Funktion an und überlege was 
passiert, wenn alle Richtungen völlig hindernisfrei sind!

Dein Auto fährt erst vorwärts, weil nach vorne alles frei ist.
Dann fährt es gleich darauf nach links, weil links frei ist.
Links ist dann das neue vorne und es wird festgestellt, dass rechts frei 
ist.
Dann fährt das Auto nach rechts, dreht also wieder zurück.
Rückwärts fährt es dann allerdings nicht, weil nach vorne immer noch 
frei ist. Aber dann beginnt das Spiel von vorne.

Im übrigen frage ich mich, ob Du bei laufenden DC-Motoren überhaupt 
Deine Ultraschallsensoren zur Abstandsmessung einsetzen kannst. Die 
Motoren rappeln doch bestimmt und erzeugen Geräusche, die sicher auch 
bis in den Ultraschallbereich reichen. Ob der Ultraschallsensor dann das 
Echo der Motorengeräusche auffängt oder das Echo von seinem 
Trigger-Impuls?

Hat Dein Auto ein LCD-Display, auf dem während der Fahrt die wichtigsten 
Daten zur Kontrolle angezeigt werden, wie z.B. die Abstände, die von den 
Ultraschallsensoren gemessen werden?
#3702003
Lesenswert?
• ▲
▼
Vangola schrieb:
> nein es hat keinen LCD-Display, es ist so wie auf dem Bild zu sehen

Du brauchst dringend ein Feedback über das, was Du nicht direkt sehen 
kannst, z.B. ob die Ultraschallsensoren Hindernisse feststellen oder 
nicht.

Notfalls ziehe die Board-LED an Pin-13 als Hilfe heran.

Und ändere die Programmlogik, damit das Ding eine Strategie hat und 
nicht irgendwie durch die Gegend torkelt.

Z.B.:
1. Scannen in geradeaus Richtung
1.a) Wenn kein Hindernis, geradeaus fahren und weiter mit 1.
1.b) Wenn Hindernis, anhalten, Board-LED einmal blinken, weiter mit 2.
2. Scannen nach rechts
2.a) Wenn rechts frei, drehen nach rechts, weiter mit 1.
2.b) Wenn rechts Hindernis, Board-LED zweimal blinken, weiter mit 3.
3. Scannen nach links
3.a) Wenn links frei, drehen nach links, weiter mit 1.
3.b) Wenn links Hindernis, Board-LED dreimal blinken,
     wenden (2* drehen Rechts oder Links)

Oder so.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.