Задание№1-4 — различия между версиями

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
м
(Собираем все части кода в кучу)
 
Строка 61: Строка 61:
 
3. В итоге должен получиться вот такой код
 
3. В итоге должен получиться вот такой код
 
<source lang="vb">
 
<source lang="vb">
$prog &HFF , &HE4 , &HD9 , &H00      'указываем какие фусибиты надо прошить
+
' Указываем какой версии у нас МиниБот
 +
Const Device = 1                                            'MiniBot Version 1 or 2
 
$regfile = "m32def.dat"      ' файл спецификации Меги32
 
$regfile = "m32def.dat"      ' файл спецификации Меги32
$crystal = 8000000      ' указываем на какой частоте будем работать
+
 
$baud = 2400       ' указываем частоту дла usart (теперь нужно только для отладки программы)
+
#if Device = 1
 +
' Set configuration for MB1
 +
  $prog &HFF , &HE4 , &HD9 , &H00      'указываем какие фусибиты надо прошить
 +
  $crystal = 8000000      ' указываем на какой частоте будем работать
 +
  $baud = 9600       ' указываем частоту дла usart (теперь нужно только для отладки программы)
 +
#else
 +
' Set configuration for MB2
 +
'  $prog &HFF , &HBD , &HC9 , &H00      'указываем какие фусибиты надо прошить
 +
  $crystal = 7372800      ' указываем на какой частоте будем работать
 +
  $baud = 115200      ' указываем частоту дла usart (теперь нужно только для отладки программы)
 +
#endif
  
 
'----------------------------------------------------------------------------
 
'----------------------------------------------------------------------------

Текущая версия на 11:08, 16 июня 2009

Собираем все части кода в кучу

Собственно теперь осталось только собрать всё в кучу. И оформить рюшечки чтоб эстеты не бурчали... :-)

1. Оформляем команды МиниБоту отдельными красявашными процедурами <source lang="vb"> Прием_rc5:

  Getrc5(address , Command)
  If Address <> 255 And Command <> 255 Then
     Command = Command And &B01111111
     'Print Chr(12);
     'Print "Address - " ; Address
     'Print "Command - " ; Command;
  End If

Return

Влево:

  Gosub Стоп : Waitms 10
  Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:

Return

Вправо:

  Gosub Стоп : Waitms 10
  Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:

Return

Прямо:

  Gosub Стоп : Waitms 10
  Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:

Return

Назад:

  Gosub Стоп : Waitms 10
  Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:

Return

Стоп:

  Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:

Return </source> 2. Теперь опишем что нужно делать МиниБоту когда пришла та или иная комманда <source lang="vb">

  Gosub Прием_rc5
  If Command = 255 Then
     Gosub Стоп
  Elseif Command = 32 Then
     Gosub Прямо
     Waitms 100
  Elseif Command = 33 Then
     Gosub Назад
     Waitms 100
  Elseif Command = 17 Then
     Gosub Влево
     Waitms 100
  Elseif Command = 16 Then
     Gosub Вправо
     Waitms 100
  End If

</source> 3. В итоге должен получиться вот такой код <source lang="vb"> ' Указываем какой версии у нас МиниБот Const Device = 1 'MiniBot Version 1 or 2 $regfile = "m32def.dat" ' файл спецификации Меги32

  1. if Device = 1

' Set configuration for MB1

  $prog &HFF , &HE4 , &HD9 , &H00       'указываем какие фусибиты надо прошить
  $crystal = 8000000       ' указываем на какой частоте будем работать
  $baud = 9600       ' указываем частоту дла usart (теперь нужно только для отладки программы)
  1. else

' Set configuration for MB2 ' $prog &HFF , &HBD , &HC9 , &H00 'указываем какие фусибиты надо прошить

  $crystal = 7372800       ' указываем на какой частоте будем работать
  $baud = 115200       ' указываем частоту дла usart (теперь нужно только для отладки программы)
  1. endif

'---------------------------------------------------------------------------- Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Pinc.2 = Output : Drl Alias Portc.2 'ногу сконфигурировали как выход и обозвали Drl Config Pinc.3 = Output : Drr Alias Portc.3 'ногу сконфигурировали как выход и обозвали Drr Config Pind.4 = Output 'ногу ШИМа левого движка сконфигурировали как выход Config Pind.5 = Output 'ногу ШИМа правого движка сконфигурировали как выход '----------------------------------------------------------------------------

Dim Speed As Byte Speed = 70 ' указываем скорость робота

Config Rc5 = Pind.2 Enable Interrupts Dim Address As Byte , Command As Byte

Print "Start MiniBot" ' выводим в терминал отладочное сообщение

Do

  Gosub Прием_rc5
  If Command = 255 Then
     Gosub Стоп
  Elseif Command = 32 Then
     Gosub Прямо
     Waitms 100
  Elseif Command = 33 Then
     Gosub Назад
     Waitms 100
  Elseif Command = 17 Then
     Gosub Влево
     Waitms 100
  Elseif Command = 16 Then
     Gosub Вправо
     Waitms 100
  End If

Loop

Прием_rc5:

  Getrc5(address , Command)
  If Address <> 255 And Command <> 255 Then
     Command = Command And &B01111111
     'Print Chr(12);       ' выводим в терминал символ
     'Print "Address - " ; Address;       ' выводим в терминал адрес
     'Print "Command - " ; Command;       ' выводим в терминал номер команды
  End If

Return

Влево:

  Gosub Стоп : Waitms 10
  Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:

Return

Вправо:

  Gosub Стоп : Waitms 10
  Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:

Return

Прямо:

  Gosub Стоп : Waitms 10
  Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:

Return

Назад:

  Gosub Стоп : Waitms 10
  Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:

Return

Стоп:

  Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:

Return </source>