Подскажите, вопрос про ДУ на nfr24
- Войдите на сайт для отправки комментариев
Чт, 06/09/2018 - 05:33
Здравствуйте!
Пытаюсь создать 8 канальный пульт ДУ на ардуино. В принципе все работает, но мне нужно добиться того, чтобы светодиоды горели непрерывно, пока нажата кнопка на пульте. А они моргают. Подскажите, как это сделать?
Код приемника:
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(10, 9); // "создать" модуль на пинах 9 и 10 для НАНО/УНО
byte pipeNo;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; // возможные номера труб
byte recieved_data[8]; // массив принятых данных
const uint8_t led_pins[] = { 24,25,26,27,28,29,30,31 };
const uint8_t num_led_pins = sizeof(led_pins);
uint8_t led_states[num_led_pins];
void setup() {
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(24, OUTPUT);
pinMode(25, OUTPUT);
pinMode(26, OUTPUT);
pinMode(27, OUTPUT);
pinMode(28, OUTPUT);
pinMode(29, OUTPUT);
pinMode(30, OUTPUT);
pinMode(31, OUTPUT);
Serial.begin(9600);
radioSetup();
}
void loop() {
if (radio.available(&pipeNo)) { // слушаем эфир
while (radio.available(&pipeNo)){
radio.read( &recieved_data, sizeof(recieved_data)); // чиатем входящий сигнал
Serial.print("recieved data: ");
int i = 8;
while (i--){
if ( recieved_data[i] ){
led_states[i] ^= HIGH;
digitalWrite(led_pins[i],led_states[i]);
}
}
}
}
}
void radioSetup() { // настройка радио
radio.begin(); // активировать модуль
radio.openReadingPipe(1, 0x1234567890LL); // хотим слушать трубу 0
radio.setChannel(5); // выбираем канал (в котором нет шумов!)
radio.setPALevel(RF24_PA_HIGH); // уровень мощности передатчика
radio.setDataRate(RF24_250KBPS); // скорость обмена
radio.startListening(); // начинаем слушать эфир, мы приёмный модуль
}
А зачем Вы их постоянно переключаете туда-сюда в строке №37? Или что по-Вашему в этой строке делается? По мне, так именно это: если постоянно приходит сигнал 1 ("гореть"), то строка №37 работает по логике: "если светится - включить, если не светится - выключить".
Как выражался Миша Горбачёв, "я вам даже больше скажу". Если светодиод уже горит - то единственный способ его выключить - дать ещё одну команду "гореть". По-другому он не выключится.
ТС, ты бы не ставил всяких крышечек, если не понимаешь для чего они.
точняк. у меня взгляд совсем замылился, вы помогли разобраться.