Задание№1-4
Материал из roboforum.ru Wiki
Собираем все части кода в кучу
Собственно теперь осталось только собрать всё в кучу. И оформить рюшечки чтоб эстеты не бурчали... :-)
1. Оформляем команды МиниБоту отдельными красявашными процедурами
Прием_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
2. Теперь опишем что нужно делать МиниБоту когда пришла та или иная комманда
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
3. В итоге должен получиться вот такой код
' Указываем какой версии у нас МиниБот 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
| Уроки: | Урок №1, Урок №2 |
|---|---|
| Задания: | Задание№1, Задание№2, Задание№2-1, Задание№2-2, Задание№3, Задание№4 |
