Теперь в нашем онлайн-магазине доступна уникальная книга «BEAM-робототехника. От азов до создания практических устройств», идеально подходящая как для кружков робототехники, так и для самообучения дома. Вы можете приобрести её по привлекательной цене в 699 рублей. Дополнительная информация о книге доступна на нашем сайте. Также в ассортименте нашего онлайн-магазина представлены готовые наборы для сборки роботов, с помощью которых ваш ребенок сможет легко собрать своего первого робота, следуя нашим подробным инструкциям. Перейти в магазин


[ Раскрыть online-чат / Закрыть ] · [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Модератор форума: nightmare, Huntswarrior, Aleks_Crow, {{TNT}}  
Робот на ардуино
Администраторы
3417 сообщений
Мужчина
Цитата Подскажите, к каким пинам подключаются три сервы, дальномер, оптопары??? ()
undefined

- ну вообще-то начинают с того, что у вас есть уже и к чему вы там хотите все это подключать. Телепаты тут есть, но мы временно их не оплачиваем ))


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Администраторы
3417 сообщений
Мужчина
Цитата к каким пинам (Arduino uno) подключаются три сервы, дальномер, оптопары???

()
undefined

- Так. Ну под севы есть порты помеченные как PWD, или со знаком тильда ~ что ли. Зависит от сервы - цифровая или аналоговая. Они же разные но принцип тот же. Дальномеры тоже разные бывают, как цифровые, которые показывают есть препятствие или нету, или расстояние которые показывают до препятствия. Оптопары туда же ) Проще говоря можно вешать на любой порт, главное понимать как его задействовать для работы девайса.


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
Отправлено 30.06.2014 - 08:3878
Начальная группа
3 сообщений
Мужчина
Спасибо что ответили, но я спрашивал за первый код на первой страницы, именно там мне не понятно куда,что подключается???


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 16.07.2014 - 19:2779
Участник
79 сообщений
Мужчина
vpashko7872, Смотри, первый код, это программа обнаружения препятсвий и их объезд.Задействована одна серва и дальномер. На драйвере моторов, который я покупал, есть отдельно выведенные разъемы для серв. К каким они пинам подключены, не помню, надо читать в описании этого драйвера. Для начала нужно с книжкой разобрать команды в программе, тогда все станет понятно.
Код
int i;  
  for (i=0;i<5;i++){ // Повторить 5 раз для фильтрации шума  
  gp2=(gp2+analogRead(0));  
  }  
  gp2=gp2/5;  
  gp3=(2914/(gp2+5))+1;

Serial.println(gp3);
Сдесь видим, что дальномер подключен к analogRead(0), то есть к аналоговому пину 0.
Как то ттак


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 03.10.2014 - 15:2780
Начальная группа
1 сообщений
Мужчина
Евгений74, можешь пожалуйста скинуть схему подключения?


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 10.05.2016 - 13:0881
Начальная группа
4 сообщений
Мужчина
Захотел вместе с сыном реализовать такого робота. Заказал вместо L-Motor Shield (нет в наличии) из Китая - стандартный L293D. Хватит ли там выходов для подключения всех серво приводов? Подскажите, что нужно изменить в программе (коде) с 5 страницы для использования данного шильда. Пока разбираюсь что и куда подключать.
Получается так?
Digital 3 и 7 - Мотор А
Digital 11 и 8- Мотор Б
Analog 0 -----ИК радар
LED pin 12 и 13 - MP3 плеер
с сервами пока не разобрался, поскольку совсем новичек в программировании...


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 30.05.2016 - 18:0082
Начальная группа
4 сообщений
Мужчина
Пока запчасти идут из Китая, накидал проект в Протеусе. Соединение двигателей и серво делал согласно схемы L-Motor Shield как у автора. Но чет не работает нормально.Правая лапа глючит, двигатели живут своей жизнью... Ну и на датчики поверхности не реагирует совсем.
Непонятно...

Добавлено (30.05.2016, 18:00)
---------------------------------------------
Никак не могу понять, какие датчики поверхности используются в проекте? Вот с такими не получается ничего... Может код поправить надо? Но я в этом не силён...



6615487.zip (81.2 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 31.05.2016 - 19:1983
Участник
79 сообщений
Мужчина
Добрый день. Редко захожу сюда. датчик поверхности делал из обычного светодиода и фототранзистора. Ваш в принципе тоже самое. Нужно только его подстроить, или подредактировать критичные значения в коде. Яуже давно не брался запрограмирование, поэтому на все вопросы ответить не смогу. Мой совет вам, взять книжку по программированию ардуино, и с ее помощью попробовать разобраться с датчиками, запустить моторы, научить робота ездить вперед, назад, по квадрату, подключить дальномер. Дальше будет разобраться проще. За основу возьмете мой код, но напишите его уже под свое оборудование.


Профиль Личное сообщение Дом. страница icq Skype
14
Отправлено 31.05.2016 - 22:0784
Начальная группа
4 сообщений
Мужчина
Спасибо Евгений74 что ответили. Я за программирование вообще никогда не брался. Во времена моей молодости компьютеры были величиной с большой книжный шкаф. Решил сыну робота собрать в колледж (радиотехнический).
Попробовал подключить всё (кроме двигателей, т.к. ещё не пришли) Сервы зашевелились, данные с ИК радара считывает, но на датчики поверхности не реагирует. Подключал через Sensor Shield v4.0 поскольку L-Motor Shield нет в наличии.
Подскажите что нужно поправить в управлении моторами при использовании стандартного L293D Motor Shield или L298N Motor Drive Controller Board Module
По подключению вроде вот так:
Analog 0 - ИК радар
LED pin 12 и 13 - MP3 плеер
Analog 1 - 1-й ИК датчик
Analog 2 - 2-й ИК датчик
Digital 10 - серва головы
Digital 5 - серва 1-й лапки
Digital 9 - серва 2-й лапки


Профиль Личное сообщение Дом. страница icq Skype
0
Отправлено 15.08.2016 - 23:4185
Начальная группа
4 сообщений
Мужчина
Приветствую всех. Попытался повторить робота-уборщика представленного здесь. Сразу скажу не хочет РОБОТяга работать как у автора. Естественно это моя первая попытка разобраться в программировании Ардуино и пару месяцев изучения темы не смогли внести ясность в понимании того что я делаю не так. Питание силовой части организовал отдельно от Ардуинки.
Немного изменил компоненты робота:
1. Вместо LMotorShield подключил движки к драйверу на L298N
2. Вместо ИК дальномера SHARP GP2D120 использовал SHARP GP2Y0A41SK аналогичный по техническим характеристикам (дальность от 4 до 30 сантиметров).
3. Подключал всё к Ардуино UNO для удобства через Arduino Sensor Shield v 5.0

Вот данные подключения:
Analog 0 - ИК радар Sharp
Analog 1 - 1-й ИК датчик поверхности
Analog 2 - 2-й ИК датчик поверхности
Digital 2 и 7 - мотор А вращение
Digital 3 - ШИМ мотора А
Digital 2 и 7 - мотор В вращение
Digital 3 - ШИМ мотора В
Digital 6 - серва головы
Digital 10 - серва левой лапки
Digital 9 - серва правой лапки

Теперь о грустном, о проблемах с которыми я столкнулся: Если отключить двигатели и двигать робота руками, то всё работает отлично. Он вертит головой, как увидит препятствие перестаёт "оглядываться", далее поворачиваешь его к нему и продвигаешь вперёд. Далее он отворачивает голову, захватывает лапами предмет и после дальнейшего его продвижения вперёд отпускает предмет у края стола.
Но если подключаешь двигатели, то робот начинает жить своей жизнью. После того как он увидит препятствие, он замирает (останавливается) вместо того, чтобы повернуться к предмету и подъехать к нему. Двигатели конечно продолжают работать, но как-то в полсилы и ему не хватает мощи для поворота.
Чаще всего просто не замечает никаких предметов, а проносится мимо до края стола (грешу на дальность ИК дальномера Sharp (от 4 до 30 сантиметров)), срабатывают датчики поверхности, он резко рвёт немного назад разворачивается. При повторном подъезде к краю он уже не останавливается а падает в пропасть....

Добавлено (15.08.2016, 23:41)
---------------------------------------------
Вот скетч от автора, немного неумело переделанный мной под мою распиновку:

#include <Servo.h>

Servo rightHand;
Servo leftHand;
Servo head;

int IN1 = 7; // Input1 подключен к выводу 7 мотор А вращение
int IN2 = 2; // Input2 подключен к выводу 2 мотор А вращение
int IN3 = 8; // Input3 подключен к выводу 8 мотор B вращение
int IN4 = 4; // Input4 подключен к выводу 4 мотор B вращение
int ENB = 3; // ШИМ вторго мотора (левого)
int ENA = 11; // ШИМ первого мотора (правого)
int ledPin = 13; // Кнопка включения мп3
int ledPin1 = 12; // кнопка перемотки мп3
int i;
int j;
int p[18]; // массив, здесь будем записывать данные с ИК дальномера в разных его положениях
int gp,gp1,gp2,g;
int b;

void setup() {
{
Serial.begin(9600);

}

rightHand.attach(9); // подключение правой лапки
leftHand.attach(10); // подключение левой лапки
head.attach(6); // подключение сервы головы


pinMode(ledPin,OUTPUT);
pinMode(ledPin1,OUTPUT);
pinMode (ENA, OUTPUT); // мотор А скорость
pinMode (IN1, OUTPUT); // мотор А вращение
pinMode (IN2, OUTPUT); // мотор А вращение
pinMode (ENB, OUTPUT); // мотор В скорость
pinMode (IN3, OUTPUT); // мотор В вращение
pinMode (IN4, OUTPUT); // мотор В вращение
}
void Forward() { // Подпрограмма движения робота вперед
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);

analogWrite(ENA,170); // подаем на вывод ENА и ENВ управляюший ШИМ сигнал
analogWrite(ENB,170);
}
void Backward(){ // Подпрограмма движения робота назад
digitalWrite (IN1, LOW); // вращаем мотор в обратную сторону
digitalWrite (IN2, HIGH);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);

analogWrite(ENA,170); // подаем на вывод ENА и ENВ управляюший ШИМ сигнал
analogWrite(ENB,170);
}
void motorStop(){ // Подпрограмма остановки мотора

analogWrite(ENA,0); // подаем на вывод ENА и ENВ управляюший ШИМ сигнал равный нулю
analogWrite(ENB,0);
}
void motorRun(){ // Подпрограмма запуска мотора
analogWrite(ENA,170); // подаем на вывод ENА и ENВ управляюший ШИМ сигнал
analogWrite(ENB,170);
}
void Spin_Left(){ // Поворот влево
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
void Spin_Right(){ // Поворот вправо
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}


void loop()
{
rightHand.write(15); // раскрываем правую лапку
delay(100);
leftHand.write(160); // раскрываем левую лапку
delay(100);
head.write(90); // голова смотрит вперёд
delay(200);
j=0;
for (j = 0; j < 18; j++){ // для j от 0 до 18
head.write(j*10); // вращение сервы по 10 градусов (умножаем полученное значение на 10)

gp=analogRead(0); // считываем данные с ИК радара
delay(50);
p[j]=gp; // записываем это значение в массив
Serial.println(p[j]); // выводим на экран

gp2=(analogRead(2)); // считываем значение датчиков плоскости
gp1=(analogRead(1));
g=min(gp1,gp2); // выбираем минимальное значение из двух
if (g>900){ // Если значение больше 900 (датчик сработал), то отходим назад и разворачиваемся
motorRun();
Backward();
delay(500);
Spin_Left();
delay(600);
motorStop();
}

if (p[j]<160){ // если значение с дальномера меньше 150, (примерно 25 см.), то шаг вперед
motorRun();
Forward();
delay (50);
motorStop();}
else { // Иначе

head.write(90); // поворачиваем голову вперед
delay(200);

gp=analogRead(0); // считываем данные с ИК радара
Serial.println(gp);
while(gp<160){ // поворачиваемся, пока не заметим предмет
motorRun();
if (j>9){ // если предмет с лева, то
Spin_Left(); // поворот в сторону объекта
}
else { // иначе поворот вправо
Spin_Right();
}
delay (10);
motorStop();
gp=analogRead(0); // считываем данные с ИК радара
delay(50);
}
gp=analogRead(0); // считываем данные с ИК радара
delay(50);
while(gp<400){ //Двигаемся вперед пока предмет не будет на расстоянии 10 см.
motorRun();
Forward(); // движение до объекта
delay (50); // время движения
motorStop();
gp=analogRead(0); // считываем данные с ИК радара
delay(50);
}
head.write(175); // убираем голову в сторону, чтобы она не мешала захвату предмета и транспортировке
delay(100);
motorRun();
Forward(); // движение до объекта
delay (70); // время движения
motorStop();

rightHand.write(80); // захват первой лапой
delay(500);
leftHand.write(80); // захват второй лапой
delay(100);

gp2=(analogRead(2)); // считываем значение датчиков плоскости
gp1=(analogRead(1));
g=min(gp1,gp2); // выбираем минимальное значение из двух
while(g<100) // движение после захвата до конца плоскости.
{
gp2=(analogRead(2)); // считываем значение датчиков плоскости
gp1=(analogRead(1));
Serial.println(gp2);
g=min(gp1,gp2); // выбираем минимальное значение из двух
motorRun();
Forward();
delay(5);
motorStop();}

rightHand.write(15); // раскрываем правую лапку
delay(100);
leftHand.write(160); // раскрываем левую лапку
delay(100);

motorRun();
Backward();
delay(100);
Spin_Right();
delay(600);
}
}
}



2527187.jpg (83.2 Kb)
Профиль Личное сообщение Дом. страница icq Skype
0
Администраторы
3417 сообщений
Мужчина
ganzubas, лучше в ВК нам пишите, ибо наш форум умер олет так 5 назад inverted suspect
https://vk.com/servodroid_ru


Только дурак нуждается в порядке-гений господствует над хаосом...
Онлайн ЧАТ по робототехнике ! Заходи и общайся без регистрации =)
Профиль Личное сообщение Дом. страница icq Skype
34
  • Страница 6 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
Поиск: