Как правильно интерпретировать данные из модуля UART NRF24L01?
К этим модулям относятся следующие: https://imgur.com/a/HrzpvdR
Это их соответствующая страница AliExpress: https://aliexpress.com/item/4000317884559.html?gatewayAdapt=glo2nld
Я пытаюсь отправить тест
через C # на свой Arduino, но как только я действительно отправлю его, будет получено следующее:
tststststteteteteteteteteteteteteeeeeeeeeeeseeeeeeeeeeeeee
Это говорит мне о том, что соединение работает и данные действительно принимаются, но что-то не так с отправкой или получением. Лично я предполагаю, что с отправкой что-то не так, но я не уверен.
Что я мог бы попробовать, чтобы получить просто "тест"?
Код на C #:
using System.IO.Ports;
namespace ArduinoCom
{
class Program
{
static void Main(string[] args)
{
SerialPort port = new SerialPort("COM3", 115200, Parity.None, 6);
port.Open();
bool run = true;
int counter = 0;
for (int i = 0; i < 1000; i++)
{
port.Write("test");
}
port.Dispose();
port.Close();
}
}
}
Код Arduino выглядит следующим образом:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <I2C_LCD.h>
I2C_LCD LCD;
uint8_t I2C_LCD_ADDRESS = 0x51; // Настройка адреса устройства, по умолчанию: 0x51
SoftwareSerial mySerial(0, 1); // RX, TX
RF24 radio(7, 8); // CE, CSN
void setup() {
Serial.begin(115200);
Wire.begin();
Serial1.begin(115200);
}
void loop() {
LCD.CleanAll(WHITE);
LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
if (Serial1.available()) {
{
Serial.print((char)Serial1.read());
LCD.DispStringAt((char)Serial1.read(), 0, 10);
}
}
}
@CCG, 👍-1
Обсуждение0
Смотрите также:
- Может ли Arduino Leonardo одновременно использовать USB-порт и последовательные контакты RX TX?
- Как использовать SPI на Arduino?
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Нажать клавишу Windows, используя «keyboard.press();»
- Как подключить вывод INT MPU 6050?
- Улучшенное циклическое переключение цветов RGB.
- Проблема с загрузкой моего скетча на Ардуино
- Отправка мультимедийных клавиш клавиатуры с помощью библиотеки клавиатур
уменьшите скорость передачи данных и вставьте паузы, @jsotola
@jsotola Я ценю ваши усилия, но это тот тип комментариев, который замалчивает слишком много информации, которая может оказаться жизненно важной. Конечно, я могу уменьшить его до 9600 и добавить задержку, но зачем мне это нужно?, @CCG
потому что это базовый процесс отладки ... полученные данные , по - видимому , указывают на то , что приемник перегружен ... попробуйте привести систему в рабочее состояние , снизив скорость передачи ... затем начните увеличивать скорость передачи данных до тех пор , пока она снова не прервется ... это даст вам представление о том, где происходит сбой системы, @jsotola
Что хочет сказать jsotola, так это то, что для устранения проблемы вам сначала нужно знать, в чем проблема. И, уменьшая скорость передачи данных / паузы при вставке, вы знаете, связано ли это со временем., @Michel Keijzers
Почему вы определили экземпляр SoftwareSerial на тех же выводах , что и Serial для Leonardo ? Насколько я могу понять из описания в ссылке на Aliexpress, пара этих устройств NRF24L01 создают сквозную последовательную линию передачи данных между собой. То есть, в вашем коде нет необходимости в конкретных определениях NRF24L01. Предполагая, что вы настроили радиодетали на работу со скоростью 115200 бод, тогда одна из возможных проблем заключается в том, что ЖК-экран слишком медленно обрабатывает ожидаемую скорость передачи данных, вызывая переполнение последовательного буфера. Прокомментируйте попытку записи, чтобы увидеть, является ли это проблемой., @6v6gt