Danke für die Links, oberallgeier.
Ich habe mich jetzt dazu entschieden, den Sensor auf dem Servo immer auf 0 (100) zu stellen. Sobald der Sensor aber etwas "sieht", soll der Roboter stehen bleiben, auf beide seiten den Servo schwenken (50-150), zwei messerte nehmen, und beide vergleichen, bei dem der weniger hoch ist, soll der Roboter hinfahren. Also quazi soll der Roboter den "Besten Weg" finden. Ich weiss, die Sensoren sind nur auf 30cm ausgelegt, trotzdem soll es dem Roboter helfen, sich nicht in eine Ecke zu verfahren.
Ich habe das Programm geschriben. Jedoch funktioniert das mit dem Servo noch nicht so ganz. Es schlägt nur auf eine Seite aus.
Der Sensor ist bei der Servoposition "100" nach gerade aus gerichtet.
Könntest du mal bitte kruz drüber schauen? *Keks gib*
Code:$regfile "m16def.dat" $crystal = 16000000 $baud = 9600 $swstack = 16 $hwstack = 16 $framesize = 16 Dim A As Word Dim B As Word Dim C As Word Dim X As Word Dim Y As Word Dim Z As Word Config Portd.4 = Output Config Portd.5 = Output Config Porta.4 = Output Config Porta.5 = Output Config Porta.6 = Output Config Portc.7 = Output Config Portc.6 = Output Config Portc.5 = Output Config Portb.2 = Output M1 Alias Porta.5 M2 Alias Porta.6 M3 Alias Portc.6 M4 Alias Portc.5 Config Servos = 1 , Servo1 = Portb.2 , Reload = 10 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1 Enable Interrupts Servo(1) = 100 Wait 1 Do Pwm1a = 64 Pwm1b = 64 A = Getadc(1) B = Getadc(2) C = Getadc(3) If A > 250 Then Gosub Brems Waitms 500 Gosub Rueck Waitms 200 Gosub Rueckr Waitms 400 Else Gosub Vor End If If B > 250 Then Gosub Brems Waitms 500 Gosub Way Gosub Rueck Waitms 200 Gosub Rueckl Waitms 400 Else Gosub Vor End If If C > 250 Then Gosub Brems Waitms 500 Gosub Rueck Waitms 200 Gosub Rueckr Waitms 400 Else Gosub Vor End If Waitms 40 Vor: M1 = 0 M2 = 1 M3 = 0 M4 = 1 Return Rueck: M1 = 1 M2 = 0 M3 = 1 M4 = 0 Return Brems: M1 = 1 M2 = 1 M3 = 1 M4 = 1 Return Rueckr: M1 = 1 M2 = 0 M3 = 0 M4 = 0 Return Rueckl: M1 = 0 M2 = 0 M3 = 1 M4 = 0 Return Vorr: M1 = 0 M2 = 1 M3 = 0 M4 = 0 Return Vorl: M1 = 0 M2 = 0 M3 = 0 M4 = 1 Return Way: Servo(1) = 100 Waitms 100 X = Getadc(2) Waitms 100 Servo(1) = 150 Y = Getadc(2) Waitms 100 Servo(1) = 50 Waitms 300 Z = Getadc(2) Waitms 100 If Y > Z Then Gosub Rueckr Waitms 500 Gosub Brems Waitms 300 Gosub Vor End If If Y < Z Then Gosub Rueckl Waitms 500 Gosub Brems Waitms 300 Gosub Vor End If Loop
Mfg JeyBee







Zitieren

Lesezeichen