Hi
das hab ich schon durchgelesen und die neue lib hab ich auch.. hab nur nie ne html datei gehabt sondern immer nur ein programm( hab wohl das falsche gedownoadetvorher diesen Thread durchzulesen. GAAANZ. Hast Du die BAU- UND BEDIENUNGSANLEITUNG des asuro nicht? Da stehen doch die wichtigsten Funktionen drin ab Punkt 9.2 - allerdings für eine etwas betagte Bibliothek.
![]()
hab jetzt aber mal doch was zusammenprogrammiert (ohne vorher die bibliothek gelesen zu haben)
ist bestimmt grottenfalsch aber erscheint mir irgendwie logisch..
kann mir jemand sagen wo meine denkfehler liegen??
THXCode:#include "asuro.h" unsigned int data[2]; unsigned int Zähler_l=0; unsigned int Zähler_r=0; unsigned int odo_1l , odo_2l; unsigned int odo_1r , odo_2r; int Speed_l ,Speed_r; int i; main(void) { init(); Speed_l=150; Speed_r=150; MotorDir(FWD,FWD); MotorSpeed(Speed_l,Speed_r); for(i=0;i<10;i++) { OdometrieData(data[0])=odo_1l; /* 1.mal linker Odometrie Wert abfragen*/ OdometrieData(data[0])=odo_2l; /* 2.mal linker Odometrie Wert abfragen*/ if((odo_1l<500 && odo_2l>500) || (odo_1l>500 && odo_2l<500)) /*wenn Schwelle da, dann Zähler+1 */ Zähler_l++; } for(i=0;i<10;i++) { OdometrieData(data[1])=odo_1r; /* das selber für rechts*/ OdometrieData(data[1])=odo_2r; if((odo_1r<500 && odo_2r>500) || (odo_1r>500 && odo_2r<500)) Zähler_r++; } if(zähler_l>zähler_r) { /* wenn links mehr wechsel dann links langsamer*/ MotorSpeed(Speed_l-5;Speed_r) } else if(zähler_l<zähler_r) { /*wenn rechts mehr wechsel dann rechts langsamer*/ MotorSpeed(Speed_l;Speed_r-5) } else if(zähler_l=zähler_r) {/* wenn rechts gleichviele wechsel wie links dann ischs gud*/ MotorSpeed(Speed_l;Speed_r) while(1); return(0); }
Hallo
[Abschweif]
Die Library für den asuro wurde über längere Zeit weiterentwickelt. Sehr praktisch war dabei die Einführung von PrintInt() und Msleep() und die Umstellung auf den 36kHz-Takt für Sleep(). Die wichtigste Erweiterung (aus meiner Sicht) war die Modifikation des Timers zur IR-Abstandsmessung durch waste ab Version 2.3. Es wurden zu dieser Zeit zwar auch Erweiterungen für die Taster- und Encoderauswertungen eingeführt, diese fanden aber keine breite Anwendung (ich habe darüber bisher kaum etwas gelesen). Ab Version 2.6 entwickelte sich die Lib immer weiter weg von der Hardware des asuro, hauptsächlich die neuen Motorfunktionen entfernen sich immer mehr von der klassischen Odometrie der Ur-Lib. Deshalb verwende ich die Version 2.3 und bin eigentlich glücklich damit :) Alle Versionen gibt's hier zum Download:
http://sourceforge.net/projects/asuro/files/AsuroLib
Der Einstieg zur aktuellen Lib befindet sich hier:
https://www.roboternetz.de/phpBB2/vi...=275614#275614
[/Abschweif]
Seit ca. V2.2 gibt es die Funktion Gettime(), sie liefert als LongInt die Zeit in Millisekunden seit dem Systemstart. Damit kann man wunderbar nichtblockierend Zeiten messen:Ich muss ja die wechsel in einer bestimmten zeit zählen
Das Schema:Code:// neue Zeitfunktion unsigned long Gettime(void) { return ((timebase*256)+count36kHz)/36; }
unsigned long merke_startzeit, gebrauchte_zeit;
merke_startzeit=Gettime();
Mache_irgendwas;
gebrauchte_zeit=merke_startzeit-Gettime();
Für kürzere Zeiten (<1ms) kann man auch direkt auf timebase und count36kHz zugreifen, aber das ist dann schon eher Expert-Level ;)
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen