- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: odometrie verständniss problem

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    16.06.2009
    Beiträge
    38
    Anzeige

    E-Bike
    Hi
    vorher 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.
    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 gedownoadet


    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??
    Code:
    #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);
    	}
    THX

  2. #12
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    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]


    Ich muss ja die wechsel in einer bestimmten zeit zählen
    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:

    Code:
    // neue Zeitfunktion
    unsigned long Gettime(void)
    {
    return ((timebase*256)+count36kHz)/36;
    }
    Das Schema:

    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!

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests