Die erste vorzeigbare Version v0.1a!
Declare Sub Go()
Declare Sub Wenden()
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
Dim Wsen As Word
Dim Wbump As Word
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8
Print
Print "yornbot v-0.1a"
Print
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Call Go
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Call Wenden
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton 'BEEP
Waitms 100
End
End If
End Function
Sub Go()
Print "*GO*"
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
' Do
'Wbump = Getadc(1)
'If Wbump > 500 Then
'Print "*WENDEN - I think we hit something!*"
'Call Wenden
'End If
Do
Wsen = Getadc(0)
'Print
'Print "**** Sharp Sensor Test *****"
'Print "**** ADC-Wert: " ; Wsen
'Waitms 100
If Wsen > 200 Then
Print "*WENDEN - Object in range!*"
Call Wenden
End If
Loop
End Sub
Sub Wenden()
'Linker Motor ein
Portc.6 = 0 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 0 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
Wait 1
Pwm1a = 0
Pwm1b = 0
'Linker Motor ein
Portc.6 = 0 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
Wait 1
Pwm1a = 0
Pwm1b = 0
Call Go
End Sub
\\
'v-0.2a
Declare Sub Go()
Declare Sub Wenden()
Declare Sub Links()
Declare Sub Rechts()
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
Dim I As Integer
Dim I2 As Integer
Dim N As Integer
Dim Ton As Integer
Dim Wsen As Integer
Dim Wre As Integer
Dim Wli As Integer
Dim Wr As Integer
Dim Wl As Integer
Dim W0 As Integer
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8
Print "yornbot v-0.2a"
Print
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Call Go
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Call Wenden
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton 'BEEP
Waitms 100
End
End If
End Function
Sub Go()
Print "*GO*"
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
Do
W0 = Getadc(0)
Wr = Getadc(1)
Wl = Getadc(2)
Wsen = W0 + Wr
Wsen = Wsen + Wl
Wre = W0 + Wr
Wli = W0 + Wl
If Wsen > 1000 Then
Print "*WENDEN - Blocked!*"
Call Wenden
End If
If Wre > 400 Then
Print "*HINDERNISS RECHTS- Ausweichen nach links!*"
Call Links
End If
If Wli > 400 Then
Print "*HINDERNISS LINKS- Ausweichen nach rechts!*"
Call Rechts
End If
Loop
End Sub
Sub Links()
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 281
I2 = 101
Pwm1a = I2
Pwm1b = I
Waitms 20
Wait 1
Pwm1a = 0
Pwm1b = 0
Call Go
End Sub
Sub Rechts()
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 101
I2 = 281
Pwm1a = I2
Pwm1b = I
Waitms 20
Wait 1
Pwm1a = 0
Pwm1b = 0
Call Go
End Sub
Sub Wenden()
'Linker Motor ein
Portc.6 = 0 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 0 'bestimmt Richtung rechter Motor
Portb.1 = 1 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
Wait 1
Pwm1a = 0
Pwm1b = 0
'Linker Motor ein
Portc.6 = 0 'bestimmt Richtung
Portc.7 = 1 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN
'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN
I = 200
Do
Pwm1a = I
Pwm1b = I
Waitms 20
I = I + 20
Loop Until I > 281
Wait 1
Pwm1a = 0
Pwm1b = 0
Call Go
End Sub