nechegris
12.12.2008, 09:54
Hallo erstmal,
ich stöbere schon seit einiger Zeit in dem Forum, echt gut die Plattform!
Jetzt hat es die Zeit zugelassen, und ich habe mir aus ein paar Teilen einen kleinen Bot geklöppelt - nicht schön, aber selten O:)
Die Aufgabe ist eigentlich nur einer Linie zu folgen. Dafür hat er 2 umgebaute Servos, die mit einem 293 angesteuert werden und 3 Sensoren an der Nase.
Die Hardware habe ich überprüft, die Sensoren liefern die entsprechenden Signale, und die Motoren drehen, wie sie sollen.
Ich als c64-Kind habe mich für Bascom entschieden und da mal was geschrieben, was eigentlich funktionieren sollte - tut es aber nicht ](*,)
Ich befürchte, dass ich den Wald vor lauter Bäumen nicht sehe, denn der Code ist alles andere als elegant oder kompliziert.
Es wäre klasse, wenn da mal einer reinschauen könnte.
Vielen Dank
************************************************** ***
' Taktfrequenz des Quarzes einstellen (3,686411 MHz -> 1 Takt=0,00000027127s=0,27127us)
$crystal = 3686411
$baud = 9600
' Verwendete CPU festlegen (ATmega8)
$regfile = "m8def.dat"
'ports definieren
Config Portb = Output
Config Portd = Input
'Ddrd = &B00000000
'sensor rechts
Ls1 Alias Pind.2
'Sensor mitte
Ls2 Alias Pind.3
'Sensor links
Ls3 Alias Pind.4
' Hauptprogrammschleife
Do
' sensor 1 und 3 auf schwarzer Linie --> vor
If Ls1 = 0 Then
If Ls3 = 0 Then
Gosub Vor
End If
End If
' Sensor 1 Auf Schwarzer Linie --> Links
If Ls1 = 0 Then
If Ls3 = 1 Then
Gosub Links
End If
End If
' sensor 3 auf schwarzer Linie --> rechts
If Ls3 = 0 Then
If Ls1 = 1 Then
Gosub Vor
End If
End If
'kein sensor auf linie --> stop
If Ls1 = 1 Then
If Ls3 = 1 Then
'Print "stop"
Gosub Stop
End If
End If
'Waitms 100
Loop
Vor:
Portb = &B00000000
Portb = &B00101011
Return
Rueck:
Portb = &B00000000
Portb = &B00011101
Return
Links:
Portb = &B00000000
Portb = &B00101000
Return
Rechts:
Portb = &B00000000
Portb = &B00000011
Return
Stop:
Portb = &B00000000
Return
End
************************************************** ***
ich stöbere schon seit einiger Zeit in dem Forum, echt gut die Plattform!
Jetzt hat es die Zeit zugelassen, und ich habe mir aus ein paar Teilen einen kleinen Bot geklöppelt - nicht schön, aber selten O:)
Die Aufgabe ist eigentlich nur einer Linie zu folgen. Dafür hat er 2 umgebaute Servos, die mit einem 293 angesteuert werden und 3 Sensoren an der Nase.
Die Hardware habe ich überprüft, die Sensoren liefern die entsprechenden Signale, und die Motoren drehen, wie sie sollen.
Ich als c64-Kind habe mich für Bascom entschieden und da mal was geschrieben, was eigentlich funktionieren sollte - tut es aber nicht ](*,)
Ich befürchte, dass ich den Wald vor lauter Bäumen nicht sehe, denn der Code ist alles andere als elegant oder kompliziert.
Es wäre klasse, wenn da mal einer reinschauen könnte.
Vielen Dank
************************************************** ***
' Taktfrequenz des Quarzes einstellen (3,686411 MHz -> 1 Takt=0,00000027127s=0,27127us)
$crystal = 3686411
$baud = 9600
' Verwendete CPU festlegen (ATmega8)
$regfile = "m8def.dat"
'ports definieren
Config Portb = Output
Config Portd = Input
'Ddrd = &B00000000
'sensor rechts
Ls1 Alias Pind.2
'Sensor mitte
Ls2 Alias Pind.3
'Sensor links
Ls3 Alias Pind.4
' Hauptprogrammschleife
Do
' sensor 1 und 3 auf schwarzer Linie --> vor
If Ls1 = 0 Then
If Ls3 = 0 Then
Gosub Vor
End If
End If
' Sensor 1 Auf Schwarzer Linie --> Links
If Ls1 = 0 Then
If Ls3 = 1 Then
Gosub Links
End If
End If
' sensor 3 auf schwarzer Linie --> rechts
If Ls3 = 0 Then
If Ls1 = 1 Then
Gosub Vor
End If
End If
'kein sensor auf linie --> stop
If Ls1 = 1 Then
If Ls3 = 1 Then
'Print "stop"
Gosub Stop
End If
End If
'Waitms 100
Loop
Vor:
Portb = &B00000000
Portb = &B00101011
Return
Rueck:
Portb = &B00000000
Portb = &B00011101
Return
Links:
Portb = &B00000000
Portb = &B00101000
Return
Rechts:
Portb = &B00000000
Portb = &B00000011
Return
Stop:
Portb = &B00000000
Return
End
************************************************** ***