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%)]