Технический форум по робототехнике.
$regfile = "m32def.dat" ' файл спецификации Меги32
$crystal = 7372800 ' указываем на какой частоте будем работать
$baud = 115200 ' указываем частоту дла usart (теперь нужно только для отладки программы)
$include "LCD_Siemens_S65.cfg"
$include "sound.bas"
'----------------------------------------------------------------------------
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_1red Alias Portc.4
Config Pinc.5 = Output : Led_1green Alias Portc.5
Config Pinc.6 = Output : Led_2red Alias Portc.6
Config Pinc.7 = Output : Led_2green Alias Portc.7
Config Rc5 = Pind.3
Config Adc = Single , Prescaler = Auto , Reference = Internal
'----------------------------------------------------------------------------
Dim Speed As Byte
Dim W As Word , J As Single
Enable Interrupts
Dim Address As Byte , Command As Byte
Cls
Box(0 , 0) ,(176 , 131) , White
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
Elseif Command = 1 Then
Speed = 100
Elseif Command = 2 Then
Speed = 150
Elseif Command = 3 Then
Speed = 200
Elseif Command = 4 Then
Speed = 255
Elseif Command = 55 Then
Led_1red = 1 : Waitms 200 : Led_1red = 0 : Waitms 200
Elseif Command = 54 Then
Led_1green = 1 : Waitms 200 : Led_1green = 0 : Waitms 200
Elseif Command = 50 Then
Led_2red = 1 : Waitms 200 : Led_2red = 0 : Waitms 200
Elseif Command = 52 Then
Led_2green = 1 : Waitms 200 : Led_2green = 0 : Waitms 200
Elseif Command = 59 Then
Gosub Экран
Elseif Command = 12 Then
Gosub Sound_1
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 = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Вправо:
Gosub Стоп : Waitms 10
Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Прямо:
Gosub Стоп : Waitms 10
Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Назад:
Gosub Стоп : Waitms 10
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Стоп:
Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return
Экран:
Start Adc : W = Getadc(7) : Stop Adc : J = W / 475 : J = J * 2
Lcdat 1 , 0 , " Владелец: " , Black , Red
Lcdat 8 , 0 , " Михайлов Д.В. " , Black , Red
Lcdat 16 , 0 , "Модель выполнена " , Blue , White
Lcdat 24 , 0 , " в рамках " , Blue , White
Lcdat 32 , 0 , " бакалаврской " , Blue , White
Lcdat 40 , 0 , " работы: " , Blue , White
Lcdat 48 , 0 , " на тему: " , Blue , White
Lcdat 56 , 0 , "Анализ тенденций" , Black , White
Lcdat 64 , 0 , " создания " , Black , White
Lcdat 72 , 0 , " мехатронных " , Black , White
Lcdat 80 , 0 , " развивающих " , Black , White
Lcdat 88 , 0 , " игрушек " , Black , White
Lcdat 96 , 0 , " для детей " , Black , White
Lcdat 104 , 0 , "Фон белый" , Blue , White
Lcdat 112 , 0 , "Фон желтый" , Blue , Yellow
Lcdat 120 , 0 , "Фон зелёный" , Blue , Green
Lcdat 128 , 0 , "Фон светлозеленый" , Blue , Brightgreen
Lcdat 136 , 0 , "Фон светлосиний" , Blue , Brightblue
Lcdat 142 , 0 , "Фон оранжевый" , Blue , Orange
Lcdat 150 , 0 , "Фон фиолетовый" , Blue , Violett
Lcdat 158 , 0 , "Заряд АКБ(В):" , Blue , White
Lcdat 166 , 0 , "Akb=" ; J , 0 , 255
Wait 1
Return
Sound_1:
Lang = C241(index)
T1reload = C240(index)
For I = Lang To 0 Step -1
Waitms 20
Next
Incr Index
If Index > C24_laenge Then Index = 1
T1reload = Silence
Waitms 5
Return
Tick:
Timer0 = T1reload
If T1reload = Silence Or Portd.7 = 1 Then
Portd.7 = 0
Else
Portd.7 = 1
End If
Return
CONFIG RC5 = Pind.3, TIMER=2
$regfile = "m32def.dat" ' файл спецификации Меги32
$crystal = 7372800 ' указываем на какой частоте будем работать
$baud = 115200 ' указываем частоту дла usart (теперь нужно только для отладки программы)
$include "LCD_Siemens_S65.cfg"
$include "sound.bas"
'----------------------------------------------------------------------------
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_1red Alias Portc.4
Config Pinc.5 = Output : Led_1green Alias Portc.5
Config Pinc.6 = Output : Led_2red Alias Portc.6
Config Pinc.7 = Output : Led_2green Alias Portc.7
Config Rc5 = Pind.3, TIMER=2
Config Adc = Single , Prescaler = Auto , Reference = Internal
'----------------------------------------------------------------------------
Dim Speed As Byte
Dim W As Word , J As Single
Enable Interrupts
Dim Address As Byte , Command As Byte
Cls
Box(0 , 0) ,(176 , 131) , White
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
Elseif Command = 1 Then
Speed = 100
Elseif Command = 2 Then
Speed = 150
Elseif Command = 3 Then
Speed = 200
Elseif Command = 4 Then
Speed = 255
Elseif Command = 55 Then
Led_1red = 1 : Waitms 200 : Led_1red = 0 : Waitms 200
Elseif Command = 54 Then
Led_1green = 1 : Waitms 200 : Led_1green = 0 : Waitms 200
Elseif Command = 50 Then
Led_2red = 1 : Waitms 200 : Led_2red = 0 : Waitms 200
Elseif Command = 52 Then
Led_2green = 1 : Waitms 200 : Led_2green = 0 : Waitms 200
Elseif Command = 59 Then
Gosub Экран
Elseif Command = 12 Then
Gosub Sound_1
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 = 0 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Вправо:
Gosub Стоп : Waitms 10
Drl = 1 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Прямо:
Gosub Стоп : Waitms 10
Drl = 1 : Drr = 1 : Pwm1b = Speed : Pwm1a = Speed:
Return
Назад:
Gosub Стоп : Waitms 10
Drl = 0 : Drr = 0 : Pwm1b = Speed : Pwm1a = Speed:
Return
Стоп:
Drl = 0 : Drr = 0 : Pwm1b = 0 : Pwm1a = 0:
Return
Экран:
Start Adc : W = Getadc(7) : Stop Adc : J = W / 475 : J = J * 2
Lcdat 1 , 0 , " Владелец: " , Black , Red
Lcdat 8 , 0 , " Михайлов Д.В. " , Black , Red
Lcdat 16 , 0 , "Модель выполнена " , Blue , White
Lcdat 24 , 0 , " в рамках " , Blue , White
Lcdat 32 , 0 , " бакалаврской " , Blue , White
Lcdat 40 , 0 , " работы: " , Blue , White
Lcdat 48 , 0 , " на тему: " , Blue , White
Lcdat 56 , 0 , "Анализ тенденций" , Black , White
Lcdat 64 , 0 , " создания " , Black , White
Lcdat 72 , 0 , " мехатронных " , Black , White
Lcdat 80 , 0 , " развивающих " , Black , White
Lcdat 88 , 0 , " игрушек " , Black , White
Lcdat 96 , 0 , " для детей " , Black , White
Lcdat 104 , 0 , "Фон белый" , Blue , White
Lcdat 112 , 0 , "Фон желтый" , Blue , Yellow
Lcdat 120 , 0 , "Фон зелёный" , Blue , Green
Lcdat 128 , 0 , "Фон светлозеленый" , Blue , Brightgreen
Lcdat 136 , 0 , "Фон светлосиний" , Blue , Brightblue
Lcdat 142 , 0 , "Фон оранжевый" , Blue , Orange
Lcdat 150 , 0 , "Фон фиолетовый" , Blue , Violett
Lcdat 158 , 0 , "Заряд АКБ(В):" , Blue , White
Lcdat 166 , 0 , "Akb=" ; J , 0 , 255
Wait 1
Return
Sound_1:
Lang = C241(index)
T1reload = C240(index)
For I = Lang To 0 Step -1
Waitms 20
Next
Incr Index
If Index > C24_laenge Then Index = 1
T1reload = Silence
Waitms 5
Return
Tick:
Timer0 = T1reload
If T1reload = Silence Or Portd.7 = 1 Then
Portd.7 = 0
Else
Portd.7 = 1
End If
Return
Sound_1:
Do
Lang = C241(index)
T1reload = C240(index)
For I = Lang To 0 Step -1
Waitms 20
Next
Incr Index
Loop Until Index > C24_laenge
Index = 1
T1reload = Silence
Waitms 5
Return
Модератор "Digit":Правилами запрещено выкладывание материалов на сторонних сайтах. Перезалейте в форум. Подробности в личке.