So, dass ist der bisherige Code, auch wenn er noch nicht fertig ist, da gefällt mir deiner wesentlich besser. Kann man ihm da eigentlich sagen, dass er anhalten soll wenn der Wert so und so hoch ist. Nicht dass er schon anhält, wenn er nur eine kleine Wärmequelle hat.
Danke für deine Bemühungen
Code:#include "asuro.h" #define THRESH1 20 ; Schwellen für die intensitätsabhängige Geschwindigkeit #define THRESH2 80 #define THRESH3 200 void ThermalData (unsigned int *data) { ADMUX = (1<<REFS0) | (1<<REFS1) | IR_LEFT // Multiplexer auf linken Sensor schalten ADCSRA|= (<<ADSC) // Wandlung starten while (!(ADCSRA & 81<<ADIF))) // Warten, bis Wandlung beendet ist ADCSRA |= (1<<ADIF) ;// ADCIF zurück setzen data[0]= ADCL + (ADCH <<8)// ADC-Wert auslesen ADMUX= (1<<REFS0)| (1<< REFS1) | IR_Right // Multiplexer auf rechten Sensor schalten ADSCRA|= (1<<ADSC) // Wandlung starten while (!(ADCSRA & (1<<ADIF))) // Warten bis Wandlung beendet ADCSRA |= (1<<ADIF) // ADCIF zurücksetzen data[1] = ADCL + (ADCH<<8)// ADC-Wert auslesen } int main (volid) { // Speicher für die Messwerte bereitstellen unsigned int tdata[2] unsigned int speed signed int diff,sum Int() //Motoren immer auf vorwärts MotorDir(FWD,FWD) while(1) { //Messwerte einlesen ThermalData(tdata) //Die Summe der Werte wird für die Berechnung der Geschwindigkeit genutzt sum=data[0]+tdata[1] //Signal stark genug? if (sum>THRESH1) { StatusLED(GREEN) speed=140 //Ziemlich stark? if (sum>THRESH2) { StatusnLED(YELLOW) speed=200 } //Sehr stark? if(sum>THRESH3) { StatusLED(RED) speed=255 } //Richtung bestimmen diff=((signed)tdata[0]-(signed)tdata[1])*32/sum if (diff>4) { //Links deutlich wärmer? Nach links fahren! BackLED (ON,OFF) MotorSpeed(0,speed) } else { //Sonst geradeaus! BackLED(OFF,OFF) MotorSpeed(speed,speed) } } } return 0 }
Wie gesagt, den Code habe ich so aus dem Buch heraus geschrieben. Den wollte ich benutzen und dann verändern wie ich ihn brauche.Code:Build started 10.5.2010 at 18:31:08 avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT asuroniklas.o -MF dep/asuroniklas.o.d -c ../asuroniklas.c ../asuroniklas.c:1:19: error: asuro.h: No such file or directory ../asuroniklas.c: In function 'ThermalData': ../asuroniklas.c:7: error: 'ADMUX' undeclared (first use in this function) ../asuroniklas.c:7: error: (Each undeclared identifier is reported only once ../asuroniklas.c:7: error: for each function it appears in.) ../asuroniklas.c:7: error: 'REFS0' undeclared (first use in this function) ../asuroniklas.c:7: error: 'REFS1' undeclared (first use in this function) ../asuroniklas.c:7: error: 'IR_LEFT' undeclared (first use in this function) ../asuroniklas.c:8: error: expected ';' before 'ADCSRA' ../asuroniklas.c:9: error: expected statement before ')' token ../asuroniklas.c:10: error: 'ADCSRA' undeclared (first use in this function) ../asuroniklas.c:10: error: 'ADIF' undeclared (first use in this function) ../asuroniklas.c:11: error: 'ADCL' undeclared (first use in this function) ../asuroniklas.c:11: error: 'ADCH' undeclared (first use in this function) ../asuroniklas.c:12: error: expected ';' before 'ADMUX' ../asuroniklas.c: In function 'main': ../asuroniklas.c:19: warning: type of 'volid' defaults to 'int' ../asuroniklas.c:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned' ../asuroniklas.c:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'signed' ../asuroniklas.c:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Int' ../asuroniklas.c:34: error: stray '\374' in program ../asuroniklas.c:34: error: stray '\344' in program ../asuroniklas.c:34: error: stray '\344' in program ../asuroniklas.c:63: error: expected ';' before '}' token ../asuroniklas.c:23: warning: unused variable 'diff' make: *** [asuroniklas.o] Error 1 Build failed with 21 errors and 2 warnings...







Zitieren

Lesezeichen