What is the error in my code? so I experienced an error like this

my error message!
In file included from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/ip_addr.h:41,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/include/ipv4_addr.h:41,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/include/user_interface.h:37,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/glue.h:60,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/arch/cc.h:61,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/arch.h:48,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/debug.h:40,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwipopts.h:3557,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/opt.h:51,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/init.h:40,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/IPAddress.h:27,
from C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Client.h:24,
from c:\Users\fajaradriyan\OneDrive\Dokumen\Arduino\libraries\Blynk\src/Adapters/BlynkArduinoClient.h:16,
from c:\Users\fajaradriyan\OneDrive\Dokumen\Arduino\libraries\Blynk\src/BlynkSimpleEsp8266.h:20,
from C:\Users\fajaradriyan\OneDrive\Dokumen\Arduino\PZEM004T_OLED_BlynkBasic_8266\PZEM004T_OLED_BlynkBasic_8266.ino:8:
C:\Users\fajaradriyan\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2/tools/sdk/lwip2/include/lwip/def.h:119: warning: "htons" redefined
119 | #define htons(x) lwip_htons(x)

MY CODE

#include<PZEM004Tv30.h>
#include<BlynkSimpleEsp8266.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>

#define DISPLAY_ADDRESS 0x3C // or 0x3D
#define DISPLAY_SCL_PIN 5
#define DISPLAY_SDA_PIN 4
#define DISPLAY_WIDTH 128 // OLED display width, in pixels
#define DISPLAY_HEIGHT 64 // OLED display height, in pixels
#define DISPLAY_RESET_PIN -1 // Reset pin # (or -1 if sharing with ESP8266 reset pin)

Adafruit_SSD1306 display(DISPLAY_WIDTH, DISPLAY_HEIGHT, &Wire, DISPLAY_RESET_PIN);

PZEM004Tv30 pzem1(14, 12); // GPIO14(D5) to Tx PZEM004; GPIO12(D6) to Rx PZEM004

char ssid[] = "Test"; // WiFi Name
char pass[] = "12345678"; // WiFi Password
char auth[] = "ytj4l1NtsZKGDwSpyEVFIslD7mjIarrM"; //Blynk Token

float voltage1, current1, power1, energy1, frequency1, pf1, va1, VAR1;

void setup() {
Serial.begin(115200);
setupDisplay();
Blynk.begin(auth, ssid, pass, "iot.serangkota.go.id", 8080); // Change the Blynk Server and Port Number when required.
}

void setupDisplay() {
Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN); // You can also set I2C SCL&SDA pins to other GPIOs
display.begin(SSD1306_SWITCHCAPVCC, DISPLAY_ADDRESS);

display.clearDisplay();
display.setCursor(10, 0);
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.println("PZEM-004T");
display.setCursor(10, 36);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.println("Connecting Blynk..");
display.display();
delay(1000);
}

void loop() {
voltage1 = pzem1.voltage();
voltage1 = zeroIfNan(voltage1);
current1 = pzem1.current();
current1 = zeroIfNan(current1);
power1 = pzem1.power();
power1 = zeroIfNan(power1);
energy1 = pzem1.energy() / 1000; //kwh
energy1 = zeroIfNan(energy1);
frequency1 = pzem1.frequency();
frequency1 = zeroIfNan(frequency1);
pf1 = pzem1.pf();
pf1 = zeroIfNan(pf1);
if (pf1 == 0) {
va1 = 0;
} else {
va1 = power1 / pf1;
}
if (pf1 == 0) {
VAR1 = 0;
} else {
VAR1 = power1 / pf1 * sqrt(1-sq(pf1));
}
delay(1000);

Blynk.run();
// Send to Blynk
Blynk.virtualWrite(V1, voltage1);
Blynk.virtualWrite(V2, current1);
Blynk.virtualWrite(V3, power1);
Blynk.virtualWrite(V4, energy1);
Blynk.virtualWrite(V5, frequency1);
Blynk.virtualWrite(V6, pf1);
Blynk.virtualWrite(V7, va1);
Blynk.virtualWrite(V8, VAR1);
Blynk.virtualWrite(V9, (power1 / va1) * 100);

Serial.println("");
Serial.printf("Voltage : %.2f/ V", voltage1);
Serial.printf("Current : %.2f/ A", current1);
Serial.printf("Power Active : %.2f/ W", power1);
Serial.printf("Frequency : %.2f/ Hz", frequency1);
Serial.printf("Cosine Phi : %.2f/ PF", pf1);
Serial.printf("Energy : %.2f/ kWh", energy1);
Serial.printf("Apparent Power : %.2f/ VA", va1);
Serial.printf("Reactive Power : %.2f/ VAR", VAR1);
Serial.printf("---------- END ----------");
Serial.println("");

display.clearDisplay();
display.setCursor(0, 0);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.printf("Voltage : %.2f/ V", voltage1);
display.printf("Current : %.2f/ A", current1);
display.printf("Power RMS: %.2f/ W", power1);
display.printf("Cos Phi : %.2f/ PF", pf1);
display.printf("Apprn Pwr: %.1f/ VA", va1);
display.printf("React Pwr: %.1f/ VAR", VAR1);
display.printf("Frequency: %.1f/ Hz", frequency1);
display.printf("Energy : %.1f/ kWh", energy1);
display.display();
delay(2000);
}

void printValue(String label, float value) {
if (value != NAN) {
Serial.print(label); Serial.println(value);
} else {
Serial.println("Error reading");
}
}

float zeroIfNan(float v) {
if (isnan(v)) {
v = 0;
}
return v;
}

Welcome to the forum

You started a topic in the Uncategorised category of the forum when its description explicitly tells you not to

Your topic has been moved to a relevant category. Please be careful in future when deciding where to start new topics

1 Like

Also Please correct your post above and add code tags around your code

It should look like this:

#include<PZEM004Tv30.h>
#include<BlynkSimpleEsp8266.h>
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>

#define DISPLAY_ADDRESS 0x3C // or 0x3D
#define DISPLAY_SCL_PIN 5
#define DISPLAY_SDA_PIN 4
#define DISPLAY_WIDTH 128 // OLED display width, in pixels
#define DISPLAY_HEIGHT 64 // OLED display height, in pixels
#define DISPLAY_RESET_PIN -1 // Reset pin # (or -1 if sharing with ESP8266 reset pin)

Adafruit_SSD1306 display(DISPLAY_WIDTH, DISPLAY_HEIGHT, &Wire, DISPLAY_RESET_PIN);

...

removing your private token would also be a good idea... (too late)

(Also press ctrl-T (PC) or cmd-T (Mac) in the IDE before copying to indent your code properly)

What kind of board are you using? Serial.printf(); does not work with Uno/Mega/Nano boards.

1 Like

probably an ESP8266 if I believe this include

2 Likes

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.