Здравствуйте Уважаемые участники форума! Делаю проигрыватель с двигателем Мне надо передать с объектов 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); //шим. тут хочу регулировать отправляю в сериал командой print "100" думаю механизм действий такой - пользователь устанавливает громкость, скорость и нажимает кнопку СТАРТ дисплей передает команду на проигрывание с заданным шимом и громкостью для проигрывателя, было бы круто если бы он мог менять эти параметры так сказать онлайн уже при нажатой кнопки СТАРТ но как говорится хотя бы так
напишите четче - в чем у вас проблема? не знаете как передать символ, или как принимать. или как команды исполнять7
ПОСТАРАЮСЬ) ползунок h0, h2 изменяют значение n3.val (от 0 до 30), n5.val(от 0 до 255) мне надо передать эти значения в ардуино переменным silla=n5.val (шим движка) volume=n3.val(громкость) т.е. пользователь укажет значение n3, n5 (громкость и скорость) и нажав на кнопку "старт" надо, чтобы эти значения присвоились переменным в ардуино silla и volume я не знаю как это сделать( //silla = message.toInt(); пробовал так но приходит одновременно все сразу (белибирда вообщем)))
нет смысла отправлять в порт голые числа - на ардуине будет невозможно понять, где что. Вам нужно придумать простенький протокол, чтобы было понятно, что передается и где данные начинаются. а где заканчиваются. Например. пусть данные silla начинаются с буквы "S", а volume - с буквы "V" , а буква "E" будет означать окончание данных ("end") Тогда silla = 30 будет передаваться строчкой S30E, а volume =222 - строчкой "V222E" - принцип понятен? Кроме передачи вам на Ардуино еще надо будет написать прием и разбор этих строк - это называется "парсинг"
Здравствуйте Игорь! Спасибо вам, что откликнулись. Я посмотрел вашу статью - очень познавательная но честно говоря я смутно понял информацию из нее. Как я понял алгоритм действий такой. пришла команда разбираем что куда и ждем след. а можно что бы пользователь смог юзать туда сюда бегунок h2, h0 и в этот момент менялся шим и громкость мр3, возможно ли это? и ваш код сложноват для моего неокрепшего мозга)) можно на основании моего приема данных сделать типа такого: отправляется условно S130 из некстион ардуино понимает S это шим 130 скорость и также громкость V25 и потом конвертация в int и присвоение переменным sills/volume, только как это на практике написать я пока не допетрил( нет какой процедуры или чего там ) типа arduino.silla=n2.val или надо разбирать посимвольно, а потом конвертировать, а потом присваивать