#include <Wire.h>


#include <LiquidCrystal_I2C.h>



LiquidCrystal_I2C lcd(0x27, 16,2);

int a,b,c;
long volt,current,power,ah;
// the 8 arrays that form each segment of the custom numbers
unsigned long msec = 0;
float time = 0.0;
int sample = 0;
float totalCharge = 0.0;
float averageAmps = 0.0;
float ampSeconds = 0.0;
long ampHours = 0;

void setup()
{
 
   lcd.begin(16, 2);
   Serial.begin(9600);
   lcd.init();
   lcd.backlight();
   }


   void loop()

   {
    for(int i=0;i<200;i++){
    c = analogRead(A1);
    a = analogRead(A0);
    volt=volt+a;
      current=current+c;
       delay(1);
        }
         current=(current/200-514);
           if(current<1)current=0;
             current=current*15;
                volt=volt/30;
                   power=(volt*current)/1000;
                    //--------------------  
                         sample = sample + 1;
                           
                             msec = millis();
                               
                                 
                                   
                                    time = (float) msec / 1000.0;
                                      
                                       totalCharge = totalCharge + (current);
                                         
                                          averageAmps = totalCharge / sample;
                                            
                                             ampSeconds = averageAmps*time;

                                              ampHours = ampSeconds/3600;

                                               //--------------
                                                   Serial.print(volt);
                                                         Serial.print("  ");
                                                                 Serial.print(current);
                                                                 Serial.print("  ");
                                                                         Serial.print(power);

                                                                                 Serial.print("  ");
                                                                                         Serial.print(ampHours);
                                                                                                  Serial.print("  ");
                                                                                                          Serial.println(time);
                                                                                                                  
                                                                                                                   lcd.setCursor(6,0);
                                                                                                                     lcd.print("V");
                                                                                                                        b=volt%10;
                                                                                                                           lcd.setCursor(5,0);
                                                                                                                             lcd.print(b);
                                                                                                                                b=(volt/10)%10;
                                                                                                                                   lcd.setCursor(4,0);
                                                                                                                                     lcd.print(b);
                                                                                                                                       lcd.setCursor(3,0);
                                                                                                                                         lcd.print(".");
                                                                                                                                            b=(volt/100)%10;
                                                                                                                                              lcd.setCursor(2,0);
                                                                                                                                                lcd.print(b);
                                                                                                                                                  b=(volt/1000)%10;
                                                                                                                                                   lcd.setCursor(1,0);
                                                                                                                                                     if(volt>999)lcd.print(b);
                                                                                                                                                      else lcd.print(" ");
                                                                                                                                                        
                                                                                                                                                          lcd.setCursor(14,0);
                                                                                                                                                            lcd.print("A");
                                                                                                                                                              
                                                                                                                                                                 b=current%10;
                                                                                                                                                                      lcd.setCursor(13,0);
                                                                                                                                                                        lcd.print(b);
                                                                                                                                                                            b=(current/10)%10;
                                                                                                                                                                                 lcd.setCursor(12,0);
                                                                                                                                                                                   lcd.print(b);
                                                                                                                                                                                      lcd.setCursor(11,0);
                                                                                                                                                                                        lcd.print(".");
                                                                                                                                                                                           b=(current/100)%10;
                                                                                                                                                                                                lcd.setCursor(10,0);
                                                                                                                                                                                                  lcd.print(b);
                                                                                                                                                                                                   

                                                                                                                                                                                                      lcd.setCursor(6,1);
                                                                                                                                                                                                        lcd.print("W");
                                                                                                                                                                                                           b=power%10;
                                                                                                                                                                                                              lcd.setCursor(5,1);
                                                                                                                                                                                                                lcd.print(b);
                                                                                                                                                                                                                   b=(power/10)%10;
                                                                                                                                                                                                                      lcd.setCursor(3,1);
                                                                                                                                                                                                                        lcd.print(b);
                                                                                                                                                                                                                          lcd.setCursor(4,1);
                                                                                                                                                                                                                            lcd.print(".");
                                                                                                                                                                                                                               b=(power/100)%10;
                                                                                                                                                                                                                                 lcd.setCursor(2,1);
                                                                                                                                                                                                                                   if(power>99)lcd.print(b);
                                                                                                                                                                                                                                     else lcd.print(" ");
                                                                                                                                                                                                                                       b=(power/1000)%10;
                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                           lcd.setCursor(1,1);
                                                                                                                                                                                                                                             if(power>999)lcd.print(b);
                                                                                                                                                                                                                                               else lcd.print(" ");
                                                                                                                                                                                                                                               //------------
                                                                                                                                                                                                                                                 lcd.setCursor(14,1);
                                                                                                                                                                                                                                                   lcd.print("AH");
                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                        b=ampHours%10;
                                                                                                                                                                                                                                                             lcd.setCursor(13,1);
                                                                                                                                                                                                                                                               lcd.print(b);
                                                                                                                                                                                                                                                                   b=(ampHours/10)%10;
                                                                                                                                                                                                                                                                        lcd.setCursor(12,1);
                                                                                                                                                                                                                                                                          lcd.print(b);
                                                                                                                                                                                                                                                                             lcd.setCursor(11,1);
                                                                                                                                                                                                                                                                               lcd.print(".");
                                                                                                                                                                                                                                                                                  b=(ampHours/100)%10;
                                                                                                                                                                                                                                                                                       lcd.setCursor(10,1);
                                                                                                                                                                                                                                                                                         lcd.print(b);
                                                                                                                                                                                                                                                                                              b=(ampHours/1000)%10;
                                                                                                                                                                                                                                                                                                   lcd.setCursor(9,1);
                                                                                                                                                                                                                                                                                                     lcd.print(b);
                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                        delay(100);
                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                          }  
                                                                                                                                                                                                                                                                                                          
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL