/*
Notice: Each analog input has to be connected to the corresponding voltage point (A0 → 3.6V, A1 → 7.2V, A2 → 10.8V)
*/
float cv1;
float cv2;
float cv3;
float volarr1[50];
float volarr2[50];
float volarr3[50];
float avg1 = 0;
float avg2 = 0;
float avg3 = 0;
byte fault = 0;
void setup() {
pinMode(2, OUTPUT);
byte stav = 0;
for(byte i = 0; i < 50; i = i + 1) {
volarr1[i] = analogRead(A0) / 51.15;
volarr2[i] = analogRead(A1) / 51.15;
volarr3[i] = analogRead(A2) / 51.15;
stav = ~stav;
digitalWrite(2, stav);
delayMicroseconds(21000);
}
for(byte i = 0; i < 50; i = i + 1) {
avg1 = avg1 + volarr1[i];
avg2 = avg2 + volarr2[i];
avg3 = avg3 + volarr3[i];
}
avg1 = avg1 / 50.00;
avg2 = avg2 / 50.00;
avg3 = avg3 / 50.00;
cv1 = avg1;
cv2 = avg2 - cv1;
cv3 = avg3 - avg2;
if(cv1 < 3.00 || cv2 < 3.00 || cv3 < 3.00) {
fault = fault + 128;
}
if(abs(cv1 - cv2) > 0.10 || abs(cv2 - cv3) > 0.10 || abs(cv3 - cv1) > 0.10) {
fault = fault + 32;
}
Serial.begin(9600);
Serial.println(cv1);
Serial.println(cv2);
Serial.println(cv3);
if(fault) {
if(fault & 32) {
tone(2, 1500);
} else {
tone(2, 2000);
}
} else {
tone(2, 2500);
delay(1000);
}
}
void loop() {
if((!fault)) {
noTone(2);
}
delay(5000);
pinMode(2, OUTPUT);
byte stav = 0;
for(byte i = 0; i < 50; i = i + 1) {
volarr1[i] = analogRead(A0) / 51.15;
volarr2[i] = analogRead(A1) / 51.15;
volarr3[i] = analogRead(A2) / 51.15;
stav = ~stav;
digitalWrite(2, stav);
delayMicroseconds(21000);
}
for(byte i = 0; i < 50; i = i + 1) {
avg1 = avg1 + volarr1[i];
avg2 = avg2 + volarr2[i];
avg3 = avg3 + volarr3[i];
stav = ~stav;
digitalWrite(2, stav);
delayMicroseconds(21300);
}
avg1 = avg1 / 50.00;
avg2 = avg2 / 50.00;
avg3 = avg3 / 50.00;
cv1 = avg1;
cv2 = avg2 - cv1;
cv3 = avg3 - avg2;
if(cv1 < 3.00 || cv2 < 3.00 || cv3 < 3.00) {
fault = fault + 128;
}
if(abs(cv1 - cv2) > 0.10 || abs(cv2 - cv3) > 0.10 || abs(cv3 - cv1) > 0.10) {
fault = fault + 32;
}
if(fault) {
if(fault & 32) {
tone(2, 1500);
} else {
tone(2, 2000);
}
} else {}
}