Задание№2-1 — различия между версиями
EdGull (обсуждение | вклад) |
SkyStorm (обсуждение | вклад) |
||
(не показано 7 промежуточных версий 3 участников) | |||
Строка 10: | Строка 10: | ||
</source> | </source> | ||
− | 2. Выбираем волшебную кнопочку на пульте для перевода МиниБота в режим запоминания команд. Мне например приглянулась кнопочка <. | + | 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 | ||
Строка 29: | Строка 29: | ||
</source> | </source> | ||
− | 4. В итоге у нас код | + | 4. В итоге у нас код должен выглядеть так |
<source lang="vb"> | <source lang="vb"> | ||
Строка 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 | ||
− | |||
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>
Уроки: | Урок №1, Урок №2 |
---|---|
Задания: | Задание№1, Задание№2, Задание№2-1, Задание№2-2, Задание№3, Задание№4 |