Also habe jetzt gemessen habe den multie an masse gehalten dann die spannung gemessen wenn ich ein teelämpchen vor halte sind es 1,87 volt an beiden pins (ADC2und3) und wenn ich eine kalte flasche sprudel davor halte ist die Spannung auf 0 Volt. V+2 und V+1 sind kontinuerlich auf 10,53 Volt
Habe den Quelltext mal geändert für die auswertung
Das funktioniert aber leider auch nicht ich weiss nemmer weiterCode:#include "asuro.h" #define THRESH1 20 #define THRESH2 80 #define THRESH3 200 void ThermalData(unsigned int *data) { ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[0] = ADCL + (ADCH << 8); ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT; ADCSRA |= (1 << ADSC); while (!(ADCSRA & (1 << ADIF))); ADCSRA |= (1 << ADIF); data[1] = ADCL + (ADCH << 8); } int main(void) { unsigned int tdata[2],offset[2]; unsigned int speed; signed int diff,sum; Init(); DDRD&=~(1<<6); PORTD|=(1<<6); MotorDir(FWD,FWD); offset[0]=0; offset[1]=0; while(1); { ThermalData(tdata); if ((PIND&(1<<6))==0){ offset[0]=tdata[0]; offset[1]=tdata[1]; } if (tdata[0]>offset[0]) tdata[0]-=offset[0]; else tdata[0]=0; if (tdata[1]>offset[1]) tdata[1]-=offset[1]; else tdata[1]=0; sum=tdata[0]+tdata[1]; if (sum>THRESH1) { StatusLED(GREEN); speed=140; if (sum>THRESH2) { StatusLED(YELLOW); speed=200; } if (sum>THRESH3) { StatusLED(RED); speed=255; } diff=((signed)tdata[0]-(signed)tdata[1])*32/sum; if (diff>4) { BackLED(ON,OFF); MotorSpeed(0,speed); } else if (diff<-4) { BackLED(OFF,ON); MotorSpeed(speed,0); } else { BackLED(OFF,OFF); MotorSpeed(speed,speed); } } else { StatusLED(OFF); BackLED(OFF,OFF); MotorSpeed(0,0); } } return 0; }







Zitieren
Lesezeichen