Nachdem ich nun lange und glücklich mit dem "Arduino Uno" rumgespielt habe, zuletzt mit dem Ultraschall Sensor, wollte ich wieder den Asuro zum laufen bringen.
Wie gesagt, Die Arduino IDE erkennt das Board als "Asuro with ATMega8" ich kann auch die Demo Sketche für den Asuro kompilieren und mit meinem externen Brenner per ISP flashen, läuft.
Jetzt das Problem:
Der erste eigene Sketch für den Asuro mit der Arduino IDE erstellt > nix geht
nur die Teile, die aus der "Asurino" Biblithek kommen laufen, das selbst dazu addierte macht nicht was es soll.
Nach längerem Suchen fand ich nun raus, dass die Pinzuordnung nach dem Kompilieren nicht stimmt!
Zum Testen habe ich einfach das "Basics" "Blink" Sketch auf den Asuro geflasht, und alle vorhandenen LEDs nacheinander versucht anzusteuern.
Nehme ich z.B. die eingebaute Dual LED auf PIN 14, blinkt die linke Rückfahr LED an PIN23 !!??
Ich dachte, ich kann mit der Arduino Software einfach Software für den Asuro schreiben? Irre ich da ? Gehen da nur die Befehle aus der dazugehörigen Bibliothek?
Also "asuro.setStatusLED(RED);" das geht! Die Status LED leuchtet rot...
nur "digitalWrite(led, HIGH);" mit der Definition "int led = 14" und "pinMode(led, OUTPUT);"also an Pin 14 des Atmega 8 landet geflasht auf Pin 23 .
Weiß jemand noch Rat bei dem alten Ding?
Geändert von Wolle62 (30.08.2018 um 18:56 Uhr)
Verstanden, die Pins in der IDE beziehen sich auf die Nummern der Buchsenleisten und nicht auf den IC selbst.
Durch die Schaltung des Uno habe ich begriffen, das die ja gar nicht identisch sind.
Mein Fehler, das wusste ich nicht. Also eine kleine Tabelle anfertigen, damit ich das auf den Asuro übertragen kann.
DANKE!
EDIT: Super alles läuft nun . Der Asuro fährt mit Ultraschallmodul und stoppt vor der Wand. Nun geht es weiter mit Wendeschleife und Odometrie zwecks Geradeauslauf.
Das wird wesentlich schwieriger...
Geändert von Wolle62 (02.09.2018 um 18:39 Uhr)
Da gehts schon los. Irgendwas habe ich wohl wieder nicht richtig verstanden.
Es geht um die "Asurino" Bibliotheken und die damit verbundenen "Befehle".
Also der Codeauszug für die Motorsteuerung hier macht was er soll :
Das Problem ist der markierte Teil.if(entfernung <=30) {
asuro.setStatusLED(RED);
asuro.setMotorSpeed(100,50);
asuro.setMotorDirection (0,0);
delay (1500);
}
else {
asuro.setStatusLED(GREEN);
asuro.setMotorDirection (1, 1);
asuro.setMotorSpeed(120,100);
}
Vertausche ich die beiden Zeilen, also erst die "Direction" und dann den "Speed" gehts nicht mehr ??
Die Laufrichtung der Motore ändert sich dann nicht mehr.
gemerkt habe ich das in neuen Sketches, die alle nicht liefen, wie sie sollten.
Im "else" Teil ists aber genau umgekehrt und da geht es problemlos.
Wo ist da der Denkfehler? Oder ist da ein Bug?
Ich werde wohl den Asuro ausschlachten und mir den AAR-04 teilweise mit nem gesteckten Arduino auf Lochraster nachbauen.
Das Material habe ich ohnehin.
ganz blöde frage, welche asuro lib VVersion nutzt du, wenn ich die doku der neueren so ansehe ergibt sich relativ klar warum das nicht geht
[in] left_dir Richtung des linken Motors [ FWD | RWD | BREAK | FREE ]
#define FWD _BV(PB5) #define RWD _BV(PB4) #define BREAK 0x00 #define FREE _BV(PB4) | _BV(PB5) Wenn du also Dir 0,0 sagst stehen beide Motoren auf BREAK also Bremse (Vorrausgesetzt dasds es in deiner AsuroLib Version auch so ist)
verwende lieber die definierten Makros ... warum sind das in der lib überhaupt Makros? Warum sind das keine ordentlichen Enums?! Das schreit ja geradezu nach totaler Verwirrung
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Mit den asuro-Libs bin ich nie wirklich klar gekommen. Ich hatte mich damals entschieden die Programmierung "richtig"/"zu Fuß" in C zu machen. War für mich schwierig, weil ich kein C konnte (kann ich heute immer noch nicht wirklich/richtig) - aber man lernt ja nie aus. Und damals hatte ich mit asuro wirklich gute Fortschritte gemacht die mir später nützten... verwende lieber die definierten Makros ... warum sind das in der lib überhaupt Makros? .. Das schreit ja geradezu nach totaler Verwirrung ..
Nur so, als ne Art Ergänzung: ich hatte bei der IR-Programmierung immer wieder Störungen und hatte das damals dann mit ner üblichen ISP geflasht (siehe hier - rechtes Bild).
Ciao sagt der JoeamBerg
Ich habe die letzte verfügbare Asurino lib von hier:
https://github.com/Dirk-/Asurino-Library
benutzt.
Im Example Ordner dieser Lib war ein Motortest.
Auszug daraus:
Den habe ich als Grundlage benutzt. Daher die Erkenntnis, das " ...Direction(0,0);"> "Rückwärts" ist.// test engines backward and forward
asuro.setMotorSpeed(255, 255);
//forward
asuro.setMotorDirection (1, 1);
delay (500);
asuro.setMotorDirection (0,0);
delay (500);
asuro.setMotorSpeed(0,0);
Wie dem auch sei, ich bin auch auf die Idee gekommen, alles mit der Arduino IDE selbst zu programmieren und auf diese "Sonderbefehle" zu verzichten.
Und siehe da, alle geht wie es soll.
Ich musste nur eine Tabelle der Pins vom Atmega8 des Asuro auf die Pins des Arduino machen, um den Überblick
zu haben, was beim Asuro wo dran ist im Verhältnis zum Arduino.
Achso, mein Asuro ist umgebaut und hat ne ISP Schnittstelle. Kein IR Problem deshalb.
Geändert von Wolle62 (16.09.2018 um 12:14 Uhr)
gute entscheidung
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Ich würde nicht lange mit dem Originalchip machen: für wenige €s bekommt man AT Megas 328P mit Arduino boot loader. Dann gleich in der wesentlich komfortablere Arduino-welt weitermachen...
Lesezeichen