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

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск
 
(не показано 6 промежуточных версий 3 участников)
Строка 10: Строка 10:
 
</source>
 
</source>
  
2. Выбираем волшебную кнопочку на пульте для перевода МиниБота в режим запоминания команд. Мне например приглянулась кнопочка <. Ёё скан код 21. Соответсвенно для выхода из этого режима (чтоб не заморачиваться с кодом,что у нас кнопок что ли мало?) назначаем другую волшебную кнопочку > ёё сканкод соответственно 22. Для симметрии, типа чтоб по феншую всё было в шоколаде.<br />
+
2. Выбираем волшебную кнопочку на пульте для перевода МиниБота в режим запоминания команд. Мне например приглянулась кнопочка <. Её скан код 21. Соответсвенно для выхода из этого режима (чтоб не заморачиваться с кодом,что у нас кнопок что ли мало?) назначаем другую волшебную кнопочку > ёё сканкод соответственно 22. Для симметрии, типа чтоб по феншую всё было в шоколаде.<br />
  
 
Теперь собсвенно описываем эти волшебные кнопочки.
 
Теперь собсвенно описываем эти волшебные кнопочки.
 
<source lang="vb">
 
<source lang="vb">
If Command = 21 Then      'Кнопка < - переход в режим запоминания комманд
+
If Command = 21 Then      'Кнопка "<" - переход в режим запоминания комманд
 
       Led_r1 = 1
 
       Led_r1 = 1
Elseif Command = 22 Then      'Кнопка > - выхода из режим запоминания комманд
+
Elseif Command = 22 Then      'Кнопка ">" - выхода из режим запоминания комманд
 
       Led_r1 = 0
 
       Led_r1 = 0
 
End If
 
End If
Строка 35: Строка 35:
 
$regfile = "m32def.dat"      ' файл спецификации Меги32
 
$regfile = "m32def.dat"      ' файл спецификации Меги32
 
$crystal = 8000000      ' указываем на какой частоте будем работать
 
$crystal = 8000000      ' указываем на какой частоте будем работать
$baud = 2400
+
$baud = 2400       ' указываем скорость на которой будет работать уарт
  
 
'----------------------------------------------------------------------------
 
'----------------------------------------------------------------------------
Строка 41: Строка 41:
 
Config Pinc.2 = Output : Drl Alias Portc.2      'ногу сконфигурировали как выход и обозвали Drl
 
Config Pinc.2 = Output : Drl Alias Portc.2      'ногу сконфигурировали как выход и обозвали Drl
 
Config Pinc.3 = Output : Drr Alias Portc.3      'ногу сконфигурировали как выход и обозвали Drr
 
Config Pinc.3 = Output : Drr Alias Portc.3      'ногу сконфигурировали как выход и обозвали Drr
Config Pind.4 = Output      'ногу ШИМа левого движка сконфигурировали как выход
+
Config Pind.4 = Output      'ногу ШИМа левого движка сконфигурировали как выход
Config Pind.5 = Output      'ногу ШИМа правого движка сконфигурировали как выход
+
Config Pind.5 = Output      'ногу ШИМа правого движка сконфигурировали как выход
  
 
Config Pinc.4 = Output : Led_r1 Alias Portc.4
 
Config Pinc.4 = Output : Led_r1 Alias Portc.4
Строка 56: Строка 56:
 
Enable Interrupts
 
Enable Interrupts
 
Dim Address As Byte , Command As Byte
 
Dim Address As Byte , Command As Byte
Dim Dta(255) As Byte
 
  
 
Print "Start MiniBot"
 
Print "Start MiniBot"
Строка 126: Строка 125:
 
Return
 
Return
 
</source>
 
</source>
 +
 +
{{МиниБот Уроки и Задания}}
 +
[[Категория:Basic]]

Текущая версия на 13:26, 11 июля 2008

Учим МиниБот переходить в режим запоминания комманд заодно и поморгаем светодиодом

1. Говорим МиниБоту что оказывается у него еще и светодиоды есть ;-) <source lang="vb"> Config Pinc.4 = Output : Led_r1 Alias Portc.4 Config Pinc.5 = Output : Led_g1 Alias Portc.5 Config Pinc.6 = Output : Led_r2 Alias Portc.6 Config Pinc.7 = Output : Led_g2 Alias Portc.7 </source>

2. Выбираем волшебную кнопочку на пульте для перевода МиниБота в режим запоминания команд. Мне например приглянулась кнопочка <. Её скан код 21. Соответсвенно для выхода из этого режима (чтоб не заморачиваться с кодом,что у нас кнопок что ли мало?) назначаем другую волшебную кнопочку > ёё сканкод соответственно 22. Для симметрии, типа чтоб по феншую всё было в шоколаде.

Теперь собсвенно описываем эти волшебные кнопочки. <source lang="vb"> If Command = 21 Then 'Кнопка "<" - переход в режим запоминания комманд

     Led_r1 = 1

Elseif Command = 22 Then 'Кнопка ">" - выхода из режим запоминания комманд

     Led_r1 = 0

End If </source>

3. Добавляем еще одну процедурку (пока пустую)

<source lang="vb"> Запоминаем_команды:

  If Led_r1 = 1 Then Print "Memmory command"

Return </source>

4. В итоге у нас код должен выглядеть так

<source lang="vb"> $prog &HFF , &HE4 , &HD9 , &H00 'указываем какие фусибиты надо прошить $regfile = "m32def.dat" ' файл спецификации Меги32 $crystal = 8000000 ' указываем на какой частоте будем работать $baud = 2400 ' указываем скорость на которой будет работать уарт

'---------------------------------------------------------------------------- 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 'ногу ШИМа правого движка сконфигурировали как выход

Config Pinc.4 = Output : Led_r1 Alias Portc.4 Config Pinc.5 = Output : Led_g1 Alias Portc.5 Config Pinc.6 = Output : Led_r2 Alias Portc.6 Config Pinc.7 = Output : Led_g2 Alias Portc.7 '----------------------------------------------------------------------------

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
  Gosub Обученные_команды
  Gosub Запоминаем_команды

Loop

Запоминаем_команды:

  If Led_r1 = 1 Then Print "Memmory command"

Return

Обученные_команды:

  If Command = 21 Then       'Кнопка < - переход в режим запоминания комманд
     Led_r1 = 1
  Elseif Command = 22 Then       'Кнопка > - выхода из режим запоминания комманд
     Led_r1 = 0
  Elseif 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

Return

Прием_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>