Hi Leute,
ich hab mich mal wieder an meinen NIBO2 gewagt um etwas zu programmieren.
Das Programm, soll den Nibo solange geradeaus fahren lassen, bis der Wert des copro_distance[2] größer als 3 wird.
Aber, der Motor schaltet irgendwie nicht ab. (letztendlich geht es nur um den unteren teil des Programms).
Code:
#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <nibo/copro.h>
#include <nibo/delay.h>
#include <nibo/iodefs.h>
#include <nibo/bot.h>
#include <avr/interrupt.h>
#include <nibo/spi.h>
#include <stdio.h>
#include <nibo/leds.h>
#include <stdint.h>
#include <nibo/pwm.h>



int main() {
sei();
bot_init();
spi_init();
display_init();
leds_init ();
pwm_init ();
//-------------------------------------------------------
copro_ir_startMeasure();


//-------------------------------------------------------
leds_set_headlights (1024);                                        //Frontlicht setzen
leds_set_status(LEDS_GREEN, 2);
leds_set_status(LEDS_GREEN, 3);
//-------------------------------------------------------

void blinker_links () {                                            // Blinker Links definieren
int a = 1;
while (a<=10){
leds_set_status (LEDS_ORANGE, 0);
leds_set_status (LEDS_ORANGE, 1);
delay (100);
leds_set_status (LEDS_OFF, 0);
leds_set_status (LEDS_OFF, 1);
delay (100);
a++;
}
}
//-------------------------------------------------------
void blinker_rechts () {
int b = 1;
while(b<=10)                                                    // Blinker Rechts definieren
{
leds_set_status (LEDS_ORANGE, 4);
leds_set_status (LEDS_ORANGE, 5);
delay (100);
leds_set_status (LEDS_OFF, 4);
leds_set_status (LEDS_OFF, 5);
delay (100);
b++;
}
}
//-------------------------------------------------------
void warnblinker () {
int c = 1;
while(c<=10)                                                    // Warnblinker definieren
{
leds_set_status (LEDS_ORANGE, 0);
leds_set_status (LEDS_ORANGE, 1);
leds_set_status (LEDS_ORANGE, 4);
leds_set_status (LEDS_ORANGE, 5);
delay (100);
leds_set_status (LEDS_OFF, 0);
leds_set_status (LEDS_OFF, 1);
leds_set_status (LEDS_OFF, 4);
leds_set_status (LEDS_OFF, 5);
delay (100);
c++;
}
}
//-------------------------------------------------------        
copro_ir_startMeasure();
copro_setSpeedParameters(5, 6, 7);


void motor_geradeaus (){
while(1==1){
copro_setSpeed(20, 20);
}
}
//-------------------------------------------------------

while(1==1){
delay(10);
char text[20]="-- -- -- -- --";
// Co-Prozessor
if (copro_update()) {
sprintf(text, "x x x x x",
(uint16_t)copro_distance[0]/256,
(uint16_t)copro_distance[1]/256,
(uint16_t)copro_distance[2]/256,
(uint16_t)copro_distance[3]/256,
(uint16_t)copro_distance[4]/256);


while(copro_distance[2]<3){
motor_geradeaus ();
}
}
}
return 0;
}
mfg freekwave