/* Hello Wokwi! */
#include <LiquidCrystal_I2C.h>
unsigned long timeLine_analog,time_loop_analog = 10;
unsigned long timeLine,time_loop = 500;
int step_analog = 0,Sum = 10;
int ADC_volt,ADC_current,Current_offset = 496;
float Volt,Current;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void read_analog(){
step_analog++;
ADC_volt = ADC_volt + analogRead(1);
ADC_current = ADC_current + analogRead(0);
if (step_analog >= Sum ) {
Volt = (float)(ADC_volt/Sum*0.25531);
Current = (float)(((ADC_current/Sum)-Current_offset)*-0.05);
step_analog = 0;
ADC_volt = 0;
ADC_current = 0;
}
}
void LCD_Monitor() {
lcd.setCursor(0, 0);
lcd.print("Voltage:");
lcd.setCursor(9, 0);
lcd.print(Volt);
lcd.setCursor(0, 1);
lcd.print("Current:");
lcd.setCursor(9, 1);
lcd.print(Current);
Serial.println(Current);
}
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.print("Wat Metter");
lcd.clear();
timeLine = millis();
timeLine_analog = millis();
}
void loop() {
if (millis() - timeLine_analog >time_loop_analog){
timeLine_analog = millis();
read_analog();
}
if (millis() -timeLine > time_loop )
timeLine = millis();
LCD_Monitor();
}