Задание№1-4 — различия между версиями
EdGull (обсуждение | вклад) |
SkyStorm (обсуждение | вклад) (→Собираем все части кода в кучу) |
||
| (не показано 12 промежуточных версий 4 участников) | |||
| Строка 1: | Строка 1: | ||
[[Категория:МиниБот]] | [[Категория:МиниБот]] | ||
| − | + | == Собираем все части кода в кучу == | |
| − | Собственно теперь | + | Собственно теперь осталось только собрать всё в кучу. И оформить рюшечки чтоб эстеты не бурчали... :-) <br /> |
| − | 1. Оформляем команды МиниБоту отдельными процедурами | + | |
| + | 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"> | <source lang="vb"> | ||
| + | ' Указываем какой версии у нас МиниБот | ||
| + | Const Device = 1 'MiniBot Version 1 or 2 | ||
| + | $regfile = "m32def.dat" ' файл спецификации Меги32 | ||
| + | |||
| + | #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 | ||
| + | |||
| + | '---------------------------------------------------------------------------- | ||
| + | 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: | Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed: | ||
Return | Return | ||
Вправо: | Вправо: | ||
| + | Gosub Стоп : Waitms 10 | ||
Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed: | Drl = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed: | ||
Return | Return | ||
Прямо: | Прямо: | ||
| + | Gosub Стоп : Waitms 10 | ||
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed: | Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed: | ||
Return | Return | ||
Назад: | Назад: | ||
| + | Gosub Стоп : Waitms 10 | ||
Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed: | Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed: | ||
Return | Return | ||
| Строка 25: | Строка 147: | ||
Return | Return | ||
</source> | </source> | ||
| + | |||
| + | {{МиниБот Уроки и Задания}} | ||
| + | [[Категория:Basic]] | ||
Текущая версия на 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
- 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
'---------------------------------------------------------------------------- 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>
| Уроки: | Урок №1, Урок №2 |
|---|---|
| Задания: | Задание№1, Задание№2, Задание№2-1, Задание№2-2, Задание№3, Задание№4 |