oh sry habe den falschen button benutzt!!
Code:
/*Geradeaus fahren*/
#include "asuro.h"
#define TRIGGERLEVEL 390
#define HYSTERESIS 6
#define LOW 0
#define HIGH 1
int main(void)
{
unsigned int data[2];//Variable für Odometrie
signed int status[2]={0,0};//Variable für Status HIGH or LOW
signed int difference=0;//Zählvariable
unsigned int distance=0;
Init();
MotorDir(FWD,FWD);
while(1) {
//Heligkeitswerte der Lichtschranken auslesen
OdometrieData(data);
//Wechsel LINKER Sensor von niedrig auf hoch
if ((status[0]==LOW) && (data[0]>TRIGGERLEVEL+HYSTERESIS)) {
status[0]==HIGH;
difference++;
distance++;}
//Wechsel LINKER Sensor von hoch auf niedrig
if ((status[0]==HIGH) && (data[0]<TRIGGERLEVEL-HYSTERESIS)) {
status[0]==LOW;
difference++;
distance++;}
//Wechsel RECHTER Sensor von niedrig auf hoch
if ((status[1]==LOW) && (data[1]>TRIGGERLEVEL+HYSTERESIS)) {
status[1]==HIGH;
difference--;}
//Wechsel RECHTER Sensor von hoch auf niedrig
if ((status[1]==HIGH) && (data[1]<TRIGGERLEVEL-HYSTERESIS)) {
status[1]==LOW;
difference--;}
//Sicherheitssperre für Zählvariable
/**********************************************************/
//Wertebereich größer als 255
if (difference>255) {
difference=255;}
//Wertebereich kleiner als -255
if (difference<-255) {
difference=-255;}
//Zähldifferenz auswerten:
//Motoren passend betreiben
/*********************************************************/
//links schneller Drehen ==> links um difference verlangsamen
if (difference>0) {
MotorSpeed(150-difference,150);}
//sonst rechts um difference beschleunigen
else {MotorSpeed(150,150+difference);}
if (distance>=67){
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);}
}
return 0;
}
Lesezeichen