драйвер\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(); }