#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
float BV, NC, LV, nL, LAmp, hr, S1, S, Bt, p, cost;
float n_r, f_r;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
}
void loop() {
while(1) {
lcd.setCursor(0,0);
lcd.print("Input:");
Serial.println("[BV NC LV nL LAmp Hr] = ");
while (Serial.available() == 0) {}
BV = Serial.parseFloat();
NC = Serial.parseFloat();
LV = Serial.parseFloat();
nL = Serial.parseFloat();
LAmp = Serial.parseFloat();
hr = Serial.parseFloat();
S1 = LV / BV;
S = ceil(S1);
f_r = (NC / (nL * LAmp * 1000));
n_r = hr / f_r;
lcd.setCursor(0,1);
lcd.print("BV: ");
lcd.print(BV);
delay(2000);
lcd.print(" NC:");
lcd.print(NC);
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LV:");
lcd.print(LV);
delay(2000);
lcd.print(" nL: ");
lcd.print(ceil(nL));
delay(2000);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("LA:");
lcd.print(ceil(LAmp));
delay(2000);
lcd.print("Hr:");
lcd.print(ceil(hr));
delay(2000);
Serial.print("No of series connected battery = ");
Serial.println(S);
Serial.print(ceil(n_r));
Serial.println(" parallel connected");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Series Battery:");
lcd.setCursor(0,1);
lcd.print(S);
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Parallel Bt: ");
lcd.setCursor(0,1);
lcd.print(ceil(n_r));
delay(2000);
lcd.clear();
if (n_r < 1) {
Bt = S;
} else {
Bt = S * n_r;
}
Serial.print(ceil(Bt));
Serial.println(" batteries");
lcd.setCursor(0,0);
lcd.print("Total Battery:");
lcd.setCursor(0,1);
lcd.print(ceil(Bt));
delay(2000);
lcd.clear();
if (NC == 2000) {
p = 67;
} else if (NC == 3000) {
p = 198;
} else if (NC == 4000) {
p = 400;
} else if (NC == 5000) {
p = 1000;
}
Serial.print("Single Bt = ₹");
Serial.println(p);
lcd.setCursor(0,0);
lcd.print("Single Bt cost:");
lcd.setCursor(0,1);
lcd.print(p);
delay(2000);
lcd.clear();
cost = Bt * p;
Serial.print("Total cost= ₹");
Serial.println(cost);
lcd.setCursor(0,0);
lcd.print("Total cost:");
lcd.setCursor(0,1);
lcd.print(cost);
delay(10000);
lcd.clear();
}
delay(100);
}