Включение и выключение одного светодиода разным числом в пакете данных nrf24+ Ардуино
- Войдите на сайт для отправки комментариев
Вопрос в чём есть ардуино мега с nrf24, и есть ардуино про мини тоже с nrf24. Мне нужно что бы когда пришёл пакет данных допустим с числом 111, что бы включить светодиод по 2пину ардуины, а если пришёл пакет допустим с числом 112 то светодиод потух.
Пока делаю так но светодиод мигает и тухнет при приёме данных, то есть мне нужно запомнить состояние светодиода при приёмё разного числа в пакете
#include <SPI.h> #include "RF24.h" int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); //светодиоды подключены к этим пинам int LEDpin1 = 2; // адреса каналов приема и передачи const uint64_t pipes[2] = { 0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; void setup(void){ radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes[0]); // Открываем канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир pinMode(LEDpin1, OUTPUT); digitalWrite(LEDpin1, 0);
} void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); //если пришел пакет от Arduino №1 (111) вКлючается светодиод (горит)LEDpin1, HIGH if (msg[0] == 111){ delay(10); digitalWrite(LEDpin1, 1); } else if(msg[0] == 112){ delay(10); digitalWrite(LEDpin1, 0); } } } }
Вопрос в чём есть ардуино мега с nrf24, и есть ардуино про мини тоже с nrf24. Мне нужно что бы когда пришёл пакет данных допустим с числом 111, что бы включить светодиод по 2пину ардуины, а если пришёл пакет допустим с числом 112 то светодиод потух.
#include <SPI.h> #include "RF24.h" int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); //светодиоды подключены к этим пинам int LEDpin1 = 2; // адреса каналов приема и передачи const uint64_t pipes[2] = { 0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; void setup(void){ radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes[0]); // Открываем канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир pinMode(LEDpin1, OUTPUT); digitalWrite(LEDpin1, 0); } void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); //если пришел пакет от Arduino №1 (111) вКлючается светодиод (горит)LEDpin1, HIGH if (msg[0] == 111){ delay(10); digitalWrite(LEDpin1, 1); } else if(msg[0] == 112){ delay(10); digitalWrite(LEDpin1, 0); } } } }Вообщем набросал две проги с сохранением в EEPROM, а светодиод начинает мигать при приходе числа 111, и всё
#include <SPI.h> #include "RF24.h" #include <EEPROM.h> int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); //светодиоды подключены к этим пинам int LEDpin1 = 5; // адреса каналов приема и передачи const uint64_t pipes[2] = { 0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; void setup(void){ radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes[0]); // Открываем канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир pinMode(LEDpin1, OUTPUT); digitalWrite(LEDpin1, 0); } void loop(void){ BUTTON_00(); } void BUTTON_00() { if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); if (msg[0] == 111){ delay(10); EEPROM.write(100, 111); } else if(msg[0] == 113){ delay(10); EEPROM.write(100, 113); } if ( == 111){ delay(10); digitalWrite(LEDpin1, 1); } else if( == 113){ delay(10); digitalWrite(LEDpin1, 0); } } } if (EEPROM.read(100) == 111) {BUTTON_00_on();} // срабатывает один раз при нажатии кнопки. if (EEPROM.read(100) == 113) {BUTTON_00_of();} // срабатывает один раз при отпускании кнопки. } void BUTTON_00_on() {digitalWrite(LEDpin1, 1);} // здесь находится всё, что должно происходить при нажатии кнопки. void BUTTON_00_of() {digitalWrite(LEDpin1, 0);} // здесь находится всё, что должно происходить при отпускании кнопки.#include <SPI.h> #include "RF24.h" #include <EEPROM.h> int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); //светодиоды подключены к этим пинам int LEDpin1 = 5; int t; // адреса каналов приема и передачи const uint64_t pipes[2] = { 0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; void setup(void){ radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes[0]); // Открываем канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир pinMode(LEDpin1, OUTPUT); digitalWrite(LEDpin1, 0); } void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); //если пришел пакет от Arduino №1 (111) вКлючается светодиод (горит)LEDpin1, HIGH if (msg[0] == 111){ delay(10); EEPROM.write(100, 111); return; } else if(msg[0] == 113){ delay(10); EEPROM.write(100, 113); return;} if (EEPROM.read(100) == 111) {digitalWrite(LEDpin1, 1); return;} // срабатывает один раз при нажатии кнопки. else if (EEPROM.read(100) == 113) {digitalWrite(LEDpin1, 0);return;} return;}} if (EEPROM.read(100) == 111) {digitalWrite(LEDpin1, 1);return;} // срабатывает один раз при нажатии кнопки. else if (EEPROM.read(100) == 113) {digitalWrite(LEDpin1, 0);return;} }Вот только как сделать что бы нормально работало?
Набросал код с while, но не работает
#include <SPI.h> #include "RF24.h" int msg[1]; // Set up nRF24L01 radio on SPI bus plus pins 9 & 10 //Контакты от радиомодуля NRF24L01 подключаем к пинамнам -> Arduino //SCK -> 13 //MISO -> 12 //MOSI -> 11 //CSN -> 10 //CE -> 9 RF24 radio(9,10); //светодиоды подключены к этим пинам int LEDpin1 = 5; // адреса каналов приема и передачи const uint64_t pipes[2] = { 0xF0F0F0F000LL, 0xF0F0F0F0FFLL}; void setup(void){ radio.begin(); radio.setDataRate(RF24_250KBPS); // Скорость передачи radio.setChannel(100); // Номер канала от 0 до 127 radio.setRetries(15,15); // Кол-во попыток и время между попытками radio.openWritingPipe(pipes[0]); // Открываем канал передачи radio.openReadingPipe(1, pipes[1]); // Открываем один из 6-ти каналов приема radio.startListening(); // Начинаем слушать эфир pinMode(LEDpin1, OUTPUT); digitalWrite(LEDpin1, 0); } void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 1); //если пришел пакет от Arduino №1 (111) вКлючается светодиод (горит)LEDpin1, HIGH if (msg[0] == 111){ delay(10); while (msg[0]!=113){ delay(10); digitalWrite(LEDpin1, 1); done = radio.read(msg, 1); if (msg[0] == 113) { delay(10); break;} }} else if(msg[0] == 113){ delay(10); while (msg[0]!=111){ delay(10); digitalWrite(LEDpin1, 0); done = radio.read(msg, 1); if (msg[0] == 111) { delay(10); break;}} } } }Ра
voidloop(void)42{if(radio.available())43{radio.read(msg, 1);
670}if(msg[0] == 111)digitalWrite(LEDpin1, 1);
48if(msg[0] == 113)digitalWrite(LEDpin1, 0);
5171}