[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Мастерская » Я начинающий » Общие вопросы начинающих (Задаём вопросы)
Общие вопросы начинающих
SpaceДата: Среда, 06.07.2011, 15:56 | Сообщение # 166
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
Прикрепления: 5741707.jpg (39.6 Kb)


KrishДата: Четверг, 07.07.2011, 12:03 | Сообщение # 167
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Space, Спасибо, отличная табличка))
Помогите плиз, мне нужно сделать лайнтрейсера, и я что то не понимаю, как фотодиоды прикрутить программно на бейсике. Можете дать цикл на бейсике, на 2 фотодиода для следование по линии?


LacOS
DimsanДата: Четверг, 07.07.2011, 12:19 | Сообщение # 168
Язык программированя: Си, Делфи
Группа: Модераторы
Сообщений: 65
Репутация: 1
Статус: Offline
Подключаешь фотодиод катодом к общему проводу ("земля"), а анодом к ножке МК.
Настраиваешь порт МК как вход с подтяжкой (PORTx=0, DDRx=1).
В цикле проверяешь состояние пина. Если 0, значит ФД находится над белым участком, иначе над чёрным.
nightmareДата: Четверг, 07.07.2011, 14:36 | Сообщение # 169
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
[off]А учебные курсы то не читаем kolobok_cool [/off]

russian-robots@conference.jabber.ru - jabber чат для робототехников

Сообщение отредактировал nightmare - Четверг, 07.07.2011, 14:38
KrishДата: Четверг, 07.07.2011, 16:54 | Сообщение # 170
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
nightmare, вплане теории всё супер. Правда ПИД не понимаю. но это со временем.
Dimsan, В плане теории я знаю, читал на myrobot.ru и делал там ихнего робота лайнтрейсера на атмега8.
Мне нужен только главный цикл для бейсика, т.к. я не знаю как его реализовать для 2 ф/д... В плане настройки программы я знаю как: какие переменные выбрать и т.п.


LacOS
nightmareДата: Четверг, 07.07.2011, 17:18 | Сообщение # 171
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
На бейсик небось переведёшь?
Code
while(1) //вечный цикл
{
if (sensor1 == 1) // 1 - сенсор НЕ над линией
motor1_on();
else        
motor1_off();

if(sensor2 == 1)
motor2_on();
else
motor2_off();
}


Или тебе для ПИДа надо?
Если для него, то, допустим есть линейка из 8 датчиков, подключены к 8 битному порту, тогда ошибку считаем так:
----8........1 <- номера датчиков линии.
0: 0b00011000
1: 0b00001100
2: 0b00000110
3: 0b00000011
4: 0b00000001
-1: 0b00110000
-2: 0b01100000
-3: 0b11000000
-4: 0b10000000
Где единицы - те датчики над линией.
Цифры слева - это ошибка, т.е. отклонение от линии.
Как число в регистре PIN перевести в ошибку, думаю сам догадаешься.

Если решил при помощи АЦП измерять отклонение от линии, то там всё немного сложнее, но алгоритм есть в той статье, что тебе на робофоруме посоветовали.

Если взглянуть на формулу, по которой считаем скорость двигателей в ПИД регуляторе, то станет всё ясно с ПИДом. Из формулы видно, что на скорость двигателей влияет не только положение датчиков над линией, но и то, насколько быстро меняются показания датчиков линии (чем круче поворот линии, тем быстрее меняются показания датчиков линии с течением времени).


russian-robots@conference.jabber.ru - jabber чат для робототехников

Сообщение отредактировал nightmare - Четверг, 07.07.2011, 18:21
KrishДата: Четверг, 07.07.2011, 18:16 | Сообщение # 172
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
nightmare, спасибо за цикл)) переведу конечно)) ты это сам писал? это 100% рабочее?
С ПИД я пока не спавлюсь, но как сделаю на логике лайнтрейсера сразу переду на ПИД лайнтрейсера)
Мне говорят лучше брать 3pi робота, но мне он не нрав. У меня свой приятный))

Добавлено (07.07.2011, 18:16)
---------------------------------------------
отклонение моторов хаотично когда робот ушёл с линии? или они четко идут на линию?


LacOS
nightmareДата: Четверг, 07.07.2011, 18:18 | Сообщение # 173
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
Правый датчик набежал на линию (линия направо повернула), правый мотор выключился, робот повернул крутя только лишь левым мотором направо.
Ну сам подумай как такой робот будет бегать.
Программа же простая совсем, что сам то не составил раз с теорией всё отлично?


russian-robots@conference.jabber.ru - jabber чат для робототехников

Сообщение отредактировал nightmare - Четверг, 07.07.2011, 18:25
KrishДата: Четверг, 07.07.2011, 18:26 | Сообщение # 174
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
nightmare, да блин, не знаю, я думал там проблем много будет((
я только учу языки на примерах программ других..
if (!(PIND & (1<<PIND1))) // проверить "0" на линии 1 порта D
Как суда подставить 2 ф/д?
http://myrobot.ru/stepbystep/r_firstbot3.php


LacOS
nightmareДата: Четверг, 07.07.2011, 18:28 | Сообщение # 175
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
Что то условие делает ты понял?

russian-robots@conference.jabber.ru - jabber чат для робототехников
KrishДата: Четверг, 07.07.2011, 18:31 | Сообщение # 176
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
Quote (nightmare)
Что то условие делает ты понял?

Читать программы я могу)) и понимаю что происходит))

Добавлено (07.07.2011, 18:31)
---------------------------------------------
if (!(PIND & (1<<PIND1)|(1<<PIND2))) // проверить "0" на линии 1 порта D и линию порта D2
Так чтоли? Знак | - это же И?


LacOS
nightmareДата: Четверг, 07.07.2011, 18:31 | Сообщение # 177
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
Нет это не "И" и смысла ты не понял.
Напиши такое же условие для датчика, который не на PD1 сидит, а на PD2. Используй пример из сообщения 171.
Инфа про операции с битами тебе пригодится: http://cdxp.zx6.ru/archives/387


russian-robots@conference.jabber.ru - jabber чат для робототехников

Сообщение отредактировал nightmare - Четверг, 07.07.2011, 18:34
KrishДата: Четверг, 07.07.2011, 18:39 | Сообщение # 178
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
nightmare, завтра допояю некоторые шлейфы для лайнтрейсера, и проверю программу, тогда и отпишу в чём именно ошибки

LacOS
nightmareДата: Четверг, 07.07.2011, 18:43 | Сообщение # 179
Язык программированя: C,C#
Группа: Проверенные
Сообщений: 133
Репутация: 3
Статус: Offline
Ну давай, только код из поста 176 не включай в программу.

russian-robots@conference.jabber.ru - jabber чат для робототехников
KrishДата: Четверг, 07.07.2011, 18:44 | Сообщение # 180
Группа: Пользователи
Сообщений: 184
Репутация: 2
Статус: Offline
nightmare, я понял, у меня вроде код готов, но блин 2ой ф/д не понимаю как программно приделать, без ПИД, ну это я уже МК буду мучать))

LacOS
Форум » Мастерская » Я начинающий » Общие вопросы начинающих (Задаём вопросы)
Поиск: