Hallo,
Heb een robot gekocht bij (www.robokits.org) en wel de Qu-bot.
Deze kan geprogrammeerd worden met een grafisch programma maar ik wil deze graag met Bascom programmeren. Helaas is er geen schema van deze robot te verkrijgen maar heb wel op verzoek op hun forum voor een schema een lijst ontvangen met de poortnummers.
Heb met veel problemen een eenvoudig odometrie programma aan de praat gekregen maar een programma met de 3 obstakel sensoren lukt mij niet.
Wie kan hiermee helpen?
' Obstakel1.bas (OK feb 2010)
$regfile = "m8535.dat"
$crystal = 7372800
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 19200
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Config Adc = Single , Prescaler = 64 , Reference = Avcc ' 235 kHz
Config Int0 = Change
Config Int1 = Change
Declare Sub Motorpwm(byval Pwm_l As Byte , Byval Pwm_r As Byte)
Declare Sub Setleds(byval Leds As Byte)
Mot0 Alias Portc.0 'Motoraansluitingen
Mot1 Alias Portc.1
Mot2 Alias Portc.2
Mot3 Alias Portc.3
Sensor_l Alias Porta.3 'Sensoraansluitingen
Sensor_c Alias Porta.4
Sensor_r Alias Porta.5
Config Mot0 = Output 'Motoraansluitingen
Config Mot1 = Output
Config Mot2 = Output
Config Mot3 = Output
Config Sensor_l = Input 'Motoraansluitingen
Config Sensor_c = Input
Config Sensor_r = Input
Do
If Sensor_c = 0 Then
Call Motorpwm(100 , 100)
Call Setleds(9) 'Forwards
Waitms 500
'End If
If Sensor_l = 1 Then
Call Motorpwm(10 , 40) '10,10
Call Setleds(2) 'Turnright
Waitms 200
End If
If Sensor_r = 1 Then
Call Motorpwm(40 , 10) '10.10
Call Setleds(4) 'Turnleft
Waitms 200
End If
If Sensor_r = 0 And Sensor_l = 0 And Sensor_c = 0 Then
Call Motorpwm(0 , 0)
Call Setleds(9) 'Forwards
End If
Loop
Config Portd.2 = Input ' odo_l int0
Config Portd.3 = Input ' odo_r int1
Config Portd.4 = Output ' pmw_r
Config Portd.5 = Output ' pwm_l
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Config Adc = Single , Prescaler = 64 , Reference = Avcc ' 235 kHz
Config Int0 = Change
Config Int1 = Change
Dim B As Byte , W As Word
Dim Odo_count_l As Word , Odo_count_r As Word
Start Adc
On Int0 Isr_int0
On Int1 Isr_int1
Enable Int0
Enable Int1
Enable Interrupts
Wait 2
End
Sub Motorpwm(byval Pwm_l As Byte , Byval Pwm_r As Byte)
Pwm1a = Pwm_l * 4
Pwm1b = Pwm_r * 4
End Sub
Sub Setleds(byval Leds As Byte)
Mot0 = Leds.0
Mot1 = Leds.1
Mot2 = Leds.2
Mot3 = Leds.3
End Sub
Isr_int0:
Incr Odo_count_l
' Led0 = Pind.2
Return
Isr_int1:
Incr Odo_count_r
' Led3 = Pind.3
Return[Bericht gewijzigd door Henry S. op (0%)]