#include #include #include #include #include // OLED display width and height #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 // Create display object Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Structure to receive data typedef struct struct_message { float value; } struct_message; struct_message myData; // New ESP-IDF v5.x compatible callback void onDataRecv(const esp_now_recv_info_t *info, const uint8_t *incomingData, int len) { memcpy(&myData, incomingData, sizeof(myData)); Serial.print("Received Value: "); Serial.print(myData.value); Serial.println(" A"); } void setup() { Serial.begin(115200); // Initialize OLED display if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C is the I2C address Serial.println(F("SSD1306 allocation failed")); while (1); // Halt execution } display.clearDisplay(); display.setTextSize(2); display.setTextColor(SSD1306_WHITE); WiFi.mode(WIFI_STA); // Set ESP32 to Station mode // Initialize ESP-NOW if (esp_now_init() != ESP_OK) { Serial.println("ESP-NOW Init Failed!"); return; } esp_now_register_recv_cb(onDataRecv); // Register new ESP-NOW receive callback } void loop() { display.clearDisplay(); display.setCursor(0, 0); display.print("Pradeep"); display.setCursor(0, 18); display.print("CurrentRMS"); display.setCursor(10, 40); display.print(myData.value); display.setCursor(60, 40); display.print("A"); display.display(); // Do nothing, waiting for ESP-NOW messages }