Hallo Bernhard,
ich glaube, wir müssen uns der Sache schrittweise nähern. Bitte schicke mir deine Version von remote.cpp.
Wir werden dann das Zusammenspiel von Fernbedienung und Motoren schrittweise anpassen.
Gruss
René
Hallo Bernhard,
ich glaube, wir müssen uns der Sache schrittweise nähern. Bitte schicke mir deine Version von remote.cpp.
Wir werden dann das Zusammenspiel von Fernbedienung und Motoren schrittweise anpassen.
Gruss
René
Hallo René,
ich habe die Testdatei geladen und dabei festgestellt, dass sich bei Einhaltung einer bestimmten Reihenfolge von Tastendrücken (s.u.) folgendes Laufschema der Motoren ergab:
1. Einschalten => vor
2. vor => vor
3. zurück => zurück
4. rechts => Kurve rechts zurück
5. links => zurück
6. ok => zurück
7. 1 => drehen links zurück
8. 2 => drehen links vor
9. 3 => drehen rechts zurück
10. 4 => drehen rechts vor
11. 5 => drehen rechts zurück
12. 6 => drehen rechts zurück
13. 7 => drehen rechts zurück (durch mehrfaches drücken Geschw.keit nach unten regelbar)
14. 8 => drehen rechts zurück
15. 9 => drehen rechts zurück (durch mehrfaches drücken Geschw.keit nach oben regelbar)
16. 0 => keine Wirksamkeit
(Bemerkung: bei gleichem Laufschema lagen unterschiedliche Geschwindigkeiten vor)
Desweiteren habe ich festgestellt, dass bei Unterbrechung der o.g. Tasten-Reihenfolge z. B. folgende Belegungen anders reagierten:
4 => zurück
5 => zurück
6 => zurück
7 => zurück (durch mehrfaches drücken Geschw.keit nach oben regelbar)
9 => zurück (durch mehrfaches drücken Geschw.keit nach unten regelbar)
Ich hoffe, dass ich damit deine Zeit nicht zu sehr beanspruche.
Viele Grüsse
Bernhard
Hallo Bernhard,
dann kommen wir der Sache schon näher. Hier ein Testprogramm, das ausschliesslich das Zusammenspiel zwischen Fernbedienung und Motoren testet.
Der Roboter reagiert auf folgende Befehle:
- vor, zurück
- drehen rechts oder links
- Kurve rechts oder links
- Geschwindigkeit langsam, mittel, schnell
- Geschwindigkeit schneller, langsamer
- gerade aus
- stopp
Bei schneller, langsamer und den Kurven muss mehrmals gedrückt werden. Es genügt nicht, einfach den Knopf gedrückt zu halten.
Welche Taste welche Funktion auslöst, siehst du in remote.cpp.
Gruss
René
Hallo René,
zuerst einmal vielen Dank für deine Bemühungen.
Der Roboter reagiert immerhin schon autonom:)
Folgendes kann ich feststellen:
- Einschalten => langsam vorwärts
- bei Annäherung an ein Objekt schnell vorwärts
- drücken der Taste 2 beendet autonome Bewegung => schnell vorwärts (dabei sind allerdings keine weiteren Steuerungen mit der
Fernbedienung möglich, außer s.u.)
- durch drücken der Taste vor, kann Autonomie wieder hergestellt werden.
Viele Grüsse
Bernhard
Hallo Bernhard,
versuche es einmal mit dem angehängten Programm 4_Hindernis7b. Du muss nur die Fernbedienungscodes wieder an deine Fernbedienung anpassen.
Gruss
René
Hallo René,
ich habe erstmal nur das MotorTest.ino incl. h und cpp auf den Arduino geladen. Bin mir noch unsicher, wie ich dieses nun in das Hauptrogramm 4_Hindernis7.ino implementieren kann. Und muss ich in diesem ebenfalls noch Einstellungen verändern?
Könntest du mir dazu bitte noch ein paar Hinweise geben?
Gruss
Bernhard
Hallo Bernhard,
dann hast du eigentlich nur die Drehrichtung des zweiten Motors gewechselt.
Wie reagiert der Roboter jetzt mit der Fernbedienung?
Gruss
René
Hallo René,
nachdem ich die Motoranschlüsse änderte, haben sie die gleiche Laufrichtung. In der 4-Pin-Fassung arbeiten sie jetzt wie folgt:
- 5 s schnell vorwärts
- 5 s stehen bleiben
- 1 s schnell vorwärts
- 5 s schnell rückwärts
- 5 s langsam rückwärts
- ausschalten.
Meine Pin-Belegung sieht dabei folgendermaßen aus:
ENA ==> nicht gesteckt (Jumper)
IN1 ==> D2
IN2 ==> D9~
IN3 ==> D4
IN4 ==> D5~
ENB ==> nicht gesteckt (Jumper)
Sieht eigentlich schon ganz gut aus oder?
Grüsse
Bernhard
Hallo Bernhard,
im Prinzip ist es ähnlich. Wenn ich mich recht erinnere, läuft bei Udo die Geschwindigkeitssteuerung (PWM) über ENA und ENB. Du brauchst also 2 zusätzliche Arduino - Pins.
Wenn du mit den fest gejumperten Enable - Eingängen arbeiten möchtest, kann du einmal das hier angehängte Testprogramm laufen lassen.
Die Räder sollten Folgendes machen:
- 5 s langsam vorwärts
- 5 s schnell vorwärts
- 1 s stehen bleiben
- 5 s schnell rückwärts
- 5 s langsam rückwärts
- ausschalten
Vermutlich werden sie anders reagieren. Aus dem Verhalten kann man dann möglicherweise ableiten, welche Programmanpassungen notwendig sind.
Gruss
René
Hallo René,
Habe eben die Beiträge zwischen dir und Udo gelesen. Ich vermute, es ist bei mir das gleiche oder ähnlich gelagerte Problem mit der Motorsteuerung. Werde mal die von dir modifizierten Programmmodule laden.
Grüsse
Bernhard
Hallo René,
vielen Dank für die schnelle Rückantwort. Die Motoren reagieren alle bei der u.g. Beschaltung (ENA/ENB sind gejumpert). Nur reagieren sie für m.B. unverständlich auf den vom Programm vorgesehenen Tastendruck (z.B. Geschwindigkeit sollte mit T1,T2,T3 geregelt werden).
Mit besten Grüssen
Bernhard
Hallo Bernhard,
reagieren die Motoren gar nicht? Wenn ja, dann kannst du versuchen, ENA und ENB mit +5V zu verbinden. Wenn ENA und ENB auf Ground liegen, sind die Motoren ausgeschaltet.
Gruss
René
Hallo an das Forum,
ich habe mir vor einiger Zeit einen 4WD Smart Roboter Kit zusammengebaut. Als Motor-Controller verwende ich einen HW-95 (L298N/H-Brücke). Zur Ansteuerung benutze ich einen IR-Receiver. Als Programm wurde 4_Hindernis7.ino auf den Arduino UNO geladen. Den Speicher-Code habe ich, entsprechend meiner Fernbedienung in remote.cpp ausgetauscht. Nun vermute ich, dass die Pin-Belegung des HW-95
ENA ==> nicht gesteckt
IN1 ==> D2
IN2 ==> D9~
IN3 ==> D5~
IN4 ==> D4
ENB ==> nicht gesteckt
am Arduino falsch ist. Und da komme ich eben nicht weiter. Vielleicht kann mir hier jemand helfen?
Gruss
Bernhard
Ach ja, die war ja bei den Downloads von Keyestudio dabei. Vielen Dank für den Hinweis. Die Library arbeitet mit PulseIn, macht also nicht besonders viel. Sie bietet zusätzlich noch die Funktion DistanceAvg, die einen Durchschnittswert über mehrere Messungen anbietet. Ich bin mir aber nicht sicher, ob sich dadurch eine Verbesserung des Roboterverhaltens erreichen lässt.
Gruss
René
Hallo Brocki,
da bist du ja schon viel weiter, als ich es mit den Videos bin. Es wird noch eine Weile dauern, bis mein Roboter auf diesem Stand ist. Der tote Winkel bei der Hinderniserfassung ist ein Problem, deshalb sind die Seitensensoren eine gute Idee. Da ich in den Videos vorerst bei den vorhandenen Sensoren bleiben möchte, werde ich versuchen durch kontinuierliches nach links und rechts Schauen den Bereich zu vergrössern. Ich bin gespannt, ob man so auch auf vernünftige Resultate kommt.
Im Arduinokurs habe ich für den Ultraschallsensor die NewPing - Library verwendet. Diese kann ich beim Roboter nicht verwenden, da sie einen Konflikt mit IRremote verursacht. Woher stammt deine SR04 Library?
Die IR-Fernbedienung ist leider auch bei mir recht unzuverlässig. Da es aber sowieso das Ziel ist, den Roboter selbstständig fahren zu lassen, ist das nicht allzu schlimm.
Auf jeden Fall gratuliere ich dir zu deinem gelungenen Sketch. Du hast da recht viel Funktionalität hineingepackt. Ich nehme aber an, dass du vorher schon über recht viel Programmiererfahrung verfügtest.
Gruss
René
Hallo,
konnte es nicht erwarten und habe mich in das Roboter Thema gestürzt.
Ich habe Programmteile von Rene', Teile von Keyestudio zusammengefügt, und an das Adafruit Motorshield angepasst. Adressänderung der Matrix auf (0x71). Ebenso wurden die Codes von der IR-Fernbedienung (ELEGOO) umgeschrieben.
Der Robby läuft, weicht Hindernissen soweit er sie erkennt aus. Da er Hindernisse die in einem spitzen Winkel angefahren werden nicht registriert (kein US-Echo), habe ich zwei Reflexlichtschranken zur Erkennung von Seitlichen Hindernissen installiert und in das Programm eingebunden.
Die IR-Fernbedienung ist nur begrenzt funktionstüchtig. Man muss dem Fahrzeug hinterher laufen, da die Signale nicht richtig erkannt werden. Die Geschwindigkeitseintellung musste ich nach unten korrigieren, da mir das Gerät sonst zu schnell durch die Bude flitzt.
Gruß Brocki
Hallo Rene'
Herzlichen Dank für Deine Antwort, werde es nachher mal durchexerzieren.
Gruß
Brocki
Hallo Brocki,
sie sind mehr oder weniger kompatibel. Doch gerade im Bereich I2C gibt es Unterschiede. Hier ein Auszug aus der Dokumentation des Mega:
Auf dem Mega sind es also die digitalen Pins 20 und 21.
Gruss
René
Hallo Rene',
die Anleitung war für einen UNO. Ist das nicht mit dem MEGA kompatibel. Anschlüsse 5V, 0V, A4-SDA, A5- SCL.
Gruß
Brocki