Здравствуйте. Подскажите, пожалуйста, почему некорректно принимаются данные при помощи модуля nRF24L01? Суть такова, что я хочу добавить тактовую кнопку в пульт дистанционного управления драйвера мотора. Использую простой скетч для передачи массива данных. Применяю плату RF-Nano, поэтому CE=10, CSN=9. Скетч передатчика: Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> RF24 radio(10,9); int button = 3; void setup(){ Serial.begin(9600); pinMode(button, INPUT); radio.begin(); radio.setChannel(108); radio.enableAckPayload(); radio.enableDynamicPayloads(); radio.openWritingPipe(0x0123456789LL); } void loop() { if (digitalRead(button) == HIGH){ int data[1] = {123}; radio.write(data, 1); Serial.println("INFO: Send data"); } } Скетч приёмника: Код (C++): #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> RF24 radio(10,9); int LED = 3; int data[1]; void setup(){ Serial.begin(9600); pinMode(LED, OUTPUT); radio.begin(); radio.setChannel(108); radio.enableAckPayload(); radio.enableDynamicPayloads(); radio.openReadingPipe(1,0x0123456789LL); radio.startListening(); } void loop() { if (radio.available()){ radio.read(data, 1); if(data[0] == true){ digitalWrite(LED, HIGH); Serial.println("INFO: Received data"); } delay(10); } else{ digitalWrite(LED, LOW); delay(10); } } Всё отлично отрабатывает, открываю монитор порта: данные отправляются с передатчика, получаю данные на приёмнике. Скетчи для передатчика и приёмника пульта вышли большими по тексту, поэтому прикрепил их к сообщению. Через Com порт вижу, что передатчик посылает данные, а приёмник получает некорректные данные. Pipe address одинаковый. На осциллографе вижу сигналы в несколько мс. В мониторе порта приёмника вот такое безобразие: Появляющиеся символы отличные от вопросов - это реакция на нажатие тактовой кнопки на передатчике.
...BBimage, конечно, хороший сайт, но бывали случаи, что такие сайты закрывались и потом ТС на форумах приходилось искать фотки... Фото можно было вставить, найдя код для вставки BBcode. Код (Text): [url=https://ibb.co/ns4ZKnF][img]https://i.ibb.co/0j18zFx/Com.png[/img][/url] Это выглядит так: А по существу в коде приёмника у вас целая головоломка с детективами компилятора, так, что попробуйте на компьютере выставить скорость 115200. P.S. "нет конца строки" - обычно там другая настройка.
Nathan, вы взяли очень сложный код для пульта и ничего в нем не понимая. банально вставили кусок из другого скетча. Вы реально думаете это будет работать? Наиболее точная аналогия тут - вот вы взяли кошку и пришили ей крылья дохлого орла... будет оно летать. как вы думаете? Что касается конкретного вопроса про мусор в мониторе порта - исходный код передатчика и приемника для пульта активно обмениваются сообщениями, значения которых вы не понимаете и потому выводите их в монитор неправильно. "Вопросы" в мониторе - это служебные сообщения пульта. Думаю. результатом подобного "улучшения" кода может быть только то. что у вас и остальные кнопки на пульте перестанут работать.
Кроме того, добавлю, что и тот простенький код передачи одной кнопки, что у вас вставлен в сообщение - вообще-то очень кривой. вы и отправляете и принимаете данные неправильно. То. что этот код работает - на самом деле чистая случайность. добавка спустя 5 минут - посмотрел внимательнее, на самом деле этот код не работает, вам только это кажется. он у вас срабатывает только первый раз. лвмпочка на приемнике загорается, вот вы и рады... Потренируйтесь. для начала. на каких-то проектах попроще, этот на вашем нынешнем уровне знаний вам не осилить.
На алике доступны готовые радиомашинки со всем кнопками и даже программируются. Я думаю, надо начать с этого.