- 3D-Druck Einstieg und Tipps         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: Odometrie Problem [Hirn Fatal ERROR]

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128

    Odometrie Problem [Hirn Fatal ERROR]

    Anzeige

    Praxistest und DIY Projekte
    Hi leute,
    ich hab mich nun an die Odometrie gewagt um gleich entäuschung zu erleben
    ich steh heute mit dem gesammten prggen iwie auf dem schlauch sry xD
    hier der code:
    Code:
    #include "asuro.h" // Linienverfolgung auf die einfachste Art
    
    unsigned int data[2];
    unsigned char s[5] = "thze\0";
    
    	void PrintCharR(unsigned int x)
    	   {
    		  unsigned char einer, zehner, huni, tausend;
    		  x = data[1];
    		  
    		  einer=x%10;
    		  zehner=(x-einer)/10;
    		  huni=(x-(zehner*10+einer))/100;  //nicht mit %, da "%" zu viel speicher brauch
    		  
    		  if((x == 1000) || (x > 1000))
    				tausend= 1;
    		  else
    				tausend= 0;
    				
    		  s[0]=huni+'0';
    		  s[1]=zehner+'0';
    		  s[2]=einer+'0';
    		  s[3]=tausend+'0';
    		  
    		  SerWrite(s,5);
    	   }
    	   
    
    int main(void)
    {
    	Init();
    	
    	unsigned char a[4];
    	int i=0;
    	
    	while(1)
    	{ 								
    		OdometrieData(data); // aktuelle Helligkeitswerte der Fototransistoren einlesen
    		
    		SerWrite("Rechter Fototransistor: ",24); //Wert des Rechten Fototranistors Senden
    		PrintCharR(a);
    		SerWrite("\r\n\n",3);
    		
    		for (i=0; i<2000; i++)		//5 Sekunden Pause 
    			{
    				Sleep(72);
    			}
    	}
    	return 0;
    	
    }
    iwas passt nicht..

    zwar: ich möchte zunächst die Odometrie von "von hand" testen. d.h. der asouro sol über serwrite alle paar sec. den odo wert über IR senden..

    ich werde das rad von hand bewegen um schwarze bzw. weise fläche anzuzeigen...

    iuch hoffe ihr könnt mir helfen.. und versteht was ich meinxD

    gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    tausend = x/1000;
    x = x%1000;
    hunni = x/100;
    x = x%100;
    zehner = x/10;
    x = x%10;
    einer = x;

    du arbeitest hier mit ganzahldivision also brauchste nachkomma net beachten

  3. #3
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    diese prozedur dauert dafür SEHR lange und ist extrem speicherfressend...
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    Zitat Zitat von damaltor
    diese prozedur dauert dafür SEHR lange und ist extrem speicherfressend...
    wenn Ceos' möglichkeit nicht so ideal ist, was für möglichkeiten gibt es dann noch??

    plz help me :P

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    das würede mich auch uinterssieren ... vor allem WAS ist so speicehrfressend ? das modulo ?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    Zitat Zitat von Ceos
    das würede mich auch uinterssieren ... vor allem WAS ist so speicehrfressend ? das modulo ?
    jap, das modul ist speicherfressend, aber es muss ja noch andere möglichkeiten geben, meine sollte eig. funktionieren. aber da ist irgendwo ein "Hintergrund fehler" drinne. ich steh zz auf dem schlauch *schnell mal hinsetz*

    das mit dem modul wuste ich shcon, aus nem versuch der Linienfolgung (siehe anderer Tread von mir)

    an was liegt das mein code nicht funzt?

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Milda
    Alter
    37
    Beiträge
    4.063
    modulo benutzt fliesskomma-arithmetik. das dauert sehr lange und braucht speicher. funktionieren sollte es trotzdem, auch wenn eine bemerkbare pause an dieser stelle auftreten kann.
    Read... or die.
    ff.mud.de:7600
    Bild hier  

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Hallo listner,

    wie wäre es einfach mit den Funktionen aus der LIB:

    Code:
    void UartPutc (
      unsigned char zeichen)
    {
      UCSRB  = 0x08;                        // enable transmitter
      UCSRA |= 0x40;                        // clear transmitter flag
      while (!(UCSRA & 0x20))               // wait for empty transmit buffer
        ;
      UDR = zeichen;
      while (!(UCSRA & 0x40))               // Wait for transmit complete flag (TXC)
        ;
    }
    
    
    void SerPrint (
      unsigned char *data)
    {
      unsigned char i = 0;
    
      while (data [i] != 0x00)
        UartPutc (data [i++]);
    }
    
    
    void PrintInt (
      int wert)
    {
      char text [7];                        // "-12345"
    
      itoa (wert, text, 10);
      SerPrint (text);
    }
    Ist zwar auch nicht der winzigklein-Programmcode, aber im Moment scheint dein Programm ja noch nicht allzu lang zu sein

    Du nutzt dann void "PrintInt (data[0]);" in deinem main(), und gut ist. Hoffe ich.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    an dem sleep erkennt man das er nicht die 2.7er asurolib benutzt also wird er das vermutlich nicht haben

    EDIT um diesem post noch einen sinn zu verleihen ... lad dir die asuro lib 2.71 installier sie und arbeite damit, da ist n haufen zeug bei was du brauchen kannst

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.07.2005
    Alter
    33
    Beiträge
    128
    @ ceos
    ich möchte gerne ohne die neuen libs arbeiten, dies ist der grund damit ich proggen besser leren. desshalb versuche ich "alles" selber zu schreiben
    :P ich hoffe das ist i.o.
    kann mir noch jemand helfen :P

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test