Kompass-Motorsteuerung mit einem Arduino

Gast #3734275
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.
Angehängte Dateien:
Gast #3734303
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.
#3734369
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
Gast #3734991
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...
#3735009
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.
Gast #3735737
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:)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren