Problem:
Du lässt den Bot erst nach vorne fahren, fragst dann den ADC ab. Wenn dieser über 450 ist, dann fährst du rückwärts. Sollte also stimmen.
bleibt offen:
Ist der ADC Wert für den Sensor richtig? Welcher Entfernung entsprechen denn 450?
Probiere es mal so:
Code:
$crystal = 8000000
$regfile = "m8def.dat"
Dim Result As Word
Config Pinb.0 = Output
Config Pind.7 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Start Adc
Do
Compare1a = 255
Compare1b = 255
Portb.0 = 1
Portb.1 = 0
Portd.7 = 0
Portb.2 = 1
Result = Getadc(6)
If Result > 450 Then
Compare1a = 255
Compare1b = 255
Portb.0 = 0
Portb.1 = 1
Portd.7 = 1
Portb.2 = 0
wait 1
End If
Loop
End
Der Abschnitt mit den "waitms 1000" und dem danach ist nicht wichtig. (Das kann man kürzen. Hab ich gemacht.)
Und auch kannst du wahrscheinlich die interne Referenzspannung verwenden, da die meisten Sensoren maximal 2,6 Volt liefern. So ist du Auflösung genauer.
jon
Lesezeichen