Zitat von
workwind
Programmcode für die Linienfolge aus dem Video:
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;
}
Hi Leute,
habe heute für mich ein großes, aber für euch bestimmt ein kleines problem. Und zwar habe ich diesen Quellcode kopiert und dann versucht mit AVR zu Compilieren, aber da bekomme ich folgende Fehlermeldung:
Code:
Build started 13.4.2010 at 08:33:50
avr-gcc -I"C:\Programme\NIBObeeLib\include" -mmcu=atmega16 -Wall -gdwarf-2 -std=gnu99 -D_NIBOBEE_ -DF_CPU=15000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT NibobeeTest.o -MF dep/NibobeeTest.o.d -c ../N
ibobeeTest.c
avr-gcc -mmcu=atmega16 -Wl,-Map=NibobeeTest.map NibobeeTest.o -L"C:\Programme\NIBObeeLib\lib" -lnibobee_line -lnibobee_base -lnibobee_utils -o NibobeeTest.elf
C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_readPersistent':
line.c:(.text.line_readPersistent+0x10): undefined reference to `__eerd_block'
C:\Programme\NIBObeeLib\lib\libnibobee_line.a(line.o): In function `line_writePersistent':
line.c:(.text.line_writePersistent+0x10): undefined reference to `__eewr_block'
make: *** [NibobeeTest.elf] Error 1
Build failed with 2 errors and 0 warnings...
Ps.: ich möchte erreichen, dass er im Endeffekt einen Parcour abfahren kann und dies brauche ich für meinen Informatik Leistungskurs.
MfG & vielen Dank im voraus Leute
Lesezeichen