#include #include #include #include "Arduino.h" // Initializing Pins int ch1_pin = A0; int ch2_pin = A1; // Initialize digital values for voltage int ch1_digital = 0; int ch2_digital = 0; // Initializing floats for the voltage float ch1_analog = 0.00; float ch2_analog = 0.00; // Initializes current values in mA int ch1_current = 0; int ch2_current = 0; // Initializing 16x2 LCD Display LiquidCrystal_I2C lcd(0x27, 16, 2); // Initializing 2 ina219 current sensors Adafruit_INA219 ina219; Adafruit_INA219 ina219_2(0x41); void setup() { Serial.begin(115200); // Turning on LCD display lights lcd.init(); lcd.backlight(); // Initializing 2 ina219 current sensors ina219.begin(); ina219_2.begin(); } // Calculates the analog value of the voltages // (multiplied by an extra 5 because voltage divider) float calculate_analog_value (int pin){ int d_sig = analogRead(pin); float a_sig = (d_sig * 5.00 * 5.00)/1023.00; return a_sig; } // Prints the outputs to screen void lcd_print(float ch1_voltage, float ch2_voltage){ // Printing channel 1 voltage lcd.setCursor(0, 0); lcd.print("C1:"); lcd.print(ch1_voltage); lcd.print("V "); // Printing channel 1 current lcd.setCursor(10, 0); lcd.print(ch1_current); lcd.print("mA"); // Printing channel 2 voltage lcd.setCursor(0, 1); lcd.print("C2:"); lcd.print(ch2_voltage); lcd.print("V "); // Printing channel 2 current lcd.setCursor(10, 1); lcd.print(ch2_current); lcd.print("mA"); } void serial_print(){ Serial.println(); Serial.println("New Instance:"); // Printing the Ch1 analog signal Serial.print("Ch1 analog = "); Serial.print(ch1_analog); Serial.println("V"); // Printing the Ch2 analog signal Serial.print("Ch2 analog = "); Serial.print(ch2_analog); Serial.println("V"); // Printing Channel 1 current Serial.print("Ch1 Current: "); Serial.print(ch1_current); Serial.println("A"); // Printing Channel 2 current Serial.print("Ch2 Current: "); Serial.print(ch2_current); Serial.println("A"); } void loop() { digitalWrite(LED_BUILTIN, LOW); // Take analog inputs from pins A0 and A1 ch1_digital = analogRead(ch1_pin); ch2_digital = analogRead(ch2_pin); // Converting Digital value of voltage to analog voltage ch1_analog = calculate_analog_value(ch1_pin); ch2_analog = calculate_analog_value(ch2_pin); // Using ina219 library to get current from current sensors ch1_current = ina219.getCurrent_mA(); ch2_current = ina219_2.getCurrent_mA(); // Calling print function lcd_print(ch1_analog, ch2_analog); serial_print(); delay(1000); }