Включение и выключение одного светодиода разным числом в пакете данных nrf24+ Ардуино

Roman2344
Offline
Зарегистрирован: 09.09.2015


Вопрос в чём есть ардуино мега с 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); } } } }

Roman2344
Offline
Зарегистрирован: 09.09.2015

Вопрос в чём есть ардуино мега с 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); }
      
       
    
    }
  }
}

 

Roman2344
Offline
Зарегистрирован: 09.09.2015

Вообщем набросал две проги с сохранением в 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);} // здесь находится всё, что должно происходить при отпускании кнопки.

 

Roman2344
Offline
Зарегистрирован: 09.09.2015
#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;} 
}

Вот только как сделать что бы нормально работало?

Roman2344
Offline
Зарегистрирован: 09.09.2015

Набросал код с 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;}}
      }
       
    
    }
  }

 

Roman2344
Offline
Зарегистрирован: 09.09.2015

Ра

lex2k
Offline
Зарегистрирован: 17.12.2015
void loop(void)
42

{

   if (radio.available())

43   { 

           radio.read(msg, 1); 

6  
70     }

           

             if (msg[0] == 111)

               digitalWrite(LEDpin1, 1);

48          
             if (msg[0] == 113)

               digitalWrite(LEDpin1, 0);        

51         

          

71  }