Hallo,
hab hier mal die beiden Motoren mit mittlerer Geschwindigkeit fahren lassen:
ich hoffe es hat dir geholfenCode:#include “asuro.h” int main(void) { Init(); MotorDir(FWD,RWD); //Parameter sind FWD, RWD, FREE, BREAK, jeweils für li und re MotorSpeed(120,120); //0…255 jeweils für li und re while(1); //Endlosschleife return 0; //Ende }
mfG Mattze
Edit:
Versuch mal die Motoren ein bisschen nachzuölen. Wenn diese einen hohen Piepston "aussenden" laufen sie meist zu schwer.
Ich habe mir die Arbeit gemacht und eine kleine Präsentation über die Befehle gestaltet. Bei Fehlern oder Anregungen bitte eine PN, danke!
Geändert von Mattze96 (24.04.2012 um 15:06 Uhr) Grund: Datei angefügt
Danke für die mühe aber hat leider nicht geholfen denn wie ich die motoren ansteuer weiß ich nur nicht wie das programm aussehen muss das er auch wirklich gradeaus fährt, also beide räder gleich schnell sind, da wenn man beiden Motoren den selben wert gibt das nicht gewärleistet ist
du musst es halt durch testen herausfinden. Wenn er eine linkskurve fährt musst du zb die werte von (120,120) auf (120,110) ändern sodass er links schneller fährt und dadurch geradeaus fährt. Wenn er eine rechtskurve macht dann genau anders rum. durch öfteres testen kannst du die differenz immer genauer bestimmen und auch bei deinem nächsten programm berücksichtigen.
Eine Frage: Welche Version der Asuro-Libary verwendest du?? Wenn du die neuste verwendest (2.80) kannst du die differenz direkt in myasuro.h eintragen und brauchst dir dann keinen Kopf mehr darüber zumachen ob der Asuro jetzt links oder rechts fährt.
mfG Mattze
Es soll doch auch irgendwie mit den Sensoren die am getriebe sind gehen (deswegen wurden doch die felder auf das zahnrad geklebt).
Ich benutze die standartsoftware die auf der disk war, weiß gar nicht wie man was anderes nutzt
hab grad keine zeit deshalb fass ich mich kurz:
Die Sensoren heißen Odometer:
Hier ein Prog: Ist bei den Erweiterungsbändern dabei:
Code:// ******************************************* // * Odometrie für ASURO * // * Fährt exakt geradeaus * // * * // * * // * (c) 2007 Robin Gruber * // * Details zum Code in: * // * "Mehr Spaß mit ASURO, Band II" * // ******************************************* #include "asuro.h" // Schwellwert fr die Hell/Dunkel-Unterscheidung // Eventuell muss damit etwas variiert werden #define TRIGGERLEVEL 600 #define HYSTERESIS 10 #define LOW 0 #define HIGH 1 int main(void) { unsigned int data[2]; signed int status[2]={0,0}; signed int difference=0; Init(); MotorDir(FWD, FWD); while(1) { // Helligkeitswerte der Lichtschranken auslesen OdometrieData(data); // Wechsel linker Sensor von niedrig auf hoch? if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) { status[0]=HIGH; difference++; } // Wechsel linker Sensor von hoch auf niedrig? if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) { status[0]=LOW; difference++; } // Wechsel rechter Sensor von niedrig auf hoch? if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) { status[1]=HIGH; difference--; } // Wechsel rechter Sensor von hoch auf niedrig? if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) { status[1]=LOW; difference--; } // zur Sicherheit: verhindern, dass der Differenzz�ler // den erlaubten Wertebereich verl�st if (difference<-255) difference=-255; if (difference>255) difference=255; // Status-LED noch entsprechend der erkannten Segmente // aufleuchten lassen, grn fr links, rot fr rechts StatusLED(status[0]+status[1]*2); // Z�ldifferenz passend auf die Motoren verteilen if (difference>0) MotorSpeed(255-difference,255); else MotorSpeed(255,255+difference); } return 0; }
Danke für das Prog. habe die geschwindigkeitswerte auf 120 gesetzt und er ist auch einigermaßen gradeaus gefahren aber hat noch immer einen rechtsdrall. werde das nochmal mit dem öl versuchen, vielleicht reiben die ja echt zu sehr.
Was mich auch wundert ist, dass bei dir das Init() fehlte, du nur die Anführungszeichen geändert hast und es jetzt klappt.
Kannst du dir/mir das erklären?
LG
Spacy Bar
Geändert von radbruch (06.06.2014 um 17:33 Uhr) Grund: veraltet
Lesezeichen