//8888 EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3 #include #include "EmonLib.h" // Include Emon Library int lcdColumns = 32; int lcdRows = 2; LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows); EnergyMonitor emon1; // Create an instance void setup() { lcd.init(); lcd.backlight(); lcd.cursor_off(); lcd.clear(); lcd.setCursor(0,0); lcd.print("AC Power Meter"); delay(1000); emon1.voltage(A3,366, 3.6); emon1.current(A6, 1.15999); // Current: input pin, calibration. lcd.clear(); } void loop() { lcd.setCursor(0,0); lcd.print("Sequence: I+V,"); lcd.setCursor(0,1); lcd.print("Power(RMS),"); lcd.setCursor(16,0); lcd.print("PowerFactor,"); delay(2000); emon1.calcVI(20, 4000); double Vrms = emon1.Vrms; if(Vrms<10){Vrms=0;}; double Irms = emon1.calcIrms(4000); // Calculate Irms only double Phase = emon1.powerFactor; if(Vrms<10 || Irms<0.009){Phase = 0;}; double apparentpower=(Irms*Vrms); lcd.clear(); lcd.setCursor(0,0); lcd.print("Vrms:"); lcd.setCursor(6,0); lcd.print(Vrms); lcd.setCursor(14,0); lcd.print("V"); lcd.setCursor(0,1); lcd.print("Irms:"); lcd.setCursor(6,1); lcd.print(Irms); lcd.setCursor(11,1); lcd.print("A"); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Power:"); lcd.setCursor(7,0); lcd.print(apparentpower); lcd.setCursor(13, 0); lcd.print(" W"); lcd.setCursor(0,1); lcd.print("Pfactor:"); lcd.setCursor(9,1); lcd.print(Phase); delay(2000); lcd.clear(); }