roboforum.ru

Технический форум по робототехнике.

Помогите сделать программу

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Помогите сделать программу

Сообщение Krish » 12 апр 2011, 16:39

Сделал электронику, теперь нужна программа.
Робот состоит:
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

'*******************************************************************************


Я вот не знаю как подключить этот ДД:
http://robotsspace.ucoz.ru/publ/7-1-0-50
Для чего нужны контакты: 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-ого движка сконфигурировали как выход

Вот программа для ДД. Скажите какие порты под какой контакт этого ДД?
Помогите плиз.
Krish
 
Сообщения: 155
Зарегистрирован: 29 дек 2010, 14:08
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: С++

Re: Помогите сделать программу

Сообщение dccharacter » 12 апр 2011, 17:27

Нравишься ты мне, но прям вот убить охота.
Открой даташит на l293d и почитай - это ответ на один из твоих вопросов.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Помогите сделать программу

Сообщение Krish » 12 апр 2011, 17:32

Блин, я знаю весь даташит l293d назубок...
В принципе, это не важно, как насчет всей программы? есть ошибки ?
Krish
 
Сообщения: 155
Зарегистрирован: 29 дек 2010, 14:08
Откуда: Ростов-на-Дону
Skype: levanchik322
прог. языки: С++

Re: Помогите сделать программу

Сообщение SkyStorm » 12 апр 2011, 18:11

По ДД у тебя используется 6 контактов а в программе описано 4е.
На En1, En2 идут ШИМ
На in3, in4, in2, in1 идут цифровые выходы которые определяют направление движения.
Никто кроме нас!!!
4Robots.ru - Все для роботов!
Аватара пользователя
SkyStorm
 
Сообщения: 2687
Зарегистрирован: 05 фев 2008, 15:33
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович

Re: Помогите сделать программу

Сообщение space » 12 апр 2011, 21:27

Krish писал(а):Блин, я знаю весь даташит l293d назубок...
В принципе, это не важно, как насчет всей программы? есть ошибки ?

знал бы, ни задавал бы таких глупых вопросов.
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич


Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron