Forum: Mikrocontroller und Digitale Elektronik Kompass-Motorsteuerung mit einem Arduino


von Adrian (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
da mir das forum besser gefällt als jenes von Arduino habe ich mich dazu 
enteschlossen mein Anliegen hier zu posten.
Wie bereits oben erwähnt möchte ich für meinen kleinen Putzroboter ein 
Kompass einbauen, der zunächst so genau wie möglich seine 90grad fahren 
soll. Der Kompass ist bereits initiaisiert und funktioniert soweit eig 
gut. Ich verwende den lsm303 für mein Arduino. Das Programm ist bereits 
geschrieben und läuft sowei aber läuft nicht so nach meinen Wünschen.
Hätte jemand vorschläge wie ich dies ändern könnte?. Hatte eig mir 
überlegt das mit einer konstanten variablen zu machen, die die Richtung 
die der Roboter fahren soll angibt. Leider klappt das nicht so. Die 
Gradzahlen schwannken auch zu dem immmer unterschiedlich.

Dies dienst zunächst nur als Testzwecke. Im Nachhinein soll der Kompass 
mit den Ultraschallsensoren arbeiten. Ich habs mir so vorgestellt wenn 
mein Roboter sich kurz der Wand nähert soll er dann um 90 grad entlang 
fahren bis zur nächsten wand.

Über Kommentare würde ich mich sehr freuen.

PS: ich hoffe ihr könnt das ino-file von Arduino öffen bzw hier im Forum 
den Code lesn.

von Michael W. (Gast)


Lesenswert?

Erkläre "eig" !!! (man, man, man...)

von Bernhard S. (b_spitzer)


Lesenswert?

Michael W. schrieb:
> Erkläre "eig" !!! (man, man, man...)
eigentlich??

Zum eig Problem. Ist der Kompass nahe an Stromführenden Leitungen 
verbaut?? Wenn ja, mehr Abstand oder nur messen, wenn die Motoren 
stehen. Das gibt dann leider keine flüssige Fahrt mehr.

von PittyJ (Gast)


Lesenswert?

Wenn das Programm nicht nach deinen Wünschen läuft, warum änderst du es 
nicht?

Gerade in diesem Bereich ist auch viel Trial&Error mit dabei. Man 
versucht etwas. Schaut, warum es nicht geht. Ändert eine Kleinigkeit und 
versucht es erneut.

Dazu muss man das Handwerkszeug beherrschen: Man sollte fit bei 
Programmieren sein. Und auch verstehen, wie die Hardware-Plattform und 
die angeschlossenen Sensoren arbeiten.

Bei dem, was ich da sehe, zweifel ich doch etwas daran.
Auch wird wohl keiner exakt deine HW und Problemstellung haben, so dass 
jemand deine Programmwünsche umsetzt. Oder wie war deine Frage zu 
verstehen?

Dass Sensoren schwanken, ist doch eigentlich normal. Ich habe kaum etwas 
stabiles bisher erlebt. Also solltest du als erstes dafür eine Lösung 
entwickeln.

von Cyblord -. (cyblord)


Lesenswert?

> Dazu muss man das Handwerkszeug beherrschen: Man sollte fit bei
> Programmieren sein. Und auch verstehen, wie die Hardware-Plattform und
> die angeschlossenen Sensoren arbeiten.

Richtig. Das alles fällt aber bei der Arduino-Fraktion raus.
Dann kommen solche Dinge zutage:

> konstanten variablen

> Das Programm ist bereits geschrieben
Nur wohl nicht vom TE

> PS: ich hoffe ihr könnt das ino-file von Arduino öffen bzw hier im Forum
> den Code lesn.
Da müsste viel passieren bevor ich das auch nur versuchen würde. Gerade 
bei Spezialisten wie dir, ist doch alles vergebene liebesmüh. Lern 
Programmieren (wenigstens mit Arduino), statt dir von anderen nach 
deinen Vorgaben dein Programm überarbeiten zu lassen.

gruß cyblord

von Frachbrief (Gast)


Lesenswert?

Das Programm mit der Endung 'C' statt 'INO' anhängen, dann kann es jeder 
formatiert lesen.

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Hier der Code als C-File

von Adrian (Gast)


Lesenswert?

vielen dank für die kommentare aber werde mich selbst darum kümmern und 
programmierung lernen.

Übrigens beides funz jetzt jedoch finde ich die programmierung 
katastrophal auch wenn alles soweit läuft. Ich würde es lieber in 
klassen bevorzugen umd einfach weniger Programmierungsaufwand zuhaben. 
Mal schauen...

von Karl H. (kbuchegg)


Lesenswert?

Adrian schrieb:
> vielen dank für die kommentare aber werde mich selbst darum kümmern und
> programmierung lernen.

Das wird auch gut sein.
Sonst wird das nämlich nichts, von dem du da noch träumst.

> Übrigens beides funz jetzt jedoch finde ich die programmierung
> katastrophal auch wenn alles soweit läuft.

Übertreib mal nicht.
Das 'Programm' ist schon recht trivial geschrieben, auch wenn man auf 
Anhieb ein paar Dinge sieht, die zugegebenermassen nicht wirklich 
prickelnd bzw. redundant gelöst sind.

Da steht, vereinfacht gesagt, nicht mehr als
1
void loop()
2
{
3
  stelle Richtung fest
4
5
  if( Abweichung von der Sollrichtung ist nach rechts )
6
     dann dreh dich abhängig von der Abweichung nach links
7
8
  if( Abweichung von der Sollrichtung ist nach links )
9
     dann dreh dich abhängig von der Abweichung nach rechts
10
}

das ist die ganze Logik in dem Programm. Mehr passiert da nicht. Der 
Rest ist Beiwerk um 'Details' zu beschreiben. Aber der eigentliche 
Algorithmus nach dem vorgegangen wird, ist im Kern nicht mehr als dieser 
5 Zeiler da oben.

> Ich würde es lieber in
> klassen bevorzugen umd einfach weniger Programmierungsaufwand zuhaben.

Dann mach das. Niemand hindert dich daran.

: Bearbeitet durch User
von Adrian (Gast)


Lesenswert?

danke :)
ja mehr als diese 5 Zeilen waren es auch nicht.
Hab das noch mit dem Ultraschallsensor eingebunden und jetzt 
funktioniert beides wunderbar. Er erkennt die ecken rechtzeitig und 
dreht sich auch nach dem gewünschten Winkel den ich mir erwatet habe:)

von Harald W. (wilhelms)


Lesenswert?

cyblord ---- schrieb:

>> konstanten variablen

Naja, auch nach Murphy sind alle Konstanten variabel und das
auch schon vor der Erfindung des Computers. :-)

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
Noch kein Account? Hier anmelden.