Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.06.2015, 17:50   #21
nafe93
Member
 
Регистрация: 27.04.2015
Сообщений: 60
Вес репутации: 0
nafe93 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

технический все установлено , остался код для arduino
проблема в том что у меня машинка ездить и считывает а надо чтобы с начала проверила есть ли там препятствие а потом ехала
код:
#include <CyberLib.h>
#include <Servo.h> //используем библиотеку для работы с сервоприводом
Servo servo; //объявляем переменную servo типа Servo
#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}



void robot_go(){
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
analogWrite(5, 150); //управление скоростю двигателя
analogWrite(6, 150); //управление скоростю двигателя
}




#define robot_back {D4_High; D5_Low; D6_Low; D7_High;}
#define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}
#define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;}
#define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;}

#define size_buff 5 //размер массива sensor
uint16_t sensor[size_buff]; //массив для хранения замеров дальномера
uint8_t stat=0; //направление разворота

void setup()
{
servo.attach(12); //привязываем привод к порту 12
motors_init; //инициализация выходов моторов
D11_Out; D11_Low; //динамик
D14_Out; D14_Low; //пин trig ультразвукового сонара
D15_In; //пин echo ультразвукового сонара
randomSeed(A6_Read); //Получить случайное значение
for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение готовности робота
wdt_enable(WDTO_500MS); //Сторожевая собака 0,5сек.
}

void loop()
{Start
uint16_t dist=GetDistance(); //производим замер дистанции

if( dist < 10) {rotation(stat, 255);} else //если 10см максимальный угол разворота
if( dist < 20) {rotation(stat, 200);} else //если 20см средний угол разворота
if( dist < 35) {rotation(stat, 180);} else //если 35см минимальный угол разворота
{robot_go(); stat=~stat;} //поехали!!!
wdt_reset(); //покормить собаку
End;}
//**************************************** ***********
void rotation(uint8_t arr, uint8_t dur)
{
switch (arr) //смотрим в каком направление разворачиваться
{
case 0: robot_stop;delay(50);robot_back;delay(15 0);robot_rotation_right;delay(150);
break;
case 255: robot_stop;delay(50);robot_back;delay(15 0);robot_rotation_left;delay(150);
break;
}
delay_ms(dur); //угол разворота
robot_stop; //стоп мотор!
}
//**************************************** ***********
uint16_t GetDistance()
{
uint16_t dist;
for (uint8_t i = 0; i < size_buff; ++i) //производим несколько замеров
{
D14_High; delay_us(10); D14_Low; //запустить измерение
dist = pulseIn(15, HIGH, 2400); //считываем длительность времени прохождения эха, ограничить время ожидания
if(dist==0) dist=2400;
sensor[i]=dist; //сохранить в массиве
delay_ms(40); //задержка между посылками
wdt_reset(); //покормить собаку, что бы она не сбежала
}
dist=(find_similar(sensor, size_buff, 58))/58; // //фильтруем показания датчика и переводим в см
return dist;
}
nafe93 вне форума   Ответить с цитированием
Старый 19.06.2015, 18:05   #22
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Робот объезжающий препятствия

Цитата:
проблема в том что у меня машинка ездить и считывает а надо чтобы с начала проверила есть ли там препятствие а потом ехала
Создаете массив на 180 замеров, можно сократить например до 18 замеров
то есть 1 замер каждые 10 градусов
Робот останавливается и производит замеры, заполняя массив
Потом анализирует массив, выбирает из массива лучшее направление, при помощи энкодеров поворачивается на нужный угол и едет по выбранному направлению пока не увидит новое препятствие
Admin вне форума   Ответить с цитированием
Старый 19.06.2015, 18:17   #23
nafe93
Member
 
Регистрация: 27.04.2015
Сообщений: 60
Вес репутации: 0
nafe93 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

спасибо большое
nafe93 вне форума   Ответить с цитированием
Старый 04.09.2015, 21:57   #24
Hamann
Junior Member
 
Регистрация: 04.09.2015
Сообщений: 13
Вес репутации: 0
Hamann is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Наконец то нашел адекватный форум где знающие люди в области ардуино подсказывают.
Есть небольшая заминка как раз в разработке объезда препятствий. Проблема как у многих в финансах, необходимо установить 6 дальномеров (левый передний под 45 градусов, перед, правый передний по 45 градусов, и 3 сзади так же). Они должны быть маленькие - поэтому ИК. Вопрос собственно: Возможно ли все это организовать на отдельных ИК диодах и приемниках (по возможности 2-3мм диаметр)? Возможно ли сокращение кол-ва ИК диодов? Допустим что б 1 диод светил вперед, а результат получать на 3 приемника. Получение точного расстояния не обязательно, нужно что б определял препятствие на заданной (и ближе) длине приблезительно до 50 см.
Сразу во избежание вопросов "почему не подцепить на крутящуюся серву?" нет такой возможности, есть только возможность установки по 6 диодов на перед/зад.
Hamann вне форума   Ответить с цитированием
Старый 04.09.2015, 23:09   #25
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Робот объезжающий препятствия

1 светодиод можно установить, но нужен будет сделать специальный отражатель, что бы свет от него распостранялся на 180 или 360 градусов
На форуме есть простенькие примеры нужных Вам датчиков
1-пример на ик светодиоде и фототранзисторе
2-пример на ик светодиоде и ИК фотоприемнике 38кГц
Admin вне форума   Ответить с цитированием
Старый 24.01.2016, 14:15   #26
nikolass25
Junior Member
 
Регистрация: 03.01.2016
Сообщений: 14
Вес репутации: 0
nikolass25 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Не подскажите, где взять библиотеку " servo h"
nikolass25 вне форума   Ответить с цитированием
Старый 24.01.2016, 21:26   #27
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Робот объезжающий препятствия

А эта библиотека не встроена в IDE?
Admin вне форума   Ответить с цитированием
Старый 26.01.2016, 00:00   #28
nikolass25
Junior Member
 
Регистрация: 03.01.2016
Сообщений: 14
Вес репутации: 0
nikolass25 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Да, нашел Спасибо.
nikolass25 вне форума   Ответить с цитированием
Старый 06.12.2016, 10:46   #29
Paul_B
Member
 
Регистрация: 06.12.2016
Сообщений: 35
Вес репутации: 0
Paul_B is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Почитал. Вопросы - если у вас есть оптические энкодеры, то почему крутизну поворота вы задаете временем, а не анализируете угол поворота?
И еще вопрос - поворот задавать разностью скоростей (скажем левый 50, правый 150) или обязательно внутренние колеса останавливать?
Нужно ли реализовывать разворот на месте (т.е. когда колеса крутятся в разные стороны)?
Хочу все это реализовать, анализируя угол поворота из расстояния, проходимыми колесами (из показаний энкодера).

Вопрос 2: wdt_enable(WDTO_500MS) - что это за зверь?
И какие функции реализуют: robot_rotation_right и robot_rotation_left?
Эти же функции есть и в анализаторе прямолинейности движения.
Вот поэтому я и не люблю пользоваться чужими библиотеками, а проще все написать самому.

Последний раз редактировалось Paul_B; 06.12.2016 в 10:50.
Paul_B вне форума   Ответить с цитированием
Старый 06.12.2016, 12:47   #30
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Робот объезжающий препятствия

Цитата:
Почитал. Вопросы - если у вас есть оптические энкодеры, то почему крутизну поворота вы задаете временем, а не анализируете угол поворота?
Код приведен для всех, а в основном ни у кого нет энкодеров

Цитата:
Нужно ли реализовывать разворот на месте (т.е. когда колеса крутятся в разные стороны)?
Нужно, так как при таком развороте робот остается на том же месте

Цитата:
Вопрос 2: wdt_enable(WDTO_500MS) - что это за зверь?
сторожевой таймер, от зависаний

Цитата:
robot_rotation_right и robot_rotation_left
переведите с английского
вращение в лево и вращение в право
или он же разворот на месте
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 22:24. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика