Hallo zusammen,
die Installation (bei mir unter Windows 7) mit den NEUESTEN Programmen hat bei mir tadellos funktioniert. Super finde ich die Kalibierfunktion, die Linien- und Odometriesensoren einstellen soll. Als Nachteil könnte sich das etwas kurze USB-Kabel herausstellen, für mich als Notebookuser ist das allerdings eher vorteilhaft.
Kompilieren und Flashen der im "Tutorial" angegebenen Testprogramme klappt ebenfalls.
Nun wollte ich das letzte Woche vorgestellte Linienverfolgungsprogramm testen um die Kalibrierung zu überprüfen:
Code:
#include <nibobee/iodefs.h>
#include <nibobee/motpwm.h>
#include <nibobee/analog.h>
#include <nibobee/line.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main() {
activate_output_group(IO_LEDS); // LED bits als Output
motpwm_init();
motpwm_setLeft(0);
motpwm_setRight(0);
analog_init();
line_readPersistent();
set_output_group(IO_SENS); // Pull-ups aktivieren
activate_output_bit(IO_LINE_EN);
int16_t speed_flt_l=0;
int16_t speed_flt_r=0;
// Countdown: LEDs blinken lassen
for (uint8_t i=0; i<10; ++i) {
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
_delay_ms(10);
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
_delay_ms(990);
}
led_set(LED_L_YE, 1);
led_set(LED_R_YE, 1);
_delay_ms(1000);
led_set(LED_L_YE, 0);
led_set(LED_R_YE, 0);
// Hauptschleife:
while(1) {
sei();
_delay_ms(1);
int16_t speed_l=0;
int16_t speed_r=0;
int16_t lval = line_get(LINE_L);
int16_t cval = line_get(LINE_C);
int16_t rval = line_get(LINE_R);
if (lval+cval+rval < 20) {
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 0);
speed_r=0, speed_l=0;
} else if ((lval<cval) && (lval<rval)) {
// lval is minimum
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 0);
speed_r=550, speed_l=450-1*(cval-lval);
} else if ((rval<cval) && (rval<lval)) {
// rval is minimum
led_set(LED_L_RD, 0);
led_set(LED_R_RD, 1);
speed_r=450-1*(cval-rval), speed_l=550;
} else {
// cval is minimum
led_set(LED_L_RD, 1);
led_set(LED_R_RD, 1);
speed_r=750 + 1*(rval-cval), speed_l=750 + 1*(lval-cval);
}
speed_flt_l*=3; speed_flt_l+=speed_l; speed_flt_l/=4;
speed_flt_r*=3; speed_flt_r+=speed_r; speed_flt_r/=4;
motpwm_setLeft(speed_flt_l);
motpwm_setRight(speed_flt_r);
}
return 0;
}
Ich kriege aber leider Fehler:
Code:
Build started 14.11.2009 at 16:39:31
avr-gcc -I"C:\Users\HP\Documents\NibobeeTest\..\..\..\..\Program Files\NIBObeeLib\include" -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=15000000UL -Os -fsigned-char -D_NIBOBEE_ -MD -MP -MT NibobeeTest.o -MF dep/NibobeeTest.o.d -c ../NibobeeTest.c
avr-gcc -mmcu=atmega16 NibobeeTest.o -L"C:\Program Files\NIBObeeLib\lib" -lnibobee_base -lnibobee_utils -lnibobee_line -o NibobeeTest.elf
C:\Program Files\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_calibrateBlack':
line.c:(.text.line_calibrateBlack+0x4): undefined reference to `delay'
C:\Program Files\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_calibrateWhite':
line.c:(.text.line_calibrateWhite+0x4): undefined reference to `delay'
make: *** [NibobeeTest.elf] Error 1
Build failed with 2 errors and 0 warnings...
Weiss jemand, warum?
Lesezeichen