Дистанционное управление

Тема в разделе "Проводная и беспроводная связь", создана пользователем Rolf, 19 июн 2018.

  1. Rolf

    Rolf Нуб

    Уважаемые форумчане!
    Помогите чайнику разобраться с RC системой.
    Залил в ардуинки скетчи, но никакой реакции Использую модули HC-12. И тут вопрос... А есть ли для них библиотеки и нужны ли они вообще? Правда есть одно НО... По оригиналу используются две НАНО, а у меня одна УНО, вторая НАНО.
    Помогите советами, если кто-то что-то знает!
    Заранее благодарю!
     
  2. vvr

    vvr Инженерище

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

    Rolf Нуб

    За основу взято видео. В принципе там человек достаточно внятно всё объясняет. Но мне кажется, что там есть и скрытые моменты.



    Вроде всё делаю как ТАМ, только не два, а один мотор. Но не работает.
     
  4. vvr

    vvr Инженерище

    вы уверены что здесь кому то интересно смотреть и разбираться в этом видео....
     
    Daniil, b707 и parovoZZ нравится это.
  5. SergeiL

    SergeiL Оракул Модератор

    Автор видео - пользователь данного форума issaom.
    Он часто бывает здесь, напишите ему. Ему будет легче всего Вам помочь.
     
  6. parovoZZ

    parovoZZ Гуру

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

    b707 Гуру

    без схемы и скетчей. думаю, и автор видео не поможет.
    Уверения новичка, что "я все сделал, как в описании" - не имеют никакой цены. Если бы все было сделано "так же", то оно и работало бы "так же", как в видео

    Rolf. выкладывайте схемы подключения и скетчи - причем не те скетчи, что в видео - а именно ваши скетчи. со любыми "несущественными" исправлениями, которые вы туда внесли
     
    Daniil и vvr нравится это.
  8. Rolf

    Rolf Нуб

    Спасибо! Это похоже единственный толковый ответ.
     
  9. Rolf

    Rolf Нуб

    Как раз к видео опубликованы и схемы и скетчи. А так же и пояснения. И они принадлежат автору.
     
  10. Rolf

    Rolf Нуб

    Всегда найдутся люди у которых возникнет подобная проблема. На то и форум, что бы общаться, делиться опытом и наработками, помогать коллегам по теме.
     
  11. vvr

    vvr Инженерище

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

    хотите по другому - ваше право.
     
    parovoZZ нравится это.
  12. b707

    b707 Гуру

    вы, простите, тупой? - какое отношение к вашей проблеме имеют схемы и скетчи автора видео? - НИКАКОГО! - у него-то все работает.
    Схемы и скетчи нужны ваши - чтобы выяснить в чем проблема именно у вас. Неужели это непонятно?
     
  13. parovoZZ

    parovoZZ Гуру

    Какой смысл спасать того, кто не хочет быть спасенным?
     
    b707 и vvr нравится это.
  14. Rolf

    Rolf Нуб

    Зачем тогда опубликовывать видео, материалы, если как Вы говорите, заведомо работать не будет? Или Вы хотите сказать, что скетч работающий на одном МК не будет работать на другом таком же? Или каждый контроллер работает только на скетче своего создателя (по месту жительства)? А другие в топку? А может лучше без загибания пальцев просто объяснить возможные причины? Что такое скетч я знаю. Загружал и на УНО и на НАНО одно и тоже... Работают. В FLProg делал программы, тоже работают на обоих МК. Какой ещё код нужен?
     
  15. parovoZZ

    parovoZZ Гуру

    НАДО НЕ ЧУЖОЕ КОПИРОВАТЬ, А УЧИТЬСЯ СВОЕ СОЗДАВАТЬ
     
  16. Airbus

    Airbus Радиохулиган Модератор

    Разницы между Уно и Нано никакой кроме как ЕМНИП у Наны +2 аналоговых входа/выхода.Вам нужно просто проверить правильность подключения а лучше конечно как Вам правильно заметили показать схему или фото именного Вашего подключения.Ну а потом посмотрим что не так.С кодом я уверен что все нормально?Навскидку могу сказать Нану на передатчик Уну на приемник.
     
  17. b707

    b707 Гуру

    если все работает, то в чем тогда вопрос? - пользуйтесь
     
  18. Rolf

    Rolf Нуб

    Спасибо за инфу. У меня УНО на передатчике, НАНО на приёмнике. Она компактнее, по этому я её в модель втиснул. Только по сути мне нужно полсхемы. Мне нужен только один мотор.
     

    Вложения:

  19. Airbus

    Airbus Радиохулиган Модератор

    Подключение как на схеме?RX к TX а ТХ к RX подключено и в приемнике и в передатчике?Скетч меняли?Я к сожалению не могу проверить в железе когда есть возможность всегда проверяю а тут даже таких компонентов нет.Как проявляется неисправность?Попробуйте без НС12.Соедените Ардуины проводами напрямую но как я уже писал выше. ТХ к RX а RX к TX.
     
  20. Airbus

    Airbus Радиохулиган Модератор

    Код передатчика от Экстрасенса
    Код (C++):
    //пин к которому подключен левый джойстик
    int LeftPin = A0;
    //пин к которому подключен правый джойстик
    int RightPin = A1;
    //позиция левого джойстика
    int LeftPosition = 0;
    //позиция правого джойстика
    int RightPosition = 0;
    //значение ШИМ для левого двигателя
    int LeftPWM =0;
    //значение ШИМ для правого двигателя
    int RightPWM =0;
    //массив из трех байт (направления вращения моторов,LeftPWM,RightPWM)
    byte SendArray[] = {0, 0, 0};

    void setup() {
    // инициализация обмена данными по серийному протоколу со скоростью 9600 bps:
    Serial.begin(9600);
    pinMode(LeftPin, INPUT);
    pinMode(RightPin, INPUT);
    }
    void loop() {
    //читаем значения с аналоговых выходов к которым подключены резисторы
    LeftPosition = analogRead(LeftPin);
    RightPosition = analogRead(RightPin);

    //-------------------------
    //LEFT joystick (A0)      |
    //-------------------------

    if (LeftPosition < 199){
    // левый джойстиск до упора назад
    LeftPWM = 255;
    //0-й байт значения для вращения левого мотора

    //IN1
    bitWrite(SendArray[0], 0, 1);
    //IN2
    bitWrite(SendArray[0], 1, 0);
    //EN1
    SendArray[1] = LeftPWM;

    }else if (LeftPosition >= 199 && LeftPosition <= 455){
    // левый джойстиск немного назад
    LeftPWM = map(LeftPosition, 199, 455, 255, 25);

    //IN1
    bitWrite(SendArray[0], 0, 1);
    //IN2
    bitWrite(SendArray[0], 1, 0);
    //EN1
    SendArray[1] = LeftPWM;

    }

    else if (LeftPosition > 455 && LeftPosition <495){
    // левый джойстиск нейтральное положение
    LeftPWM = 0;

    //IN1
    bitWrite(SendArray[0], 0, 0);
    //IN2
    bitWrite(SendArray[0], 1, 0);
    //EN1
    SendArray[1] = LeftPWM;
     
    }

    else if (LeftPosition >= 495 && LeftPosition <= 751){
    // левый джойстиск немного вперед
    LeftPWM = map(LeftPosition, 495, 751, 25, 255);

    //IN1
    bitWrite(SendArray[0], 0, 0);
    //IN2
    bitWrite(SendArray[0], 1, 1);
    //EN1
    SendArray[1] = LeftPWM;
     
    }

    else if (LeftPosition > 751){
    // левый джойстиск до упора вперед
    LeftPWM = 255;

    //IN1
    bitWrite(SendArray[0], 0, 0);
    //IN2
    bitWrite(SendArray[0], 1, 1);
    //EN1
    SendArray[1] = LeftPWM;
    }

    //-------------------------
    //RIGHT joystick (A1)      |
    //-------------------------

    if (RightPosition < 179){
    // правый джойстиск до упора назад
    RightPWM = 255;

    //IN3
    bitWrite(SendArray[0], 2, 1);
    //IN4
    bitWrite(SendArray[0], 3, 0);
    //EN2
    SendArray[2] = RightPWM;

    }else if (RightPosition >= 179 && RightPosition <= 435){
    // правый джойстиск немного назад
    RightPWM = map(RightPosition, 179, 435, 255, 25);

    //IN3
    bitWrite(SendArray[0], 2, 1);
    //IN4
    bitWrite(SendArray[0], 3, 0);
    //EN2
    SendArray[2] = RightPWM;
    }

    else if (RightPosition > 435 && RightPosition <475){
    // правый джойстиск нейтральное положение
    RightPWM = 0;

    //IN3
    bitWrite(SendArray[0], 2, 0);
    //IN4
    bitWrite(SendArray[0], 3, 0);
    //EN2
    SendArray[2] = RightPWM;

    }

    else if (RightPosition >= 475 && RightPosition <= 731 ){
    // правый джойстиск немного вперед
    RightPWM = map(RightPosition, 475, 731, 25, 255);

    //IN3
    bitWrite(SendArray[0], 2, 0);
    //IN4
    bitWrite(SendArray[0], 3, 1);
    //EN2
    SendArray[2] = RightPWM;
    }

    else if (RightPosition > 731){
    // правый джойстиск до упора вперед
    RightPWM = 255;

    //IN3
    bitWrite(SendArray[0], 2, 0);
    //IN4
    bitWrite(SendArray[0], 3, 1);
    //EN2
    SendArray[2] = RightPWM;
    }

    //отправляем повороты ручек приемнику
    Serial.write(SendArray, 3);

    // печатаем результаты (для проверки и калибровки)
    //Serial.println (SendArray[0],BIN);
    //Serial.println (SendArray[1],DEC);
    //Serial.println (SendArray[2],DEC);
    delay(500); // добавляем задержку между считыванием данных
    }