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

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

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


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

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

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

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


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


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