Робот состоит:
1) "Мозг" - atmega16, собран по схеме MRC40, на 16 Mhz
2) ДД с робоспейс, на l293d
3) RC5 модуль.
4) 1 SHARP (2Y0A21) на 10-80см.
5) 1 Севропривод.
6) моторы - сдвоенный редуктор TAMIYA.
Брал за пример kapandu.
Вот вроде бы программа, но я не знаю как подключать RC5. Помогите, за одно проверьте программу.
- Код: Выделить всё • Развернуть
- *******************************************************************************
 $regfile = "m16def.dat" 'используем мк ATmega16
 $crystal = 16000000 'частота кварцевого резонатора 16MHz
 '****************************Настройка таймеров и сервоприводов*****************
 Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down ' таймер для ШИМ двигателей
 Config Servos = 1 , Servo1 = Portc.2 , Reload = 12 ' Указываем кол-во серв, присваеваем имя Servo1 порту PC2, указываем длину импульса.
 '*************************** Порт A ********************************************
 ' Поключили дальномер, порт A7, настройки АДС ниже
 '*************************** Порт В ********************************************
 '*************************** Порт C ********************************************
 Config Pinc.2 = Output ' Подключили серву1 к порту С2, настройки сервы выше
 '*************************** Порт D ********************************************
 Config Pinc.6 = Output : Dr1 Alias Portc.6 'ногу сконфигурировали как выход и обозвали Dr1
 Config Pinc.7 = Output : Dr2 Alias Portc.7 'ногу сконфигурировали как выход и обозвали Dr2
 Config Pinc.5 = Output 'ногу ШИМа 1-ого движка сконфигурировали как выход
 Config Pinc.4 = Output 'ногу ШИМа 2-ого движка сконфигурировали как выход
 '*****************************Настройка ADC*************************************
 Config Adc = Single , Prescaler = Auto , Reference = Internal
 '*******************************************************************************
 Enable Interrupts ' разрешаем прерывания
 '************************Переменные и константы*********************************
 Dim Speed As Integer , Sharp As Integer
 Dim I As Integer
 Dim Vout As Word
 '*****************************Основной цикл*************************************
 Speed = 255
 1:
 Do
 Gosub Вперёд ' Если сигнала от ик-датчика(Sharp) не поступает, значит двигаемся всё время прямо
 '******************Вращение сервопривода и датчика Sharp************************
 For I = 45 To 90 Step 1 ' Вращаем сервой справа на лево
 Gosub Sharp_right ' считаем что шарп смотрит вправо
 Servo(1) = I
 Waitms 12 ' ждем 12 мс
 Next
 For I = 90 To 135 Step 1 ' Вращаем сервой справа на лево
 Servo(1) = I
 Gosub Sharp_left ' считаем что шарп смотрит влево
 Waitms 12 ' ждем 12 мс
 Next
 For I = 135 To 90 Step -1 ' Вращаем сервой слева на право
 Gosub Sharp_left ' считаем что шарп смотрит вправо
 Servo(1) = I
 Waitms 12 ' ждем 12 мс
 Next
 For I = 90 To 45 Step -1 ' Вращаем сервой слева на право
 Gosub Sharp_right ' считаем что шарп смотрит влево
 Servo(1) = I
 Waitms 12 ' ждем 12 мс
 Next
 Loop
 '*******************************************************************************
 ' Включение комбинации моторов для движения в заданном направлении
 '*******************************************************************************
 Стоп: ' стоим на месте
 Dr1 = 0 : Dr2 = 0 : Pwm1a = 0 : Pwm1b = 0
 Return
 Вперёд:
 ' едим вперёд на заданной скорости
 Dr1 = 0 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
 Return
 Назад: ' едим назад на заданной скорости
 Dr1 = 1 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
 Return
 Разворот_вправо: ' делаем Разворот_вправо на заданной скорости
 Dr1 = 0 : Dr2 = 1 : Pwm1a = Speed : Pwm1b = Speed
 Return
 Разворот_влево: ' делаем Разворот_влево на заданной скорости
 Dr1 = 1 : Dr2 = 0 : Pwm1a = Speed : Pwm1b = Speed
 Return
 '***********************************Sharp***************************************
 Sharp_right:
 Start Adc : Vout = Getadc(7) 'Sharp connected for example to PA=0(ADC0)
 Stop Adc
 If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
 If Sharp = 1 Then : Led1 = 1
 Gosub Разворот_влево : Waitms 500 : Led1 = 0 : Gosub Вперёд : End If
 Return
 Sharp_left:
 Start Adc : Vout = Getadc(7) 'Sharp connected for example to PA=0(ADC0)
 Stop Adc
 If Vout > 240 Then : Sharp = 1 : Else : Sharp = 0 : End If
 If Sharp = 1 Then : Led2 = 1
 Gosub Разворот_вправо : Waitms 500 : Led2 = 0 : Gosub Вперёд : End If
 Return
 End
 '*******************************************************************************
Я вот не знаю как подключить этот ДД:
Для чего нужны контакты: En1, En2.
Нужно же подключать: in3, in4, in2, in1
- Код: Выделить всё • Развернуть
- Config Pinc.6 = Output : Dr1 Alias Portc.6 'ногу сконфигурировали как выход и обозвали Dr1
 Config Pinc.7 = Output : Dr2 Alias Portc.7 'ногу сконфигурировали как выход и обозвали Dr2
 Config Pinc.5 = Output 'ногу ШИМа 1-ого движка сконфигурировали как выход
 Config Pinc.4 = Output 'ногу ШИМа 2-ого движка сконфигурировали как выход
Вот программа для ДД. Скажите какие порты под какой контакт этого ДД?
Помогите плиз.




