Arduino Nano-комбо NRF2401

Я использую два нано-комбо для автомобиля с радиоуправлением, и когда батарея удаленного излучателя слишком разряжена, если машина работала, а батарея, наконец, разряжена, машина все еще работала... есть ли какой-либо способ с помощью программирования проверить связь между два nanos и решить эту проблему??. Спасибо.

вот код: //Программа-получатель

#include <SPI.h> #include "Mirf.h" #include "nRF24L01.h" #include "MirfHardwareSpiDriver.h" Nrf24l Mirf = Nrf24l(10, 9);

аннулировать установку() { Серийный.начать(9600); Mirf.spi = &MirfHardwareSpi; Мирф.инит(); Mirf.setRADDR((байт *)"FGHIJ"); //Установите свой собственный адрес (адрес получателя) с помощью 5 символов Mirf.payload = размер (данные); Мирф.канал = 90; //Устанавливаем используемый канал Мирф.config(); //Serial.println("Прослушивание..."); //Начать прослушивание полученных данных

void loop() { if (Mirf.dataReady()) { //Когда программа получена, полученные данные выход из последовательного порта Mirf.getData(данные);
delay(5);

if (datos[7] >= 150) { //двигаться вперед

analogWrite(3,0);
analogWrite(5,255);

if (datos[7] <= 90) { двигатель назад

analogWrite(3,255);
analogWrite(5,0);

if (datos[7] > 90 && datos[7] < 150 или datos[7] == 0) { //двигатель остановлен

analogWrite(5,0);
analogWrite(3,0);   

} }

он работает отлично, я могу управлять двигателем постоянного тока без проблем, но если батарея пульта дистанционного управления разряжена или разряжена, тогда нет связи с приемником NANO, и двигатель вращается без остановки.

Я пробую разные вещи в цикле void, например:

если (!Mirf.dataReady()) { аналоговая запись (5,0); аналоговая запись (3,0);

но все та же проблема. Так вот почему в библиотеке Rf должно быть что-то, чтобы проверить, отключена ли связь удаленного управления NANO, я не знаю...

Спасибо

, 👍-1

Обсуждение

Конечно. Вы можете запрограммировать Arduino на остановку, если данные не были получены в течение определенного периода времени. Хотя мы не можем дать вам больше советов без дополнительной информации от вас. Пожалуйста, включите свой код в вопрос (и правильно отформатируйте его как код). Также, пожалуйста, дайте нам больше информации, как все связано., @chrisl

использовать сигнал сердцебиения, @jsotola


1 ответ


0

Вы можете сделать что-то вроде:

while(radio.hasData()){
}

Это работает в библиотеке NRFLite. Я не знаю о других библиотеках, таких как RF24 и т. д.

,