-         

Ergebnis 1 bis 7 von 7

Thema: NiboBee Genaue Kurven (90Grad etc)

  1. #1
    Neuer Benutzer
    Registriert seit
    01.01.2010
    Alter
    27
    Beiträge
    4

    NiboBee Genaue Kurven (90Grad etc)

    Anzeige

    Hi
    Ich hab mir vor kurzem den NiboBee gekauft und haben nun versucht ihm beizubringen genau kurven zu fahren.
    Meine Vorgehensweise:
    -Programm geschrieben welches ein Rad um eine Umdrehung dreht,(mit Odometriesensoren)
    -Winkel gemessen
    -in Odometrieschritte umgerechnet

    Dabei kam raus:
    Eine radumdrehung entspricht 55° und 19 "Odometrieschritten"
    Alle bisauf 45° gerundet:
    45°=15.5 (15 oder 16)
    90°=31
    180°=62
    225°=78
    270°=93
    315°=109
    360°=124
    Bei höreren Geschwindigkeiten gilt dies nicht weil die Reifen ersteinmal durchdrehen.
    Mein code Dazu
    Code:
    #include <nibobee/motpwm.h>
    #include <nibobee/delay.h>
    #include <nibobee/led.h>
    #include <nibobee/odometry.h>
    
    #define right 1
    #define left 2
    
    void dreh(uint8_t side,uint8_t steps)
    	{
    	odometry_reset();
    	
    	switch(side)
    		{
    		case left:	for (; odometry_getLeft(0)<steps; )	
    						{
    						motpwm_setLeft(300);
    						}
    					break;
    		case right:	for (steps=steps-1; odometry_getRight(0)<steps; )	
    						{
    						motpwm_setRight(300);
    						}
    					break;
    		}
    	motpwm_stop();
    	}
    			
    
    
    int main()
    	{
    	motpwm_init();
    	odometry_init();
    	sens_init();
    
    	while(1==1)
    		{
    		enable_interrupts();
    		delay(1000);	
    		dreh(left,124);
    		delay(1000);
    		dreh(right,124);
    		}
    	return(0);
    	}
    Ich denke der Code ist selbserklärend

    Marlon

    PS:Ich denke dass Kann man auch wunderbar in die Libarys einbauen, was mein ihr

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    15.12.2009
    Beiträge
    28
    Hallo,

    ich wollte deinen Code gerade testen, doch beim Übersetzen bekomme ich einige Fehlermeldung. Könntest du mir da helfen? Ich habe die aktuellste Library. Alle anderen Programme funktionieren fehlerfrei.

    Code:
    In file included from ../OdometrieKurve.c:1:
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/motpwm.h:64: error: expected ')' before 'value'
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/motpwm.h:71: error: expected ')' before 'value'
    In file included from ../OdometrieKurve.c:3:
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/led.h:48: error: 'IO_LEDS_BIT_L_YE' undeclared here (not in a function)
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/led.h:49: error: 'IO_LEDS_BIT_L_RD' undeclared here (not in a function)
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/led.h:50: error: 'IO_LEDS_BIT_R_RD' undeclared here (not in a function)
    C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projekte\OdometrieKurve\..\..\..\..\..\..\..\Programme\NIBObeeLib\include/nibobee/led.h:51: error: 'IO_LEDS_BIT_R_YE' undeclared here (not in a function)
    Viele Grüße,
    Manuel

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2009
    Beiträge
    20
    Hallo,

    diese Zeile fehlt

    #include <nibobee/iodefs.h>

    Dann klappts auch mit dem Nachbran (seinem Programm

    Viele Grüsse
    Skroete

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.12.2009
    Beiträge
    28
    Hallo,

    habe die Zeile hinzugefügt, es kommen jedoch immer noch genau diesselben Fehlermeldungen wie oben. Was stimmt denn hier nicht?

    Code:
    #include <nibobee/motpwm.h>
    #include <nibobee/delay.h>
    #include <nibobee/led.h>
    #include <nibobee/odometry.h>
    #include <nibobee/iodefs.h>
    
    
    #define right 1
    #define left 2
    
    void dreh(uint8_t side,uint8_t steps)
       {
       odometry_reset();
       
       switch(side)
          {
          case left:   for (; odometry_getLeft(0)<steps; )   
                      {
                      motpwm_setLeft(300);
                      }
                   break;
          case right:   for (steps=steps-1; odometry_getRight(0)<steps; )   
                      {
                      motpwm_setRight(300);
                      }
                   break;
          }
       motpwm_stop();
       }
             
    
    
    int main()
       {
       motpwm_init();
       odometry_init();
       sens_init();
    
       while(1==1)
          {
          enable_interrupts();
          delay(1000);   
          dreh(left,124);
          delay(1000);
          dreh(right,124);
          }
       return(0);
       }
    Viele Grüße,
    Manuel

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    So kann ich das Programm fehlerfrei übersetzen:
    Code:
    // nibobee: Drehwinkel vorgeben                                 3.1.2010 Marlon
    
    // aus: http://www.roboternetz.de/phpBB2/viewtopic.php?t=51895
    
    // Eine Radumdrehung entspricht 55° und 19 "Odometrieschritten"
    // Alle auf 45° gerundet:
    // 45°=15.5 (15 oder 16)
    // 90°=31
    // 180°=62
    // 225°=78
    // 270°=93
    // 315°=109
    // 360°=124
    
    
    #include <nibobee/iodefs.h>
    #include <nibobee/base.h>
    #include <nibobee/motpwm.h>
    #include <nibobee/delay.h>
    //#include <nibobee/led.h>
    #include <nibobee/odometry.h>
    
    #define right 1
    #define left 2
    
    void dreh(uint8_t side,uint8_t steps)
    {
    	//steps*=2; // meine bee hat 8 Löcher in den Codescheiben
    	odometry_reset();
    
       switch(side)
    	{
    		case left:   for (; odometry_getLeft(0)<steps; )
    		{
    			motpwm_setLeft(300);
    		}
    		break;
          case right:   for (steps=steps-1; odometry_getRight(0)<steps; )
    		{
    			motpwm_setRight(300);
    		}
    		break;
    	}
       motpwm_stop();
    }
    
    int main(void)
    {
    	motpwm_init();
    	odometry_init();
    	enable_interrupts();
    	delay(2000); // wait4programmer
    
    	while(1)
    	{
    		delay(1000);
    		dreh(left,124);
    		delay(1000);
    		dreh(right,124);
    	}
       return(0);
    }
    Die Werte passen bei mir so ungefähr.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.12.2009
    Beiträge
    28
    Hallo,

    danke! So funktioniert es. Keine Ahnung wo der Fehler lag.

    Viele Grüße,
    Manuel

  7. #7
    Neuer Benutzer
    Registriert seit
    01.01.2010
    Alter
    27
    Beiträge
    4
    Ja kann sein das die Werte nicht ganz genau sind.

    ja stimt es fehlt die iodefs.h aber bei mir geht es auch ohne...
    und die led.h ist noch drin von dem vorigem Programm.

Berechtigungen

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