hallo,
@matze: also du hast schon recht, da ha ich was übersehen. allerdings klappt das auch nicht, wenn ic hden code entsprechend ändere:
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>=335){
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);}
}
return 0;
}
@pinsel: also mein asuro verfolgt ja so eine linie, allerdings nicht mehr wenn ich vresuche mit der variablen distance die strecke zu definieren zu versuche,
läuft denn test.hex auf euren asuros?
Lesezeichen