Guten Tag!
wie man unschwer erkennen kann bin ich neu hier. wir haben den asuro als projekt gerade in der schule. ich habe zwar ahnung von c programmieren und einen atmega8 kann ich auch programiernen, aber der asuro bereitet mir echt schwierigkeiten. vllt. kann mir hier jmd. helfen.

ich möchte dass der asuro geradeaus fährt und bei kollisionen umdreht. dafür hab ich schon im forum gesucht, doch nix pasendes gefunden.

Code:
#include "asuro.h" 
#include <stdlib.h>
#include "test.h"


int main(void) 
{ 
unsigned char speed, flagl = TRUE, flagr = FALSE, stop = FALSE; 
unsigned int data[2]; 
int wegl, wegr, diff; 
int speedLeft, speedRight;
int taste = 0, taste1 = 0, taste2 = 0;

   Init();
   
   MotorDir(FWD,FWD);
   
   do
   {
   StatusLED(GREEN);
   
   speed = 200; 
   speedLeft = speedRight = speed;
   
   wegl=0; wegr=0;
   
   do
   { 
      OdometrieData(data);
	  
      if ((data[0] < 550) && (flagl == TRUE)) {flagl = FALSE; wegl++;} 
      if ((data[0] > 650) && (flagl == FALSE)) {flagl = TRUE; wegl++;} 
      if ((data[1] < 550) && (flagr == TRUE)) {flagr = FALSE; wegr++;} 
      if ((data[1] > 650) && (flagr == FALSE)) {flagr = TRUE; wegr++;} 
      
	  diff=wegr-wegl; 
      
	  if (diff>0) speedRight--;
		
		else if (diff<0) speedLeft--;
		 
         else {speedRight=speed; speedLeft=speed;}
		 
      if (speedRight<0) {speedRight=0;} 
	  
      if (speedLeft<0) {speedLeft=0;}
	  
      MotorSpeed(speedLeft,speedRight);
	
	taste = PollSwitch();
	//taste1 = PollSwitch();
	//taste2 = PollSwitch();
	
	if (taste > 0) {stop = TRUE;}
   } 
   while(stop == FALSE);
   
   Hindernis(taste, speedLeft, speedRight);
   }
   while(1);
}
Code:
void Hindernis (int TASTER, int RIGHT, int LEFT);

void Hindernis (int TASTER, int RIGHT, int LEFT)
{
	if (TASTER >= 8) {BackLED(ON,OFF);}
	else {BackLED(OFF,ON);}
	
	StatusLED(YELLOW);
		
	MotorDir(RWD,RWD);
	
	MSleep(250);
	
	if (TASTER >= 8) {MotorDir(FWD,RWD); MotorSpeed(255,128); MSleep(600);}
	else {MotorDir(RWD,FWD); MotorSpeed(255,128); MSleep(600);}	
	
	MotorSpeed(0,0);
	
	MSleep(50);
	
	StatusLED(GREEN);
	
	MotorDir(FWD,FWD);
	
	MotorSpeed(LEFT,RIGHT);
}
mein prob ist einfach, dass er nur das macht, wenn eine taste gedrückt ist. und nicht den rest.

hoffe mir kann jmd. helfen.

the~©€¥