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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.05.2013, 14:05   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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
По умолчанию Робот объезжающий препятствия

Предлагаю упрощенную схему робота объезжающего препятствия
В прошлой статье для робота требовались оптические энкодеры на каждое колесо.
Но как выяснилось у подавляющего большинства пользователей нет возможности установить энкодеры на свои конструкции.
По этой причине я упростил схему и код

Робот состоит из
Акриловой платформы
Arduino Nano v.7
Ultrasonic sensor
Драйвер двигателей
Инструкция по сборке

Схема робота
Нажмите на изображение для увеличения
Название: Cyberbot3.png
Просмотров: 3898
Размер:	45.3 Кб
ID:	1069

Библиотека CyberLib
Исходный код
PHP код:
#include <CyberLib.h>

#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}
#define robot_go {D4_Low; D5_High; D6_High; D7_Low;}
#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()  
{
  
motors_init;  //инициализация выходов моторов
  
D11_Out;  D11_Low;    //динамик
  
D14_OutD14_Low//пин trig ультразвукового сонара
  
D15_In;     //пин echo  ультразвукового сонара
  
randomSeed(A6_Read); //Получить случайное значение
  
for(uint8_t i=0i<12i++) beep(70random(1002000)); //звуковое оповещение готовности робота
  
wdt_enable(WDTO_500MS);    //Сторожевая собака 0,5сек.
}

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

    
if( dist 10) {rotation(stat255);} else   //если 10см максимальный угол разворота
    
if( dist 20) {rotation(stat200);} else   //если 20см  средний угол разворота
    
if( dist 40) {rotation(stat130);} else   //если 40см  минимальный угол разворота
                   
{robot_gostat=~stat;}       //поехали!!!      
     
wdt_reset(); //покормить собаку
End;}
//***************************************************
void rotation(uint8_t arruint8_t dur
{
    switch (
arr//смотрим в каком направление разворачиваться
    
{
    case 
0:    robot_rotation_right;
      break;
    case 
255:    robot_rotation_left
      break;    
    } 
    
delay_ms(dur);    //угол разворота
    
robot_stop;      //стоп мотор!
}
//***************************************************
uint16_t GetDistance() 
{
 
uint16_t dist;
 for (
uint8_t i 0size_buff; ++i//производим несколько замеров
  

    
D14_Highdelay_us(10);  D14_Low;  //запустить измерение
   
dist pulseIn(15HIGH2400); //считываем длительность времени прохождения эха, ограничить время ожидания
   
if(dist==0dist=2400;  
   
sensor[i]=dist;  //сохранить в массиве
   
delay_ms(40); //задержка между посылками
   
wdt_reset(); //покормить собаку, что бы она не сбежала 
  
}
  
dist=(find_similar(sensorsize_buff58))/58// //фильтруем показания датчика и переводим в см
  
return dist;

Снимал видео несколько раз, но робот почему то сразу выбирался из ловушки. Даже не интересно, никакой зрелищности
Но вот наконец то попался вариант, когда робот покрутился прежде чем выбраться
Admin вне форума   Ответить с цитированием
Старый 21.06.2013, 21:42   #2
Nik
Junior Member
 
Регистрация: 11.08.2012
Сообщений: 17
Вес репутации: 0
Nik is an unknown quantity at this point
По умолчанию А где же взять библиотеки?

Спасибо за прекрасно проведённую и описанную работу! Очень хочу повторить, и сразу натыкаюсь в коде на включённые библиотеки:
Код:
#include <CyberLib.h>
поделитесь - где ее взять? и для ультразвукового сенсора фильтр? Спасибо!
Nik вне форума   Ответить с цитированием
Старый 22.06.2013, 01:27   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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
По умолчанию

В теме про ускорение работы Arduino
В этой библиотеке все что требуется
А WDT можно не использовать,он нужен на тот случай если контроллер зависнет и эта функция корректно работает только с ARDUINO Nano V.7
Admin вне форума   Ответить с цитированием
Старый 22.06.2013, 12:03   #4
Nik
Junior Member
 
Регистрация: 11.08.2012
Сообщений: 17
Вес репутации: 0
Nik is an unknown quantity at this point
По умолчанию ещё вопросик.

Спасибо, всё собралось. даже моторчики зашевелились(пока платформу не собрал).Я использую arduino mini pro,теперь следующий вопрос:
как правильно подключить пищалку к пину D11? Можно ли использовать обычные эл.магн.динамики на 16 Ом или пьезо? В описании carduino v7 не совсем понятно-стоит ли в цепи ножки SPK транзистор.

P.S. Уже нашёл

Последний раз редактировалось Nik; 22.06.2013 в 18:07. Причина: решено
Nik вне форума   Ответить с цитированием
Старый 23.06.2013, 09:23   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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
По умолчанию

Я использую звуковой капсуль, пищит достаточно громко
Динамик 16 ом тоже можно использовать
Admin вне форума   Ответить с цитированием
Старый 25.01.2014, 12:23   #6
DEN75
Junior Member
 
Регистрация: 21.01.2014
Сообщений: 5
Вес репутации: 0
DEN75 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Вопрос - попытался повторить один в один вашу конструкцию.
У меня контроллер Arduino MEGA 2560/
Сразу после запуска компиляции выдает ошибку кода, останавливаясь на строке
motors_init; //инициализация выходов моторов
"D4 Out was not declared in this scope
"D11 Out was not declared in this scope
"D14 Out was not declared in this scope
"D15 IN was not declared in this scope
"A6 read was not declared in this scope
"beep was not declared in this scope
"WDTO 500ms was not declared in this scope

Что делаю не так или может все дело в особенностях кода для Arduino MEGA 2560 ?
Помогите пожалуйста с кодом.
Где можно посмотреть код того же самого, но с установкой уьтразвукового сканера на серву.
И еще у вас была опубликована ранее схема с применением компаса. Где ее можно найти ?

Спасибо.
DEN75 вне форума   Ответить с цитированием
Старый 25.01.2014, 12:31   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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: Робот объезжающий препятствия

Библиотека CyberLib поддерживает контроллеры Atmega168/328
Admin вне форума   Ответить с цитированием
Старый 25.01.2014, 14:57   #8
DEN75
Junior Member
 
Регистрация: 21.01.2014
Сообщений: 5
Вес репутации: 0
DEN75 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Цитата:
Сообщение от Admin Посмотреть сообщение
Библиотека CyberLib поддерживает контроллеры Atmega168/328
То есть для MEGA нет ничего похожего ?
DEN75 вне форума   Ответить с цитированием
Старый 25.01.2014, 15:02   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
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: Робот объезжающий препятствия

К сожалению под мегу нет
Admin вне форума   Ответить с цитированием
Старый 25.01.2014, 16:47   #10
DEN75
Junior Member
 
Регистрация: 21.01.2014
Сообщений: 5
Вес репутации: 0
DEN75 is an unknown quantity at this point
По умолчанию Re: Робот объезжающий препятствия

Цитата:
Сообщение от Admin Посмотреть сообщение
К сожалению под мегу нет
Тогда мне нужно будет прописать назначение выводов контроллера через#define либо int ?
DEN75 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 8 (пользователей: 0 , гостей: 8)
 

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

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

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


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


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