Archiv verlassen und diese Seite im Standarddesign anzeigen : NiboBee Genaue Kurven (90Grad etc)
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
#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
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.
In file included from ../OdometrieKurve.c:1:
C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\include/nibobee/motpwm.h:64: error: expected ')' before 'value'
C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\include/nibobee/motpwm.h:71: error: expected ')' before 'value'
In file included from ../OdometrieKurve.c:3:
C:\Dokumente und Einstellungen\Manuel\Desktop\Manuel\NIBOBee\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\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\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\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\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\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\Projek te\OdometrieKurve\..\..\..\..\..\..\..\Programme\N IBObeeLib\include/nibobee/led.h:51: error: 'IO_LEDS_BIT_R_YE' undeclared here (not in a function)
Viele Grüße,
Manuel
Hallo,
diese Zeile fehlt
#include <nibobee/iodefs.h>
Dann klappts auch mit dem Nachbran (seinem Programm
Viele Grüsse
Skroete
Hallo,
habe die Zeile hinzugefügt, es kommen jedoch immer noch genau diesselben Fehlermeldungen wie oben. Was stimmt denn hier nicht?
#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
radbruch
03.01.2010, 16:39
So kann ich das Programm fehlerfrei übersetzen:
// nibobee: Drehwinkel vorgeben 3.1.2010 Marlon
// aus: https://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
Hallo,
danke! So funktioniert es. Keine Ahnung wo der Fehler lag.
Viele Grüße,
Manuel
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.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.