#include #include typedef struct { bool buttonPressed; } joystickData; joystickData receivedData; // List of LED pins const int ledPins[] = {2,3,4, 5, 6,7,8,9,10, 20,21}; // GPIO4 = D2, GPIO5 = D3, GPIO10 = D10 const int numLeds = sizeof(ledPins) / sizeof(ledPins[0]); void onReceive(const esp_now_recv_info_t *info, const uint8_t *incomingData, int len) { Serial.println("Data received"); memcpy(&receivedData, incomingData, sizeof(receivedData)); Serial.print("Button Status: "); Serial.println(receivedData.buttonPressed ? "PRESSED" : "NOT PRESSED"); for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], receivedData.buttonPressed ? HIGH : LOW); } Serial.print("LEDs: "); Serial.println(receivedData.buttonPressed ? "ON" : "OFF"); } void setup() { Serial.begin(115200); delay(1000); Serial.println("Receiver with multiple LEDs starting..."); // Set all LED pins as output for (int i = 0; i < numLeds; i++) { pinMode(ledPins[i], OUTPUT); digitalWrite(ledPins[i], LOW); } WiFi.mode(WIFI_STA); if (esp_now_init() != ESP_OK) { Serial.println("ESP-NOW init failed!"); return; } esp_now_register_recv_cb(onReceive); Serial.println("ESP-NOW Ready. Waiting for joystick button..."); } void loop() { // Nothing here }