Hallo
Hier ist das gesamte Prog.
Code:
'###################################################
'Überwachungsroboter.bas
'Überwachungsroboter
'Projekt von Andres
'#######################################################
Declare Function Bewegungsmelder() As Byte
Declare Sub Linieverfolgung()
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
Dim I As Integer
Dim N As Integer
Dim Ton 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
Config Pina.5 = Input
Config Pina.6 = Input
Config Pina.2 = Input
Config Pina.3 = Input
Config Porta.4 = Output
Dim Taste As Byte
Dim Volt As Single
' Für Linieverfolgung
'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
I = 0
Waitms 5000
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450
Print
Print "**** RN-Control 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print "Projekt Ueberwachungsroboter von Andres"
Print
Do
Do
Taste = Bewegungsmelder()
If Taste <> 0 Then
Select Case Taste
Case 1
Pwm1a = 0 'Linker Motor aus
Waitms 1000
Pwm1a = 1023
Print "Rechts weisse Linie erkannt"
Case 2
Pwm1b = 0
Waitms 1000
Pwm1b = 1023
Print "Links weisse Linie erkannt"
Case 3
Waitms 2000
Porta.4 = 1
Waitms 800
Porta.4 = 0
Waitms 1000
Porta.4 = 1
Waitms 500
Porta.4 = 0
Waitms 4000
Porta.4 = 1
Waitms 500
Porta.4 = 0
Waitms 4000
Porta.4 = 1
Waitms 500
Porta.4 = 0
Print "Person gesichtet und fotografiert"
Waitms 5000
Call Linieverfolgung
End Select
End If
Waitms 100
Loop
End
Function Bewegungsmelder()
Local B As Word
Local C As Word
Local We As Word
Bewegungsmelder = 0
'Diese Unterfunktion überwacht den Raum und folgt Der Linie
Start Adc
B = Getadc(5)
C = Getadc(6)
We = Getadc(2)
If We < 1010 Then
Select Case We
Case 380 To 470
Bewegungsmelder = 3
Case 535 To 720
Bewegungsmelder = 3
End Select
End If
If B < 1010 Then
Select Case B
Case 412 To 820
Bewegungsmelder = 1
Case Else
' Print "Wert anpassen!ADC Wert B=" ; B
End Select
End If
If C < 1010 Then
Select Case C
Case 412 To 820
Bewegungsmelder = 2
Print "Wert anpassen!ADC Wert C=" ; C
End Select
End If
End Function
Sub Linieverfolgung()
Waitms 1000
'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 = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 10
I = I + 5
Loop Until I > 1023
'
Waitms 100
Do
Pwm1a = 1023
Pwm1b = 1023
End
End Sub
Loop
Loop
Und hier der Schaltplan zum ansteuern der CN70's
Lesezeichen