C дисплей nextion получить значение переменной n2 и присвоить его переменной b arduino

Тема в разделе "Arduino & Shields", создана пользователем Danik, 20 янв 2020.

  1. Danik

    Danik Нуб

    Здравствуйте Уважаемые участники форума!
    Делаю проигрыватель с двигателем
    Мне надо передать с объектов n3 (громкость), n4 (шим двигателя) в ардуино.
    Пользователь, чтобы мог регулировать скорость двигателя и громкость музыки

    Код (C++):
    #define DV_VKL 4          //ВКД/ВЫКЛ ДВИЖКА      (ПИН 4)
    int silla=170;                   //шим движка
    byte volume=18;           // громкость
    int knopka = 7;           // Состояние проигрывателя
    int b = false;            // Логика проигрывателя

    #include <SoftwareSerial.h>
    #include <Nextion.h>
    #include <DFPlayer_Mini_Mp3.h>
    SoftwareSerial nextion(2, 3);// RX-2,  TX-3
    Nextion myNextion(nextion, 9600);
    void setup()
    {
    Serial.begin (9600);
    mp3_set_serial (Serial);  
    delay (100);
    mp3_set_volume (volume);       // ГРОМКОСТЬ. тут хочу регулировать ее
    delay (100);
    pinMode     (knopka, INPUT);    // Инициализация 7-го пина на вход
    myNextion.init();
    }
    void loop()
    {
    int kn = digitalRead(knopka);   // считываем состояние кнопки
    delay (20);
    if (b==1)
    {
    mp3_play ();
    if (kn==1)
    {mp3_next();
    }
    delay (200);                    // проигрываем следующий файл
    }
    /////////////////////////////////////////////////////////////КНОПКА START//////////////////////////////////////////////////////////////
    String message = myNextion.listen(); //пришла команда с монитора на старт
    if(message == "100")
    {
    //silla = message.toInt();     пробовал так но приходит одновременно все сразу (белибирда вообщем)))
    b=1;                                    //вкл. проигрыватель
    digitalWrite(DV_VKL, 1);   //вкл. двс
    analogWrite (DV, silla);     //шим.  тут хочу регулировать
    [​IMG]

    отправляю в сериал командой print "100"

    думаю механизм действий такой - пользователь устанавливает громкость, скорость и нажимает кнопку СТАРТ

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

    было бы круто если бы он мог менять эти параметры так сказать онлайн уже при нажатой кнопки СТАРТ

    но как говорится хотя бы так
     
  2. b707

    b707 Гуру

    напишите четче - в чем у вас проблема? не знаете как передать символ, или как принимать. или как команды исполнять7
     
  3. Danik

    Danik Нуб

    ПОСТАРАЮСЬ)
    ползунок h0, h2 изменяют значение n3.val (от 0 до 30), n5.val(от 0 до 255)
    мне надо передать эти значения в ардуино переменным silla=n5.val (шим движка) volume=n3.val(громкость)
    т.е. пользователь укажет значение n3, n5 (громкость и скорость) и нажав на кнопку "старт" надо, чтобы эти значения присвоились переменным в ардуино silla и volume
    я не знаю как это сделать(
    //silla = message.toInt(); пробовал так но приходит одновременно все сразу (белибирда вообщем)))
     
  4. b707

    b707 Гуру

    нет смысла отправлять в порт голые числа - на ардуине будет невозможно понять, где что.
    Вам нужно придумать простенький протокол, чтобы было понятно, что передается и где данные начинаются. а где заканчиваются.
    Например. пусть данные silla начинаются с буквы "S", а volume - с буквы "V" , а буква "E" будет означать окончание данных ("end")

    Тогда silla = 30 будет передаваться строчкой S30E, а volume =222 - строчкой "V222E" - принцип понятен? Кроме передачи вам на Ардуино еще надо будет написать прием и разбор этих строк - это называется "парсинг"
     
    arkadyf нравится это.
  5. ИгорьК

    ИгорьК Гуру

  6. Danik

    Danik Нуб

    Здравствуйте Игорь!
    Спасибо вам, что откликнулись.
    Я посмотрел вашу статью - очень познавательная но честно говоря я смутно понял информацию из нее.
    Как я понял алгоритм действий такой.
    пришла команда разбираем что куда и ждем след.
    а можно что бы пользователь смог юзать туда сюда бегунок h2, h0 и в этот момент менялся шим и громкость мр3, возможно ли это?
    и ваш код сложноват для моего неокрепшего мозга))
    можно на основании моего приема данных сделать типа такого:
    отправляется условно S130 из некстион ардуино понимает S это шим 130 скорость и также громкость V25 и потом конвертация в int и присвоение переменным sills/volume, только как это на практике написать я пока не допетрил(
    нет какой процедуры или чего там ) типа arduino.silla=n2.val или надо разбирать посимвольно, а потом конвертировать, а потом присваивать
     
    Последнее редактирование: 21 янв 2020
  7. ИгорьК

    ИгорьК Гуру

    Полагаете, я должен решать вашу коммерческую задачу? Не, я так не играю.
     
  8. b707

    b707 Гуру

    именно так - все ручками, ручками. У Игоря в статье пример с кодом, чего ж вам еще?
     
  9. Danik

    Danik Нуб

    СПАСИБО И НА ЭТОМ))
    ВСЕ РЕШИЛ!!!
    РЕШЕНИЕ ОКАЗАЛОСЬ ПРОСТЫМ И ПРИМИТИВНЫМ
     
    Последнее редактирование: 22 янв 2020