Hab mal mein Programm für den ersten Roboter geschrieben:
Code:
$regfile = "m16def.dat"
$crystal = 16000000

Dim I As Byte
I = 0

            ' Sensoren: 2 IS471
            ' Motorsteuerung mit L293D

                  ' Pind.6 = linker Sensor
                  ' Pind.7 = rechter Sensor
                  ' Portd.4 = linker Motor vorwärts/rückwärts
                  ' Portd.5 = rechter Motor vorwärts/rückwärts
                  ' Portd.2 = linker Motor an/aus
                  ' Portd.3 = rechter Motor an/aus
Ddrd = 00111111                                             ' Pind.6 und Pind.7 = Input / Rest Output
Portd = 11000000                                            ' Pullup von Pind.6 und Pind.7 aktivieren
                  ' Pind.6 = linker Sensor
                  ' Pind.7 = rechter Sensor
                  ' Portd.4 = linker Motor vorwärts/rückwärts
                  ' Portd.5 = rechter Motor vorwärts/rückwärts
                  ' Portd.2 = linker Motor an/aus
                  ' Portd.3 = rechter Motor an/aus

Portd. 2 = 0                                                ' linker Motor aus
Portd. 3 = 0                                                ' rechter Motor aus

Cls
Locate 2 , 1
Lcd "  Start in 5"
Locate 3 , 1
Lcd "  Sekunden"
Waitms 5000

Cls
Portd. 2 = 0                                                ' linker Motor aus
Portd. 3 = 0                                                ' rechter Motor aus

Do
   If Pind.7 = 0 Then
       If Pind.6 = 0 Then                                   ' wenn kein Sensor ein Hindernis meldet
           If I <> 1 Then
                        Cls
                        Locate 1 , 1
                        Lcd "Kein Hindernis"
                        Locate 2 , 1
                        Lcd "geradeaus fahren"
           End If
           I = 1
           Portd.5 = 1                                      ' rechter Motor vorwärts
           Portd.4 = 1                                      ' linker Motor vorwärts
       Else                                                 ' wenn der linker Sensor ein Hindernis meldet
           Portd.2 = 0                                      ' linker Motor aus
           Portd.3 = 0                                      ' rechter Motor aus
           If I <> 2 Then
                        Cls
                        Locate 1 , 1
                        Lcd "Hindernis links"
                        Locate 2 , 1
                        Lcd "-> Links vorbei"
                        Locate 3 , 1
                        Lcd "fahren"

           End If
           I = 2
           Portd.5 = 0                                      ' rechter Motor rückwärts
           Portd.3 = 1                                      ' rechter Motor an
           Waitms 1500
           Portd.3 = 0                                      ' rechter Motor aus
           Portd.2 = 1                                      ' Linker Motor wieder an und vorwärts
           Waitms 1000
           Portd.5 = 1                                      ' rechter Motor vorwärts
           Portd.3 = 1                                      ' rechter Motor wieder an
       End If
   Else
       If Pind.6 = 0 Then                                   ' wenn rechter Sensor Hindernis meldet
           Portd.3 = 0                                      ' rechter Motor aus
           Portd.2 = 0                                      ' linker Motor aus
           If I <> 3 Then
                        Cls
                        Locate 1 , 1
                        Lcd "Hindernis rechts"
                        Locate 2 , 1
                        Lcd "-> rechts vorbei"
                        Locate 3 , 1
                        Lcd "fahren"
           End If
           I = 3
           Portd.4 = 0                                      ' linker Motor rückwärts
           Portd.2 = 1                                      ' Linker Motor an
           Waitms 1500
           Portd.2 = 0                                      ' linker Motor aus
           Portd.3 = 1                                      ' rechter Motor wieder an und vorwärts
           Waitms 1000
           Portd.4 = 1                                      ' linker Motor vorwärts
           Portd.2 = 1                                      ' linker Motor wieder an
       Else                                                 ' wenn beide Sensoren Hindernis melden
           Portd.3 = 0                                      ' rechter Motor aus
           Portd.2 = 0                                      ' linker Motor aus
           If I <> 4 Then
                        Cls
                        Locate 1 , 1
                        Lcd "   Hindernis"
                        Locate 2 , 1
                        Lcd "-> umdrehen"
           End If
           I = 4
           Portd.3 = 1                                      ' rechter Motor an
           Portd.2 = 1                                      ' linker Motor an
           Portd.4 = 0                                      ' linker Motor rückwärts
           Waitms 3000
           Portd.4 = 1                                      ' linker Motor vorwärts
       End If
   End If
Loop

End                                                         'end program
Funktioniert das so wohl? Bin noch etwas unsicher.
Später sollen die Sensoren dann über Interrupts laufen.

MFG