/******************************************************************
 *  Spannungs- und Strommessung mit INA219
 *    mit Ausgabe auf LCD-Anzeige und Funktionsplotter              
 *  
 *    http://www.dl8ma.de/Arduino/telemetrie/INA219.php
 *  
 *  04.10.2017  Jürgen, www.DL8MA.de              
 *  
*/
#include <Adafruit_INA219.h>                    // https://github.com/adafruit/Adafruit_INA219
#include <LiquidCrystal_I2C.h>                  // https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

float busvoltage = 0;
float current_mA = 0;

LiquidCrystal_I2C lcd(0x27, 20, 4);             // LCD-Display am I2C-Bus, Adresse: 0x27, 4x20 Zeichen
Adafruit_INA219   ina219;

void setup(void) 
{
  lcd.begin();                                  // Initialisierung LCD-Anzeige
  lcd.backlight();
  lcd.print("  INA219-Messmodul");
  
  Serial.begin( 9600 );                         // Initialisierung serielle Schnittstelle
}

void loop(void) 
{
  ina219.begin(0x40);                           // INA219 am I2C-Bus, Adresse 0x40
  ina219.setCalibration_32V_1A();               // Kalbrieren und Messbereiche festlegen: 32V, 1A
 
  busvoltage = ina219.getBusVoltage_V();        // Spannung messen
  current_mA = ina219.getCurrent_mA();          // Strom messen

  lcd.setCursor( 0,2 );                         // Ausgabe auf LCD-Anzeige
  lcd.print( "Spannung" );
  lcd.setCursor( 9,2 );
  lcd.print( busvoltage );
  lcd.print( " V   " );
  
  lcd.setCursor( 0,3 );
  lcd.print( "Strom" );
  lcd.setCursor( 9,3 );
  lcd.print( current_mA );
  lcd.print( " mA   " );

  Serial.print(busvoltage);                     // Messwerte für Plotter auf serielle Schnittstelle
  Serial.print(",");                            // ausgeben
  Serial.println(current_mA); 
  
  delay( 1000 );                                // Messintervall ca. 1 Sekunden ( 1 Hz )
}