roboforum.ru

Технический форум по робототехнике.
Текущее время: 13 апр 2025, 12:08

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 147 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 01 фев 2020, 21:48 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
:crazy: Дошло до меня, серва с 4 проводом это не исполнительный механизм, это устройство ввода-вывода информации...
Заморочился "умным переключателем"- выставляем желаемую последовательность программ, а он сам эту последовательность перещёлкивает. Для опыта взял светодиод на 13 выводе (каждой программе - своя частота миганий).


Вложения:
умный переключатель.jpg
умный переключатель.jpg [ 746.73 КиБ | Просмотров: 3235 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 03 фев 2020, 21:36 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Написал скетч для двух серв в режиме "ручное программирование". Движения в ролике повторяют хождение робозавра (картинку прилагаю).
В принципе теперь можно аниматроника руками шевелить для оживления.


Вложения:
IMG_7259.JPG
IMG_7259.JPG [ 2.17 МиБ | Просмотров: 3190 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 03 фев 2020, 23:36 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2685
Откуда: Где-то в Латинской Америке
Забавно. Похвально, что исследовательский запал еще не погас.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 14 фев 2020, 21:17 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Код:
#include <Servo.h>
#define kolvoKAD 20//количество кадров-тактов
#define kolvoSV 2//количество сервоприводов (1-6 штук)
//сервоприводы подключаются Arduino UNO: сигнальный провод - со 2 вывода до 7, обратной связи с 14 по 19 (А0-А5)
Servo servo[kolvoSV];

byte ugolServ [kolvoKAD][kolvoSV];//массив-таблица хранения значений углов серв по кадрам
int tabl_da[kolvoSV];//массив переменных приращения углов серв
int tabl_ga[kolvoSV];//массив переменных длительностей между переключениями серв
long tabl_Ya[kolvoSV];//массив переменных хранения моментов времени
int tabl_poprFor[kolvoSV];//массив хранения поправок к формуле для каждой сервы

int n=500;//длительность общая шага-цикла в мс
int i=0;//счётчик элементов массивов
int j=0;//счётчик элементов массивов

boolean fl_A=false;//флаг состояний
boolean fl_B=false;//флаг состояний
boolean fl_C=false;//флаг состояний

void setup() {
   Serial.begin(9600);
   pinMode(13,OUTPUT);//вывод канала индикации
   digitalWrite(13, LOW);
   pinMode(10,INPUT);//вывод кнопки записи-воспроизведения движений серв
  for(i=0;i<kolvoSV;i++){servo[i].attach(i+2);servo[i].write(90);delay(500); servo[i].detach();}//начальные установки углов 90 градусов (подкл. на выводы начиная со 2 по возр.) 

///////////////// вносим данные поправок для каждой сервы ///////////////
tabl_poprFor[0]=0;
tabl_poprFor[1]=-4;
/////////////////////////////////////////////////////////////////////////
}
void loop() {
if(digitalRead(10)==LOW) {delay(300);//временная пауза для преодоления дребезга контактов кнопки

if(digitalRead(10)==HIGH){//если происходит краткое нажатие кнопки
zapis();}//функция на запись выставленных положений качалок для одного кадра

if(digitalRead(10)==LOW){//если происходит долгое нажатие кнопки
ispol_();}//функция на исполнение записанных в массив кадров
}
}
void ispol_()
{
  digitalWrite(13, HIGH);//включаем светодиод постоянно - пошло исполнение записанного
  for(i=0;i<kolvoSV;i++){servo[i].attach(i+2);servo[i].write((analogRead(14+i) - 75+tabl_poprFor[i]) / 3);}
 
  while(true)//запускается бесконечный цикл ходьбы
  {
     for (j=0;j<kolvoKAD;j++)//проверяем все углы по кадрам-тактам
   
   {
      if( fl_C==false) {Serial.println(" ");}//печатаем "пустую строку" между каждым кадром-тактом
       
       for(i=0;i<kolvoSV;i++){if(ugolServ [j][i]!=0){fl_A=true;break;}}
       if(fl_A==true)//если хоть один элемент кадра-такта не 0
     
     {
      fl_A=false;//взведение флага
      ///////////////////
       for(i=0;i<kolvoSV;i++)
       {
        if( fl_C==false){Serial.print("КАДР ");Serial.print(j);Serial.print(" СЕРВОПРИВОД ");
        Serial.print(i);Serial.print(" УГОЛ ");Serial.println(ugolServ [j][i]);}//печать в монитор выставленных углов по приводам и кадрам при первом проходе массива
       
        if(ugolServ [j][i]-servo[i].read()>0){tabl_da[i]=1;}//определяем есть ли приращение и его знак
        if(ugolServ [j][i]-servo[i].read()<0){tabl_da[i]=-1;}
        if(ugolServ [j][i]-servo[i].read()==0){tabl_da[i]=0;}
        if(tabl_da[i]!=0){tabl_ga[i]=n/abs(ugolServ [j][i]-servo[i].read());}//определяем временную паузу между приращениями шага
        if(tabl_da[i]==0){tabl_ga[i]=0;}
        }
      /////////////////
      do
       {
        fl_B=true;
            for (i=0; i<kolvoSV ; i++) {
              if (ugolServ [j][i]!=servo[i].read()) {
               fl_B=false;
                break;
                  }
                  }
         for(i=0;i<kolvoSV;i++)
         {
         if(millis()- tabl_Ya[i]>tabl_ga[i]&&ugolServ [j][i]!=servo[i].read()){tabl_Ya[i]=millis(); servo[i].write(servo[i].read()+tabl_da[i]);}
     
         }
      }while(!fl_B); // пока все сервы не придут к табличному углу поворота...
     }
   }
    fl_C=true;//сигнал на прерывание повторной печати в монитор порта
  }
}
/////////////////////////////////////////////////////////////

void zapis()
{
for(i=0;i<kolvoSV;i++){ugolServ [j][i]=(analogRead(14+i) - 75+tabl_poprFor[i]) / 3;}j++;if(j>=kolvoKAD){j=0;}//запись выставленных значений углов в массив
  digitalWrite(13, HIGH);delay(300);digitalWrite(13, LOW);//кратко мигаем светодиодом -запись прошла 
}


Обобщил скетч механического программирования движений качалок сервопривода для 1-6 серв. Максимальное количество ограничивается числом аналоговых входов, это легко изменить с помощью мультиплексоров. А вот как оставить свободные пины после использования 12 серв это вопрос.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 21 фев 2020, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Задумался попробовать сделать квадропода с механическим программированием (чисто для знания). Моя конструкция с "лобзиковой печатью на секундном клее" явно не выдержит такого. Насмотрел ходовой вариант для печати. Подскажите сколько такой вариант может стоить и где проще заказать?


Вложения:
s29406541.jpg
s29406541.jpg [ 146.84 КиБ | Просмотров: 2939 ]
s35818215.jpg
s35818215.jpg [ 91.83 КиБ | Просмотров: 2892 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 23 фев 2020, 14:45 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Нашёл как подсчитать, около 1200 рублей удовольствие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 23 фев 2020, 19:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2685
Откуда: Где-то в Латинской Америке
Такому самоделкину уже пора свой принтер заиметь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 23 фев 2020, 21:42 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Scorpio писал(а):
Такому самоделкину уже пора свой принтер заиметь.

И это будет первое полезное устройство в его зоопарке :)
Только лучше собрать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 24 фев 2020, 13:00 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Сама по себе вещь любая бесполезна, вопрос в пользователе:)
Принтер дорогая вещь и сложная. Сначала надо понять как модельки делать, потом как пользоваться принтером, потом научиться отличать средь них хрен от редьки, потом устройство, потом думать о готовых наборах для сборки. А желалки возникли от зависти :) читатель решил повторить квадропода, обратился с просьбой переделать приложение и скетч под свой вариант. А вариант реализован на принтере, плату в Китае заказал, короче красивый вариант, не то что у меня. Так что теперь только механическое программирование и голосовое управление квадроподом меня утешит. А десятки тысяч под устройство пока бесполезное в моих руках это рановато.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 29 фев 2020, 15:28 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Распечатали детальки, заказал сервы, саморезы для крепления, нано... пока 2 месяца ждать задумался о создании моделек деталей для своих конструкций. С чего начинать? Какие особенности при разработке элементов корпуса, чтоб проще и дешевле?


Вложения:
робозавр.jpg
робозавр.jpg [ 1.22 МиБ | Просмотров: 2732 ]
P1100705.JPG
P1100705.JPG [ 1.25 МиБ | Просмотров: 2729 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 29 фев 2020, 18:36 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2685
Откуда: Где-то в Латинской Америке
Мне нравится OpenScad.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 29 фев 2020, 18:52 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
На робозавре своём хочу потренироваться, сначала придумать адекватные для принтера детальки-схему шасси, а уже потом пробовать рисовать в программах. "Опенскад" тяжеловат для далёкого от объёмного моделирования человека? А "Тинкеркад" это слишком примитивно?, размерные элементы с отверстиями и внутренними полостями не нарисовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 29 фев 2020, 18:58 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2685
Откуда: Где-то в Латинской Америке
"Опенскад" проще пареной репы. Ты, как программист его быстро освоишь. Морду динозавра не нем не нарисуешь, но детали для сборки - в самый раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 29 фев 2020, 19:05 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Ну если есть обучалки... Это в нём с помощью команд-кода рисуют?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простая аниматроника на Ардуино
СообщениеДобавлено: 01 мар 2020, 21:29 
Не в сети
Аватара пользователя

Зарегистрирован: 03 янв 2013, 16:27
Сообщения: 1386
Нарисовал первую детальку - основание для крепления серв (без отверстий). Попробовал сохранить изображение в растре - ошибок нет и сохранённого файла в папке (указанной) тоже нет. В формате для печати файл тоже не с первого раза сохранился в указанной папке.


Вложения:
первая деталь.jpg
первая деталь.jpg [ 429.97 КиБ | Просмотров: 2671 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 147 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 10  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO