How to control relay with ESP NOW
Device to Device Communication with ESP NOW
How to control relay with ESP NOW.
This tutorial shows how to send data from one "ESP32 ESP32-C3 ESP8266
ESP32-01" to multiple ESP32 or ESP8266 boards using ESP-NOW
(many-to-many configuration).
Code :
ESPNow_Esp32_Receiver
// - Lien vidéo: https://youtu.be/y-pKhpYCaJo// Arduino-IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote.#undef LED_BUILTIN#define LED_BUILTIN 2#define IR_RECEIVE_PIN 13#define DECODE_NEC#include <Arduino.h>#include <IRremote.hpp>#include <esp_now.h>#include <WiFi.h>#define relay_1 0x54#define relay_2 0x16#define relay_3 0x15#define relay_4 0x50#define relay_5 0x12#define relay_6 0x11#define relay_7 0x4C#define relay_8 0xEint relay_pin[8] = {23, 22, 21, 19, 25, 26, 27, 14};bool relay_state[8];typedef struct struct_message {uint8_t DataCommand = 0xF9;uint8_t valCommand;uint8_t EndCommand = 0x9F;} struct_message;// Create a struct_message called myDatastruct_message myData;// REPLACE WITH YOUR RECEIVER MAC Addressuint8_t RxMACaddress[] = {0xE3, 0xA1, 0xFC, 0x23, 0x49, 0xEB}; //Esp8266esp_now_peer_info_t peeresp8266;// Init ESP Now with fallbackvoid InitESPNow() {WiFi.disconnect();if (esp_now_init() == ESP_OK) {Serial.println("ESPNow Init Success");}else {Serial.println("ESPNow Init Failed");// Retry InitESPNow, add a counte and then restart?// InitESPNow();// or Simply RestartESP.restart();}}void manageSlave() {memcpy(peeresp8266.peer_addr, RxMACaddress, 6);peeresp8266.channel = 1;peeresp8266.encrypt = 0;esp_err_t addStatus = esp_now_add_peer(&peeresp8266);if (addStatus == ESP_OK) {// Pair successSerial.println("Pair success");} else if (addStatus == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW Not Init");} else if (addStatus == ESP_ERR_ESPNOW_ARG) {Serial.println("Add Peer - Invalid Argument");} else if (addStatus == ESP_ERR_ESPNOW_FULL) {Serial.println("Peer list full");} else if (addStatus == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("Out of memory");} else if (addStatus == ESP_ERR_ESPNOW_EXIST) {Serial.println("Peer Exists");} else {Serial.println("Not sure what happened");}delay(100);}uint8_t Comd0 = 0;unsigned long last = millis();void SetCommand(uint8_t Comd) {switch(Comd) {case relay_1:relay_state[0] = !relay_state[0];digitalWrite(relay_pin[0], relay_state[0]);(relay_state[0]) ? Serial.println("Relay 1 Off") : Serial.println("Relay 1 On");break;case relay_2:relay_state[1] = !relay_state[1];digitalWrite(relay_pin[1], relay_state[1]);(relay_state[1]) ? Serial.println("Relay 2 Off") : Serial.println("Relay 2 On");break;case relay_3:relay_state[2] = !relay_state[2];digitalWrite(relay_pin[2], relay_state[2]);(relay_state[2]) ? Serial.println("Relay 3 Off") : Serial.println("Relay 3 On");break;case relay_4:relay_state[3] = !relay_state[3];digitalWrite(relay_pin[3], relay_state[3]);(relay_state[3]) ? Serial.println("Relay 4 Off") : Serial.println("Relay 4 On");break;case relay_5:relay_state[4] = !relay_state[4];digitalWrite(relay_pin[4], relay_state[4]);(relay_state[4]) ? Serial.println("Relay 5 Off") : Serial.println("Relay 5 On");break;case relay_6:relay_state[5] = !relay_state[5];digitalWrite(relay_pin[5], relay_state[5]);(relay_state[5]) ? Serial.println("Relay 6 Off") : Serial.println("Relay 6 On");break;case relay_7:relay_state[6] = !relay_state[6];digitalWrite(relay_pin[6], relay_state[6]);(relay_state[6]) ? Serial.println("Relay 7 Off") : Serial.println("Relay 7 On");break;case relay_8:relay_state[7] = !relay_state[7];digitalWrite(relay_pin[7], relay_state[7]);(relay_state[7]) ? Serial.println("Relay 8 Off") : Serial.println("Relay 8 On");break;default:break;}Comd0 = Comd;last = millis();}// send datavoid sendData() {const uint8_t *peer_addr = peeresp8266.peer_addr;esp_err_t result = esp_now_send(peer_addr, (uint8_t *) &myData, sizeof(myData));Serial.print("Send Status: ");if (result == ESP_OK) {Serial.println("Success");} else if (result == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW not Init.");} else if (result == ESP_ERR_ESPNOW_ARG) {Serial.println("Invalid Argument");} else if (result == ESP_ERR_ESPNOW_INTERNAL) {Serial.println("Internal Error");} else if (result == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("ESP_ERR_ESPNOW_NO_MEM");} else if (result == ESP_ERR_ESPNOW_NOT_FOUND) {Serial.println("Peer not found.");} else {Serial.println("Not sure what happened");}}// callback when data is sentvoid OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {char macStr[18];snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);Serial.print("Last Packet Sent to: "); Serial.println(macStr);Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");}// callback when data is recv from Mastervoid OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {memcpy(&myData, data, sizeof(myData));if(myData.DataCommand != 0xF9 || myData.EndCommand != 0x9F)return;if ((millis() - last < 300) && Comd0 == myData.valCommand)return;SetCommand(myData.valCommand);}void IRDataRecv() {uint16_t received = IrReceiver.decodedIRData.command;if (received) {if ((millis() - last < 200) && myData.valCommand == received) {delay(50);IrReceiver.resume();return;}Serial.print("Command: 0x");Serial.println(received, HEX);myData.valCommand = received;sendData();SetCommand(received);}IrReceiver.resume();}void setup() {Serial.begin(115200);delay(2500);for ( int j=0; j<8;j++) {pinMode(relay_pin[j], OUTPUT);relay_state[j] = true;digitalWrite(relay_pin[j], HIGH);}WiFi.mode(WIFI_STA);InitESPNow();esp_now_register_recv_cb(OnDataRecv);esp_now_register_send_cb(OnDataSent);manageSlave();IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // data pin 13Serial.print("STA MAC: "); Serial.println(WiFi.macAddress());Serial.print("STA CHANNEL "); Serial.println(WiFi.channel());}void loop() {if (IrReceiver.decode()) IRDataRecv();}
ESPNow_Esp8266_Receiver
// - Lien vidéo: https://youtu.be/y-pKhpYCaJo// Arduino-IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote.#define IR_RECEIVE_PIN 2 // D4#define DECODE_NEC#include <IRremote.hpp>#include <ESP8266WiFi.h>#include <espnow.h>#define relay_1 0x8E#define relay_2 0x86#define relay_3 0x8F#define relay_4 0x92#define relay_5 0x87#define relay_6 0x93#define relay_7 0x96#define relay_8 0x82// REPLACE WITH YOUR RECEIVER MAC Addressuint8_t RxMACaddress[] = {0xE3, 0xF9, 0xDE, 0x14, 0x86, 0xFC}; //ESP32int relay_pin[8] = {5, 4, 0, 15, 13, 12, 14, 16};bool relay_state[8];typedef struct struct_message {uint8_t DataCommand = 0xF9;uint8_t valCommand = 0x0;uint8_t EndCommand = 0x9F;} struct_message;// Create a struct_message called myDatastruct_message myData;// Init ESP Now with fallbackvoid InitESPNow() {// WiFi.disconnect();if (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}}uint8_t Comd0 = 0;unsigned long last = millis();void SetCommand(uint8_t Comd) {switch(Comd) {case relay_1:relay_state[0] = !relay_state[0];digitalWrite(relay_pin[0], relay_state[0]);(relay_state[0]) ? Serial.println("Relay 1 On") : Serial.println("Relay 1 Off");break;case relay_2:relay_state[1] = !relay_state[1];digitalWrite(relay_pin[1], relay_state[1]);(relay_state[1]) ? Serial.println("Relay 2 On") : Serial.println("Relay 2 Off");break;case relay_3:relay_state[2] = !relay_state[2];digitalWrite(relay_pin[2], relay_state[2]);(relay_state[2]) ? Serial.println("Relay 3 On") : Serial.println("Relay 3 Off");break;case relay_4:relay_state[3] = !relay_state[3];digitalWrite(relay_pin[3], relay_state[3]);(relay_state[3]) ? Serial.println("Relay 4 On") : Serial.println("Relay 4 Off");break;case relay_5:relay_state[4] = !relay_state[4];digitalWrite(relay_pin[4], relay_state[4]);(relay_state[4]) ? Serial.println("Relay 5 On") : Serial.println("Relay 5 Off");break;case relay_6:relay_state[5] = !relay_state[5];digitalWrite(relay_pin[5], relay_state[5]);(relay_state[5]) ? Serial.println("Relay 6 On") : Serial.println("Relay 6 Off");break;case relay_7:relay_state[6] = !relay_state[6];digitalWrite(relay_pin[6], relay_state[6]);(relay_state[6]) ? Serial.println("Relay 7 On") : Serial.println("Relay 7 Off");break;case relay_8:relay_state[7] = !relay_state[7];digitalWrite(relay_pin[7], relay_state[7]);(relay_state[7]) ? Serial.println("Relay 8 On") : Serial.println("Relay 8 Off");break;default:break;}Comd0 = Comd;last = millis();}// callback when data is recv from Mastervoid OnDataRecv(uint8_t *mac, uint8_t *data, uint8_t data_len) {memcpy(&myData, data, sizeof(myData));if(myData.DataCommand != 0xF9 || myData.EndCommand != 0x9F)return;if ((millis() - last < 300) && Comd0 == myData.valCommand)return;SetCommand(myData.valCommand);}// callback when data is sentvoid OnDataSent(uint8_t *mac_addr, uint8_t status) {char macStr[18];snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);Serial.print("Last Packet Sent to: "); Serial.println(macStr);Serial.println(status == 0 ? "Delivery Success" : "Delivery Fail");}void OnIRDataRecv() {if (IrReceiver.decode()) {uint16_t received = IrReceiver.decodedIRData.command;if (received) {if ((millis() - last < 200) && myData.valCommand == received) {delay(50);IrReceiver.resume();return;}Serial.print("Command: 0x");Serial.println(received, HEX);myData.valCommand = received;esp_now_send(RxMACaddress, (uint8_t *) &myData, sizeof(myData));SetCommand(received);}IrReceiver.resume();}}void setup() {Serial.begin(74880);for ( int j=0; j<8;j++) {pinMode(relay_pin[j], OUTPUT);relay_state[j] = false;digitalWrite(relay_pin[j], LOW);}WiFi.mode(WIFI_STA);Serial.println(" ");// Init ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}Serial.println("ESP-NOW Init Success");// Once ESPNow is successfully Init, we will register for Send CB to// get the status of Trasnmitted packetesp_now_set_self_role(ESP_NOW_ROLE_COMBO);esp_now_register_recv_cb(OnDataRecv);esp_now_register_send_cb(OnDataSent);// Register peeresp_now_add_peer(RxMACaddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);IrReceiver.begin(IR_RECEIVE_PIN);IrReceiver.registerReceiveCompleteCallback(OnIRDataRecv);Serial.println();Serial.print("STA MAC: "); Serial.println(WiFi.macAddress());Serial.print("STA CHANNEL "); Serial.println(WiFi.channel());}void loop() {// noting}
ESPNow_Esp8266_Esp-01_Transmitter
// - Lien vidéo: https://youtu.be/y-pKhpYCaJo// Arduino-IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote.#define IR_RECEIVE_PIN 2 // D4#define DECODE_NEC#include <IRremote.hpp>#include <ESP8266WiFi.h>#include <espnow.h>// REPLACE WITH YOUR RECEIVER MAC Addressuint8_t RxMACaddress0[] = {0xE3, 0xA1, 0xFC, 0x23, 0x49, 0xEB}; //Esp8266uint8_t RxMACaddress1[] = {0xE3, 0xF9, 0xDE, 0x14, 0x86, 0xFC}; //ESP32// Structure example to send data// Must match the receiver structuretypedef struct struct_message {uint8_t DataCommand = 0xF9;uint8_t valCommand;uint8_t EndCommand = 0x9F;} struct_message;// Create a struct_message called myDatastruct_message myData;unsigned long last = millis();void OnIRDataRecv() {if (IrReceiver.decode()) {uint16_t received = IrReceiver.decodedIRData.command;if (received) {if ((millis() - last < 200) && myData.valCommand == received) {delay(50);IrReceiver.resume();return;}Serial.print("Command: 0x");Serial.println(received, HEX);myData.valCommand = received;esp_now_send(RxMACaddress0, (uint8_t *) &myData, sizeof(myData));esp_now_send(RxMACaddress1, (uint8_t *) &myData, sizeof(myData));}IrReceiver.resume();last = millis();}}// callback when data is sentvoid OnDataSent(uint8_t *mac_addr, uint8_t status) {Serial.print("\r\nLast Packet Send Status:\t");Serial.println(status == 0 ? "Delivery Success" : "Delivery Fail");}void setup() {// Init Serial MonitorSerial.begin(74880);delay(2500);// Set device as a Wi-Fi StationWiFi.mode(WIFI_STA);// Init ESP-NOWif (esp_now_init() != 0) {Serial.println("Error initializing ESP-NOW");return;}Serial.println("ESP-NOW Init Success");// Once ESPNow is successfully Init, we will register for Send CB to// get the status of Trasnmitted packetesp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);esp_now_register_send_cb(OnDataSent);// Register peeresp_now_add_peer(RxMACaddress0, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);esp_now_add_peer(RxMACaddress1, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);IrReceiver.begin(IR_RECEIVE_PIN); // data pin D5IrReceiver.registerReceiveCompleteCallback(OnIRDataRecv);}void loop() {// Chill}
ESPNow_Esp32_Transmitter
// - Lien vidéo: https://youtu.be/y-pKhpYCaJo// Arduino-IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote.#undef LED_BUILTIN#define LED_BUILTIN 2#define IR_RECEIVE_PIN 13#define DECODE_NEC#include <Arduino.h>#include <IRremote.hpp>#include <esp_now.h>#include <WiFi.h>// REPLACE WITH YOUR RECEIVER MAC Addressuint8_t RxMACaddress0[] = {0xE3, 0xA1, 0xFC, 0x23, 0x49, 0xEB}; //Esp8266uint8_t RxMACaddress1[] = {0xE3, 0xF9, 0xDE, 0x14, 0x86, 0xFC}; //ESP32// Structure example to send data// Must match the receiver structuretypedef struct struct_message {uint8_t DataCommand = 0xF9;uint8_t valCommand;uint8_t EndCommand = 0x9F;} struct_message;// Create a struct_message called myDatastruct_message myData;// Register peer#define NUMSLAVES 2esp_now_peer_info_t slaves[NUMSLAVES] = {};// Init ESP Now with fallbackvoid InitESPNow() {WiFi.disconnect();if (esp_now_init() == ESP_OK) {Serial.println("ESPNow Init Success");}else {Serial.println("ESPNow Init Failed");// Retry InitESPNow, add a counte and then restart?// InitESPNow();// or Simply RestartESP.restart();}}void manageSlave() {memcpy(slaves[0].peer_addr, RxMACaddress0, 6);memcpy(slaves[1].peer_addr, RxMACaddress1, 6);for (int i = 0; i < 2; i++) {slaves[i].channel = 1;slaves[i].encrypt = 0;esp_err_t addStatus = esp_now_add_peer(&slaves[i]);if (addStatus == ESP_OK) {// Pair successSerial.println("Pair success");} else if (addStatus == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW Not Init");} else if (addStatus == ESP_ERR_ESPNOW_ARG) {Serial.println("Add Peer - Invalid Argument");} else if (addStatus == ESP_ERR_ESPNOW_FULL) {Serial.println("Peer list full");} else if (addStatus == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("Out of memory");} else if (addStatus == ESP_ERR_ESPNOW_EXIST) {Serial.println("Peer Exists");} else {Serial.println("Not sure what happened");}delay(100);}}// send datavoid sendData() {for (int i = 0; i < 2; i++) {const uint8_t *peer_addr = slaves[i].peer_addr;esp_err_t result = esp_now_send(peer_addr, (uint8_t *) &myData, sizeof(myData));Serial.print("Send Status: ");if (result == ESP_OK) {Serial.println("Success");} else if (result == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW not Init.");} else if (result == ESP_ERR_ESPNOW_ARG) {Serial.println("Invalid Argument");} else if (result == ESP_ERR_ESPNOW_INTERNAL) {Serial.println("Internal Error");} else if (result == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("ESP_ERR_ESPNOW_NO_MEM");} else if (result == ESP_ERR_ESPNOW_NOT_FOUND) {Serial.println("Peer not found.");} else {Serial.println("Not sure what happened");}delay(100);}}// callback when data is sentvoid OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {char macStr[18];snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);Serial.print("Last Packet Sent to: "); Serial.println(macStr);Serial.print("Last Packet Send Status: "); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");}unsigned long last = millis();void IRDataRecv() {uint16_t received = IrReceiver.decodedIRData.command;if (received) {if ((millis() - last < 200) && myData.valCommand == received) {delay(50);IrReceiver.resume();return;}Serial.print("Command: 0x");Serial.println(received, HEX);myData.valCommand = received;sendData();}IrReceiver.resume();}void setup() {// Init Serial MonitorSerial.begin(115200);delay(2500);// Set device as a Wi-Fi StationWiFi.mode(WIFI_STA);// Init ESP-NOWInitESPNow();esp_now_register_send_cb(OnDataSent);manageSlave();IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // data pin 13}void loop() {if (IrReceiver.decode()) IRDataRecv();}
ESPNow_Esp32-C3_Transmitter
// - Lien vidéo: https://youtu.be/y-pKhpYCaJo// Arduino-IRremote: https://github.com/Arduino-IRremote/Arduino-IRremote.#define IR_RECEIVE_PIN 8#define DECODE_NEC#include <Arduino.h>#include <IRremote.hpp>#include <esp_now.h>#include <WiFi.h>// REPLACE WITH YOUR RECEIVER MAC Addressuint8_t RxMACaddress0[] = {0xE3, 0xA1, 0xFC, 0x23, 0x49, 0xEB}; //Esp8266uint8_t RxMACaddress1[] = {0xE3, 0xF9, 0xDE, 0x14, 0x86, 0xFC}; //ESP32// Must match the receiver structuretypedef struct struct_message {uint8_t DataCommand = 0xF9;uint8_t valCommand;uint8_t EndCommand = 0x9F;} struct_message;// Create a struct_message called myDatastruct_message myData;// Register peer#define NUMSLAVES 2esp_now_peer_info_t slaves[NUMSLAVES] = {};// Init ESP Now with fallbackvoid InitESPNow() {WiFi.disconnect();if (esp_now_init() == ESP_OK) {Serial.println("ESPNow Init Success");}else {Serial.println("ESPNow Init Failed");// Retry InitESPNow, add a counte and then restart?// InitESPNow();// or Simply RestartESP.restart();}}void manageSlave() {memcpy(slaves[0].peer_addr, RxMACaddress0, 6);memcpy(slaves[1].peer_addr, RxMACaddress1, 6);for (int i = 0; i < 2; i++) {slaves[i].channel = 1;slaves[i].encrypt = 0;esp_err_t addStatus = esp_now_add_peer(&slaves[i]);if (addStatus == ESP_OK) {// Pair successSerial.println("Pair success");} else if (addStatus == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW Not Init");} else if (addStatus == ESP_ERR_ESPNOW_ARG) {Serial.println("Add Peer - Invalid Argument");} else if (addStatus == ESP_ERR_ESPNOW_FULL) {Serial.println("Peer list full");} else if (addStatus == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("Out of memory");} else if (addStatus == ESP_ERR_ESPNOW_EXIST) {Serial.println("Peer Exists");} else {Serial.println("Not sure what happened");}delay(100);}}// send datavoid sendData() {for (int i = 0; i < 2; i++) {const uint8_t *peer_addr = slaves[i].peer_addr;esp_err_t result = esp_now_send(peer_addr, (uint8_t *) &myData, sizeof(myData));Serial.print("Send Status: ");if (result == ESP_OK) {Serial.println("Success");} else if (result == ESP_ERR_ESPNOW_NOT_INIT) {// How did we get so far!!Serial.println("ESPNOW not Init.");} else if (result == ESP_ERR_ESPNOW_ARG) {Serial.println("Invalid Argument");} else if (result == ESP_ERR_ESPNOW_INTERNAL) {Serial.println("Internal Error");} else if (result == ESP_ERR_ESPNOW_NO_MEM) {Serial.println("ESP_ERR_ESPNOW_NO_MEM");} else if (result == ESP_ERR_ESPNOW_NOT_FOUND) {Serial.println("Peer not found.");} else {Serial.println("Not sure what happened");}delay(100);}}// callback when data is sentvoid OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {char macStr[18];snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);Serial.print("Last Packet Sent to: "); Serial.println(macStr);Serial.print("Last Packet Send Status: "); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");}unsigned long last = millis();void IRDataRecv() {uint16_t received = IrReceiver.decodedIRData.command;if (received) {if ((millis() - last < 200) && myData.valCommand == received) {delay(50);IrReceiver.resume();return;}Serial.print("Command: 0x");Serial.println(received, HEX);myData.valCommand = received;sendData();}IrReceiver.resume();}void setup() {// Init Serial MonitorSerial.begin(115200);delay(2500);// Set device as a Wi-Fi StationWiFi.mode(WIFI_STA);// Init ESP-NOWInitESPNow();esp_now_register_send_cb(OnDataSent);manageSlave();IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // data pin 13}void loop() {if (IrReceiver.decode()) IRDataRecv();}
No comments:
Post a Comment