#include #include // Replace with receiver MAC Addresses uint8_t slave1Address[] = {0xDC, 0x4F, 0x22, 0x62, 0xFA, 0x0A}; uint8_t slave2Address[] = {0xDC, 0x4F, 0x22, 0x62, 0xF9, 0xFA}; // Structure example to send data typedef struct struct_message { char message[32]; } struct_message; // Create a struct_message called myData struct_message myData; // Callback when data is sent void OnDataSent(uint8_t *mac_addr, uint8_t sendStatus) { Serial.print("Last Packet Send Status: "); if (sendStatus == 0){ Serial.println("Delivery success"); } else { Serial.println("Delivery fail"); } } void setup() { // Init Serial Monitor Serial.begin(115200); // Set device as a Wi-Fi Station WiFi.mode(WIFI_STA); // Init ESP-NOW if (esp_now_init() != 0) { Serial.println("Error initializing ESP-NOW"); return; } // Register for Send CB to get the status of transmitted packet esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER); esp_now_register_send_cb(OnDataSent); // Register peers esp_now_add_peer(slave1Address, ESP_NOW_ROLE_SLAVE, 1, NULL, 0); esp_now_add_peer(slave2Address, ESP_NOW_ROLE_SLAVE, 1, NULL, 0); } void loop() { static String input; static int state = 0; static String ledStatus; // Check if data is available on Serial Monitor if (Serial.available() > 0) { if (state == 0) { // Read the LED status from Serial Monitor ledStatus = Serial.readStringUntil('\n'); if (ledStatus == "1" || ledStatus == "0") { // Set the message based on the LED status ledStatus.toCharArray(myData.message, 32); Serial.println("Enter node number to send to (1, 2, or A):"); state = 1; } else { Serial.println("Invalid LED status. Please enter 1 (on) or 0 (off)."); } } else if (state == 1) { // Read the node number from Serial Monitor String node = Serial.readStringUntil('\n'); if (node == "1") { // Send message to Slave 1 esp_now_send(slave1Address, (uint8_t *) &myData, sizeof(myData)); Serial.println("Sent data to Slave 1"); } else if (node == "2") { // Send message to Slave 2 esp_now_send(slave2Address, (uint8_t *) &myData, sizeof(myData)); Serial.println("Sent data to Slave 2"); } else if (node == "A") { // Send message to both Slaves esp_now_send(slave1Address, (uint8_t *) &myData, sizeof(myData)); esp_now_send(slave2Address, (uint8_t *) &myData, sizeof(myData)); Serial.println("Sent data to both Slaves"); } else { Serial.println("Invalid node number. Please enter 1, 2, or A."); } // Reset state state = 0; } } }