#define out 0
#define charge 1
float batv = 0.0;
float in1v = 0.0;
float in3v = 0.0;
float temp1 = 0.0;
float temp2 = 0.0;
float temp3 = 0.0;
int r1 = 98600;
int r2 = 21800;
int r3 = 98100;
int r4 = 21700;
//int r5 = 97500;
//int r6 = 21800;
int PWM = 0;
void setup() {
pinMode(out, OUTPUT);
pinMode(charge, OUTPUT);
digitalWrite(out, LOW);
digitalWrite(charge, LOW);
}
void loop() {
read_bat_volt();
read_in1_volt();
//read_in3_volt();
bat_volt_protect();
bat_charge();
delay(10);
}
void read_bat_volt(void){
int analogvalue1 = analogRead(A1);
temp1 = (analogvalue1 * 5.0) / 1024.0;
batv = temp1 / (r2/(r1+r2));
}
void read_in1_volt(void){
int analogvalue2 = analogRead(A2);
temp2 = (analogvalue2 * 5.0) / 1024.0;
in1v = temp2 / (r4/(r3+r4));
}/*
void read_in3_volt(void){
int analogvalue3 = analogRead(A3);
temp3 = (analogvalue3 * 5.0) / 1024.0;
in3v = temp3 / (r6/(r5+r6));
}*/
void turn_on_output(void){
if(batv > in1v)
digitalWrite(out,HIGH);
else
digitalWrite(out, LOW);
}
void bat_volt_protect(void){
if(batv >= 13)
digitalWrite(out, LOW);
else if (batv <= 11)
digitalWrite(out, LOW);
else
digitalWrite(out, HIGH);
}
void bat_charge(void){
if(batv <= 11.1){
PWM++;
PWM = constrain(PWM,0,254);
}
else if(batv >=13) {
PWM = 0;
PWM = constrain(PWM,0,254);
}
else{
PWM--;
PWM = constrain(PWM,0,254);
}
analogWrite(charge, PWM);
}