Ответить
  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    17 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 30 января 2017 19:59

    servo1.write(145);

  • Tester Senior Member
    офлайн
    Tester Senior Member

    5937

    22 года на сайте
    пользователь #3888

    Профиль
    Написать сообщение

    5937
    # 30 января 2017 20:01
    Andrew-1978:

    Тогда еще вопрос, а две УНО можно между собой соединить

    Сдуру можно и xy# сломать. Для всего нужно брать подходящие компоненты. Иначе потом будут рождаться такие "монстры" из десятка Ардуин.

    DENA77:

    #include <Servo.h>
    #include <IRremote.h>

    unsigned long Value1 = 0xFF6897;
    unsigned long Value2 = 0xFF9867;
    unsigned long Value3 = 0xFFB04F;
    unsigned long Value4 = 0xFF30CF;
    unsigned long Value5 = 0xFF18E7;
    unsigned long Value6 = 0xFF7A85;
    unsigned long Value7 = 0xFF10EF;
    unsigned long Value8 = 0xFF38C7;
    unsigned long Value9 = 0xFF5AA5;
    unsigned long Value10 = 0xFF42BD; //*
    unsigned long Value11 = 0xFF52AD; //#
    unsigned long Value12 = 0xFF629D; //^
    unsigned long Value13 = 0xFFA857; //^
    unsigned long Value14 = 0xFF4AB5; //0

    int RECV_PIN = 11;

    IRrecv irrecv(RECV_PIN);
    decode_results results;

    Servo servo1;
    Servo servo2;
    Servo servo3;

    void setup() {

    irrecv.enableIRIn();

    servo1.attach(8);
    servo2.attach(9);
    servo3.attach(10);
    }

    void loop() {

    if (irrecv.decode(&results)) {

    irrecv.resume();
    }

    if(results.value == Value1)
    servo1.write(15);

    if(results.value == Value2)
    servo1.write(80);

    if(results.value == Value3)
    servo1.write(145);

    if(results.value == Value4)
    servo2.write(25);

    if(results.value == Value5)
    servo2.write(90);

    if(results.value == Value6)
    servo2.write(155);

    if(results.value == Value7)
    servo3.write(1);

    if(results.value == Value8)
    servo3.write(65);

    if(results.value == Value9)
    servo3.write(130);

    if(results.value == Value10)
    servo1.write(15);

    if(results.value == Value11)
    servo1.write(145);

    if(results.value == Value10)
    servo2.write(25);

    if(results.value == Value11)
    servo2.write(155);

    if(results.value == Value10)
    servo3.write(1);

    if(results.value == Value11)
    servo3.write(130);

    if(results.value == Value14)
    servo1.write(80);

    if(results.value == Value14)
    servo2.write(90);

    if(results.value == Value14)
    servo3.write(65);

    if(results.value == Value12)
    servo1.write(145);

    if(results.value == Value12)
    servo2.write(155);

    if(results.value == Value12)
    servo3.write(130);

    if(results.value == Value13)
    servo1.write(15);

    if(results.value == Value13)
    servo2.write(25);

    if(results.value == Value13)
    servo3.write(1);
    }

    Боже, какой бы*локод... Что такое структуры, массивы, циклы мы не знаем...
    Что же касается "скорости сервоприводов" то она не регулируется. Серве дается указание в какое положение встать и все. Читайте тут в разделе "Принцип действия сервомашинки".

  • DENA77 Member
    офлайн
    DENA77 Member

    104

    14 лет на сайте
    пользователь #287870

    Профиль
    Написать сообщение

    104
    # 30 января 2017 20:19

    Главное работает.Вот нашёл пример по скорости.

    /*
    * Специально для сайта 1injener.ru
    * Сервопривод SG90 + Arduino. Подключение [180 градусов]
    */
    //Библиотека для работы с сервоприводом
    #include <Servo.h>
    //Обьявление переменной - объекта
    Servo servo;

    void setup()
    {
    //К пину №7 подключен управляющий вывод сервопривода
    //Данный метод библиотеки указывает пин через который происходит управление
    servo.attach(7);
    //servo.detach(7); - этот метод отключит управление от указанного пина.
    }

    void loop()
    {
    //Установка вала в 0 градусов
    servo.write(0);
    delay(2000); //ждем 2 секунды. Необходимо как минимум 30 микросекунд для установки.

    servo.write(90); //ставим вал под 90 градусов
    delay(2000); //ждем 2 секунды.

    // В библиотеке есть функция для чтения текущего положения (угла) сервопривода.
    // Будет считано последнее установленное значение в сервоприводе.
    // int AngleServo=servo.read();
    // От 0 до 180 градусов.

    servo.write(180); //ставим вал под 190 градусов
    delay(2000); //ждем 2 секунды.

    //Медленно возвращаемся обратно с интервалом в 1 градус
    for(int p=179; p>=1; p--)
    {
    servo.write(p);
    delay(20);
    }
    //Угол (Установить) можно задать во времени от нуля.
    //Так как у сервопривода есть характеристика скорости поворота 0.12 сек/60 град
    //servo.writeMicroseconds(1000);
    //То можно установить угол расчитав время.
    }

  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    17 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 30 января 2017 20:25 Редактировалось Protez1999, 1 раз.

    если в серве нет переменного резистора то она работает как мотор и можно регулировать скорость . если есть то можно поставить только угол на который она повернется. Ну или чтоб замедлить можно делать через паузу как в коде.

  • Andrew-1978 Senior Member
    офлайн
    Andrew-1978 Senior Member

    26303

    18 лет на сайте
    пользователь #50772

    Профиль
    Написать сообщение

    26303
    # 30 января 2017 20:36
    Tester:

    Andrew-1978:

    Тогда еще вопрос, а две УНО можно между собой соединить

    Сдуру можно и xy# сломать. Для всего нужно брать подходящие компоненты. Иначе потом будут рождаться такие "монстры" из десятка Ардуин.

    Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.

  • DENA77 Member
    офлайн
    DENA77 Member

    104

    14 лет на сайте
    пользователь #287870

    Профиль
    Написать сообщение

    104
    # 30 января 2017 20:36

    Сервы такие же как в примере с перемен.рез.Как мне применить(прописать) этот пример в моём скетче.

  • Tester Senior Member
    офлайн
    Tester Senior Member

    5937

    22 года на сайте
    пользователь #3888

    Профиль
    Написать сообщение

    5937
    # 31 января 2017 18:34
    Andrew-1978:

    Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.

    Я бы взял STM32 + Экран с контроллером ILI9341 + тачскрин с контроллером XPT2046. Только потому, что это у меня уже есть и есть наработки по коду :)
    Кстати, для такого экрана есть библиотека и под Ардуину - гуглить по названию чипа. На счет тача не знаю.

    DENA77:

    Главное работает.

    Это звучит примерно так же, как реплика "Главное что живой!" из уст пластического хирурга после неудачной операции :D

  • Andrew-1978 Senior Member
    офлайн
    Andrew-1978 Senior Member

    26303

    18 лет на сайте
    пользователь #50772

    Профиль
    Написать сообщение

    26303
    # 1 февраля 2017 09:30
    Tester:

    Andrew-1978:

    Так посоветуйте что взять, что бы подключить цветной сенсорный ЖК монитор и с его управлять 6-ю сервоприводами sg90 с отображением на экране положения серв.

    Я бы взял STM32 + Экран с контроллером ILI9341 + тачскрин с контроллером XPT2046. Только потому, что это у меня уже есть и есть наработки по коду :)
    Кстати, для такого экрана есть библиотека и под Ардуину - гуглить по названию чипа. На счет тача не знаю.

    Мдаа.
    Вариант №1. Ардуино УНО.
    Минусы - Экран на отдельную УНО, для каждых 6-ти серв - новая УНО.
    Плюсы - В интернете много информации и по схемам и по скетчам.

    Вариант №2. STM32 .
    Минусы - Очень мало (практически нет) информации по подключению серв к STM32.
    Плюсы - по скудной информации, можно подключить 20 серв на одну плату.
    Ну и вопрос по тачу.

    Исходя из этого, пока склоняюсь к УНО (тем более на данном этапе нужно 4-6 серв и идет "проверка сил";).

  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5071

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5071
    # 1 февраля 2017 14:50

    а какая информация нужна для подключения серво-мотора к stm32? как на пин подать плюс или минус?

    проклятый антисутенерский закон!
  • Andrew-1978 Senior Member
    офлайн
    Andrew-1978 Senior Member

    26303

    18 лет на сайте
    пользователь #50772

    Профиль
    Написать сообщение

    26303
    # 1 февраля 2017 15:15
    zverjuga:

    а какая информация нужна для подключения серво-мотора к stm32? как на пин подать плюс или минус?

    Ну мне, для начала, хотя бы узнать куда подключать управляющий провод, ну и +/- сервы заодно.

    ЗЫ. А вообще, как то мало информации по stm32 я нахожу, в отличии от УНО. Может в поиск надо не просто "stm32" вбивать, а еще и модификацию, или еще что :-?

  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5071

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5071
    # 1 февраля 2017 18:29

    один провод на +5 вольт, второй на землю, третий - на любой управляющий пин. это может быть пин 10, как на картинке, так и любой другой подобный. на stm32 - все аналогично. я так понимаю.
    то есть разница только в том. где на stm32 найти + и землю, и как подать на любой пин управляющий сигнал.

    проклятый антисутенерский закон!
  • Tester Senior Member
    офлайн
    Tester Senior Member

    5937

    22 года на сайте
    пользователь #3888

    Профиль
    Написать сообщение

    5937
    # 1 февраля 2017 18:46
    Andrew-1978:

    ЗЫ. А вообще, как то мало информации по stm32 я нахожу, в отличии от УНО. Может в поиск надо не просто "stm32" вбивать, а еще и модификацию, или еще что :-?

    Все даташиты лежат на st.com в свободном доступе! Что еще надо? :D

    Бери Мегу 256 и не дури себе мозги. И экран поищи другой, что бы "pwn пины" не занимал.
    Вообще все "немного" сложнее чем какой-нибудь analogWrite() или что там у вас.
    Рекомендую в ознакомительных целях почитать какие-нибудь курсы типа http://www.123avr.com, а потом http://avr-start.ru/?cat=9

  • 1636092 Neophyte Poster
    офлайн
    1636092 Neophyte Poster

    5

    9 лет на сайте
    пользователь #1636092

    Профиль
    Написать сообщение

    5
    # 2 февраля 2017 20:53

    подскажите пожалуйста документации, нужно сделать на подобии радара(что то вроде эффекта доплера), у меня есть два модуля(антенна+ардуинка), дальность работы 2 км, и мне нужно с помощью частоты, определить дальность и как на радаре где находиться объект

  • replikan Member
    офлайн
    replikan Member

    128

    12 лет на сайте
    пользователь #617192

    Профиль
    Написать сообщение

    128
    # 6 февраля 2017 21:34

    Подскажите пожалуйста, можно по блютус (HC-05) передавать одновременно 2 команды (на моторшильд, на 2 разных мотора)?

    replikan
  • Protez1999 Senior MemberАвтор темы
    офлайн
    Protez1999 Senior Member Автор темы

    9978

    17 лет на сайте
    пользователь #113845

    Профиль
    Написать сообщение

    9978
    # 6 февраля 2017 21:59

    скорее всего да. :insane:

  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5071

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5071
    # 6 февраля 2017 23:27

    хоть на сто. со сколькими сопрягся, стольким и передал. только команды будут не одновременно передаваться, а последовательно. то есть временной лаг, хоть и не большой, но будет.

    проклятый антисутенерский закон!
  • replikan Member
    офлайн
    replikan Member

    128

    12 лет на сайте
    пользователь #617192

    Профиль
    Написать сообщение

    128
    # 7 февраля 2017 17:56
    zverjuga:

    хоть на сто. со сколькими сопрягся, стольким и передал. только команды будут не одновременно передаваться, а последовательно. то есть временной лаг, хоть и не большой, но будет.

    В том то и вопрос, т.е. не получится на телефоне нажимать одновременно 2 кнопки (на каждой кнопке свой мотор)...?
    Для понимания того, что хочу сделать - управлять гусенечной техникой, т.е. для поворота правую гусеницу налево, левую гусеницу направо. Вы скажите - "так напиши скетч с такой логикой..." , но такой вариант не подходит, т.к. эти же моторы приводят в движение стрелу и всё навесное, путём переключения коробки...

    replikan
  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5071

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5071
    # 7 февраля 2017 18:16

    replikan, все дело в количестве блютуз передатчиков. одно блютуз устройство может послать одну команду на один приемник в один момент времени. если нужна абсолютная одновременная работа, то нужно два блютуз передатчика и два приемника.
    в вашем случае этим заморачиваться ну нужно. по суди, два основных способа решения задачи

    1. на каждый мотор повесить по одному блютуз приемнику. лаг между командами составляет миллисекунды и для гусеничной техники это настолько мизерная величина, что ею можно пренебречь и считать, что команды приходят одновременно
    2. поставить один приемник, который будет принимать пакет команд, потом парсить его и только после этого рассылать команды на все устройства, которые этих команд ждут

    по мне, первый способ расточительный и излишний. много железа, выигрыш практически нулевой. поэтому, как мне видится, лучшее решение такое

    1. делаем один передатчик и один приемник приемник
    2. придумываем протокол команд
    3. на приемнике висит обработчик, который принимает и парсит пакет команд от передатчика
    4. после обработки этих команд принимается решение, какому мотору какой сигнал послать

    это именно и есть ваше

    replikan:

    скажите - "так напиши скетч с такой логикой..."

    и вам такой вариант вполне подойдет, потому что он правильный. скетч написать дешевле и гибче, чем каждый раз железо переделывать.

    проклятый антисутенерский закон!
  • replikan Member
    офлайн
    replikan Member

    128

    12 лет на сайте
    пользователь #617192

    Профиль
    Написать сообщение

    128
    # 7 февраля 2017 18:52

    непонял( (я просто немного туп в этом - начинающий), так это реально, по экрану телефона юзать двумя джойстиками одновременно и команды будут восприниматься корректно?

    replikan
  • zverjuga Senior Member
    офлайн
    zverjuga Senior Member

    5071

    14 лет на сайте
    пользователь #346019

    Профиль
    Написать сообщение

    5071
    # 7 февраля 2017 20:59

    вы не поняли. смысл в том, чтобы через блютуз передавать не одну команду, а пачку команд. скетч в ардуине эти команды анализирует и только после этого передает команды на движки. каким образом эти команды будут формироваться и передаваться - это другой вопрос.
    управлять движком через блютуз напрямую мне смотрится не совсем правильно.

    проклятый антисутенерский закон!