Общие вопросы начинающих
|
|
Space | Дата: Среда, 06.07.2011, 15:56 | Сообщение # 166 |
Администратор
Язык программированя: BascomAVR
Группа: Администраторы
Сообщений: 327
Репутация: 8
Статус: Offline
|
|
|
|
|
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]А учебные курсы то не читаем [/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
|
|
|
|