b

 

 

Бложик потихоньку переезжает сюда

драйвер\shield для светодиодной лентой с управлением по nRF24L01 и IR


драйвер\shield для светодиодной лентой с управлением по nRF24L01 и IR






#include <IRremote.h> // https://github.com/shirriff/Arduino-IRremote
#include <RF24.h>
#include <nRF24L01.h>
#include <SPI.h>

#define RECV_PIN 8 // IR приемник

#define OUT1 3 // выходы на мосфеты\реле
#define OUT2 5
#define OUT3 6
 
#define POWER_KEY 0x40BF30CF // коды пульта ДУ
#define KEY1 0x40BF7887
#define KEY2 0x40BFF807
#define KEY3 0xC03FC03F

#define nRF_POWER_KEY 255 // команды nRF
#define nRF_KEY1 11
#define nRF_KEY2 12
#define nRF_KEY3 13
#define nRF_STAT 1
 
RF24 radio(9, 10); // CE, CSN

IRrecv irrecv(RECV_PIN);

decode_results results;
const uint64_t pipe01 = 0xF0F1F2F300LL; // идентификатор передачи, "труба"
int data = 0;

void setup()
{
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  
  irrecv.enableIRIn();  
  radio.begin();  
  radio.setPALevel(RF24_PA_HIGH);   
  radio.setChannel(99);
  radio.setDataRate(RF24_1MBPS);   
  radio.openReadingPipe(1,pipe01);
  radio.startListening();  

}

void loop() {
   if (radio.available()){  
     radio.read(&data, sizeof(data));  

     if (data == nRF_KEY1) digitalWrite(OUT1, !digitalRead(OUT1));
     else if (data == nRF_KEY2) digitalWrite(OUT2, !digitalRead(OUT2));
     else if (data == nRF_KEY3) digitalWrite(OUT3, !digitalRead(OUT3));
      
     else if (data == nRF_POWER_KEY) {  
       if (digitalRead(OUT1) || digitalRead(OUT2) || digitalRead(OUT3)){
         digitalWrite(OUT1, LOW);
         digitalWrite(OUT2, LOW);
         digitalWrite(OUT3, LOW);
        }
       else {
         digitalWrite(OUT1, HIGH);
         digitalWrite(OUT2, HIGH);
         digitalWrite(OUT3, HIGH);
       } 
     }   
//   radio.flush_rx();
   }
  
  ///// IR
  if (irrecv.decode(&results)) {
    if (results.value == KEY1) digitalWrite(OUT1, !digitalRead(OUT1));
    else if (results.value == KEY2) digitalWrite(OUT2, !digitalRead(OUT2));
    else if (results.value == KEY3) digitalWrite(OUT3, !digitalRead(OUT3));
     
    else if (results.value == POWER_KEY) {  
      if (digitalRead(OUT1) || digitalRead(OUT2) || digitalRead(OUT3)){
        digitalWrite(OUT1, LOW);
        digitalWrite(OUT2, LOW);
        digitalWrite(OUT3, LOW);
       }
      else {
        digitalWrite(OUT1, HIGH);
        digitalWrite(OUT2, HIGH);
        digitalWrite(OUT3, HIGH);
       }          
    }
    irrecv.resume();  
  }
}




#include <RF24.h>
#include <nRF24L01.h>
#include <SPI.h>

RF24 radio(9, 10); // CE, CSN

const uint64_t pipe01 = 0xF0F1F2F300LL;  
int data = 0;

void setup() {
  Serial.begin(9600);
  
  radio.begin();  
  radio.setPALevel(RF24_PA_HIGH);   
  radio.setChannel(99);
  radio.setDataRate(RF24_1MBPS);   
  
  radio.openWritingPipe(pipe01); // открываем трубу на передачу.

//  radio.openReadingPipe(1,pipe01);
//  radio.startListening();

}

void loop() {
    
  if (Serial.available()) {    
    data = Serial.parseInt();
    radio.write(&data, sizeof(data)); 
  }  
  Serial.flush();
  
 
}