#define PWRLED 5 #define CHGLED 6 #define PWRBTN 8 #define CHGBTN 9 #define PWRMFT 11 #define VIN A0 #define LED1 A1 #define LED2 A2 #define LED3 A3 #define LED4 A4 #define LED5 A5 #define IN1 A6 #define IN2 A7 int i = 0; int buttonPState = 0; int buttonCState = 0; boolean IsPowerOn = 0; boolean isCharging = 0; int sensorVal = 0; float voltage = 0; float countVal = 0; void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(PWRLED, OUTPUT); pinMode(CHGLED, OUTPUT); pinMode(PWRBTN, INPUT_PULLUP); pinMode(CHGBTN, INPUT_PULLUP); pinMode(PWRMFT, OUTPUT); pinMode(VIN, INPUT); digitalWrite (PWRMFT, LOW); pinMode(IN1, INPUT); pinMode(IN2, INPUT); //Serial.begin(19200); } void loop() { DidActionTakePlace(); ChechChg(); if (i>5000 && IsPowerOn == 1){ CheckVoltage();} i++; //Serial.println(voltage); } void BlinkPow() { delay(200); analogWrite(PWRLED, 0.00); delay(12); analogWrite(PWRLED, 0.00); delay(12); analogWrite(PWRLED, 0.02); delay(12); analogWrite(PWRLED, 0.05); delay(12); analogWrite(PWRLED, 0.09); delay(12); analogWrite(PWRLED, 0.15); delay(12); analogWrite(PWRLED, 0.23); delay(12); analogWrite(PWRLED, 0.32); delay(12); analogWrite(PWRLED, 0.43); delay(12); analogWrite(PWRLED, 0.55); delay(12); analogWrite(PWRLED, 0.70); delay(12); analogWrite(PWRLED, 0.85); delay(12); analogWrite(PWRLED, 1.01); delay(12); analogWrite(PWRLED, 1.20); delay(12); analogWrite(PWRLED, 1.42); delay(12); analogWrite(PWRLED, 1.63); delay(12); analogWrite(PWRLED, 1.85); delay(12); analogWrite(PWRLED, 2.12); delay(12); analogWrite(PWRLED, 2.40); delay(12); analogWrite(PWRLED, 2.67); delay(12); analogWrite(PWRLED, 2.99); delay(12); analogWrite(PWRLED, 3.30); delay(12); analogWrite(PWRLED, 3.65); delay(12); analogWrite(PWRLED, 4.00); delay(12); analogWrite(PWRLED, 4.39); delay(12); analogWrite(PWRLED, 4.77); delay(12); analogWrite(PWRLED, 5.16); delay(12); analogWrite(PWRLED, 5.65); delay(12); analogWrite(PWRLED, 6.08); delay(12); analogWrite(PWRLED, 6.54); delay(12); analogWrite(PWRLED, 7.01); delay(12); analogWrite(PWRLED, 7.54); delay(12); analogWrite(PWRLED, 8.10); delay(12); analogWrite(PWRLED, 8.63); delay(12); analogWrite(PWRLED, 9.23); delay(12); analogWrite(PWRLED, 9.80); delay(12); analogWrite(PWRLED, 10.45); delay(12); analogWrite(PWRLED, 11.23); delay(12); analogWrite(PWRLED, 11.98); delay(12); analogWrite(PWRLED, 12.76); delay(12); analogWrite(PWRLED, 13.70); delay(12); analogWrite(PWRLED, 14.55); delay(12); analogWrite(PWRLED, 15.43); delay(12); analogWrite(PWRLED, 16.41); delay(12); analogWrite(PWRLED, 17.43); delay(12); analogWrite(PWRLED, 18.42); delay(12); analogWrite(PWRLED, 19.52); delay(12); analogWrite(PWRLED, 20.58); delay(12); analogWrite(PWRLED, 21.75); delay(12); analogWrite(PWRLED, 22.97); delay(12); analogWrite(PWRLED, 24.15); delay(12); analogWrite(PWRLED, 25.36); delay(12); analogWrite(PWRLED, 26.80); delay(12); analogWrite(PWRLED, 28.10); delay(12); analogWrite(PWRLED, 29.44); delay(12); analogWrite(PWRLED, 30.92); delay(12); analogWrite(PWRLED, 32.45); delay(12); analogWrite(PWRLED, 33.93); delay(12); analogWrite(PWRLED, 35.56); delay(12); analogWrite(PWRLED, 37.12); delay(12); analogWrite(PWRLED, 38.85); delay(12); analogWrite(PWRLED, 40.63); delay(12); analogWrite(PWRLED, 42.35); delay(12); analogWrite(PWRLED, 44.11); delay(12); analogWrite(PWRLED, 46.18); delay(12); analogWrite(PWRLED, 48.04); delay(12); analogWrite(PWRLED, 49.95); delay(12); analogWrite(PWRLED, 52.06); delay(12); analogWrite(PWRLED, 54.22); delay(12); analogWrite(PWRLED, 56.44); delay(12); analogWrite(PWRLED, 58.57); delay(12); analogWrite(PWRLED, 60.75); delay(12); analogWrite(PWRLED, 63.30); delay(12); analogWrite(PWRLED, 65.59); delay(12); analogWrite(PWRLED, 67.93); delay(12); analogWrite(PWRLED, 70.50); delay(12); analogWrite(PWRLED, 73.12); delay(12); analogWrite(PWRLED, 75.63); delay(12); analogWrite(PWRLED, 78.37); delay(12); analogWrite(PWRLED, 80.98); delay(12); analogWrite(PWRLED, 83.84); delay(12); analogWrite(PWRLED, 86.75); delay(12); analogWrite(PWRLED, 89.52); delay(12); analogWrite(PWRLED, 92.35); delay(12); analogWrite(PWRLED, 95.63); delay(12); analogWrite(PWRLED, 98.55); delay(12); analogWrite(PWRLED, 101.52); delay(12); analogWrite(PWRLED, 105.41); delay(12); analogWrite(PWRLED, 108.92); delay(12); analogWrite(PWRLED, 112.71); delay(12); analogWrite(PWRLED, 116.33); delay(12); analogWrite(PWRLED, 120.23); delay(12); analogWrite(PWRLED, 124.19); delay(12); analogWrite(PWRLED, 127.95); delay(12); analogWrite(PWRLED, 131.99); delay(12); analogWrite(PWRLED, 136.08); delay(12); analogWrite(PWRLED, 139.95); delay(12); analogWrite(PWRLED, 144.09); delay(12); analogWrite(PWRLED, 148.26); delay(12); analogWrite(PWRLED, 152.20); delay(12); analogWrite(PWRLED, 156.40); delay(12); analogWrite(PWRLED, 160.60); delay(12); analogWrite(PWRLED, 164.81); delay(12); analogWrite(PWRLED, 168.76); delay(12); analogWrite(PWRLED, 172.70); delay(12); analogWrite(PWRLED, 177.11); delay(12); analogWrite(PWRLED, 181.01); delay(12); analogWrite(PWRLED, 185.11); delay(12); analogWrite(PWRLED, 189.17); delay(12); analogWrite(PWRLED, 192.94); delay(12); analogWrite(PWRLED, 196.89); delay(12); analogWrite(PWRLED, 200.55); delay(12); analogWrite(PWRLED, 204.59); delay(12); analogWrite(PWRLED, 208.10); delay(12); analogWrite(PWRLED, 211.52); delay(12); analogWrite(PWRLED, 215.27); delay(12); analogWrite(PWRLED, 218.50); delay(12); analogWrite(PWRLED, 221.63); delay(12); analogWrite(PWRLED, 224.83); delay(12); analogWrite(PWRLED, 227.90); delay(12); analogWrite(PWRLED, 230.83); delay(12); analogWrite(PWRLED, 233.46); delay(12); analogWrite(PWRLED, 236.10); delay(12); analogWrite(PWRLED, 238.58); delay(12); analogWrite(PWRLED, 240.76); delay(12); analogWrite(PWRLED, 242.90); delay(12); analogWrite(PWRLED, 244.87); delay(12); analogWrite(PWRLED, 246.56); delay(12); analogWrite(PWRLED, 248.17); delay(12); analogWrite(PWRLED, 249.58); delay(12); analogWrite(PWRLED, 250.80); delay(12); analogWrite(PWRLED, 251.76); delay(12); analogWrite(PWRLED, 252.59); delay(12); analogWrite(PWRLED, 253.21); delay(12); analogWrite(PWRLED, 253.60); delay(12); analogWrite(PWRLED, 253.81); delay(12); analogWrite(PWRLED, 253.8); delay(12); analogWrite(PWRLED, 253.08); delay(12); analogWrite(PWRLED, 253.54); delay(12); analogWrite(PWRLED, 253.79); delay(12); analogWrite(PWRLED, 253.84); delay(12); analogWrite(PWRLED, 253.68); delay(12); analogWrite(PWRLED, 253.32); delay(12); analogWrite(PWRLED, 252.79); delay(12); analogWrite(PWRLED, 252.03); delay(12); analogWrite(PWRLED, 251.06); delay(12); analogWrite(PWRLED, 249.96); delay(12); analogWrite(PWRLED, 248.60); delay(12); analogWrite(PWRLED, 247.05); delay(12); analogWrite(PWRLED, 245.31); delay(12); analogWrite(PWRLED, 243.50); delay(12); analogWrite(PWRLED, 241.53); delay(12); analogWrite(PWRLED, 239.14); delay(12); analogWrite(PWRLED, 236.84); delay(12); analogWrite(PWRLED, 234.25); delay(12); analogWrite(PWRLED, 231.50); delay(12); analogWrite(PWRLED, 228.78); delay(12); analogWrite(PWRLED, 225.75); delay(12); analogWrite(PWRLED, 222.77); delay(12); analogWrite(PWRLED, 219.49); delay(12); analogWrite(PWRLED, 216.09); delay(12); analogWrite(PWRLED, 212.78); delay(12); analogWrite(PWRLED, 208.96); delay(12); analogWrite(PWRLED, 205.47); delay(12); analogWrite(PWRLED, 201.91); delay(12); analogWrite(PWRLED, 197.81); delay(12); analogWrite(PWRLED, 194.11); delay(12); analogWrite(PWRLED, 190.12); delay(12); analogWrite(PWRLED, 186.31); delay(12); analogWrite(PWRLED, 182.22); delay(12); analogWrite(PWRLED, 178.09); delay(12); analogWrite(PWRLED, 174.17); delay(12); analogWrite(PWRLED, 169.75); delay(12); analogWrite(PWRLED, 165.80); delay(12); analogWrite(PWRLED, 161.84); delay(12); analogWrite(PWRLED, 157.64); delay(12); analogWrite(PWRLED, 153.43); delay(12); analogWrite(PWRLED, 149.24); delay(12); analogWrite(PWRLED, 145.32); delay(12); analogWrite(PWRLED, 141.16); delay(12); analogWrite(PWRLED, 137.04); delay(12); analogWrite(PWRLED, 133.19); delay(12); analogWrite(PWRLED, 129.37); delay(12); analogWrite(PWRLED, 125.12); delay(12); analogWrite(PWRLED, 121.39); delay(12); analogWrite(PWRLED, 117.47); delay(12); analogWrite(PWRLED, 113.61); delay(12); analogWrite(PWRLED, 110.03); delay(12); analogWrite(PWRLED, 106.28); delay(12); analogWrite(PWRLED, 102.81); delay(12); analogWrite(PWRLED, 98.97); delay(12); analogWrite(PWRLED, 96.04); delay(12); analogWrite(PWRLED, 93.16); delay(12); analogWrite(PWRLED, 89.92); delay(12); analogWrite(PWRLED, 87.15); delay(12); analogWrite(PWRLED, 84.42); delay(12); analogWrite(PWRLED, 81.55); delay(12); analogWrite(PWRLED, 78.74); delay(12); analogWrite(PWRLED, 76.17); delay(12); analogWrite(PWRLED, 73.48); delay(12); analogWrite(PWRLED, 71.02); delay(12); analogWrite(PWRLED, 68.44); delay(12); analogWrite(PWRLED, 65.92); delay(12); analogWrite(PWRLED, 63.62); delay(12); analogWrite(PWRLED, 61.38); delay(12); analogWrite(PWRLED, 58.88); delay(12); analogWrite(PWRLED, 56.74); delay(12); analogWrite(PWRLED, 54.66); delay(12); analogWrite(PWRLED, 52.49); delay(12); analogWrite(PWRLED, 50.37); delay(12); analogWrite(PWRLED, 48.45); delay(12); analogWrite(PWRLED, 46.44); delay(12); analogWrite(PWRLED, 44.62); delay(12); analogWrite(PWRLED, 42.72); delay(12); analogWrite(PWRLED, 40.88); delay(12); analogWrite(PWRLED, 39.20); delay(12); analogWrite(PWRLED, 37.58); delay(12); analogWrite(PWRLED, 35.78); delay(12); analogWrite(PWRLED, 34.25); delay(12); analogWrite(PWRLED, 32.66); delay(12); analogWrite(PWRLED, 31.22); delay(12); analogWrite(PWRLED, 29.73); delay(12); analogWrite(PWRLED, 28.29); delay(12); analogWrite(PWRLED, 26.98); delay(12); analogWrite(PWRLED, 25.71); delay(12); analogWrite(PWRLED, 24.32); delay(12); analogWrite(PWRLED, 23.14); delay(12); analogWrite(PWRLED, 21.99); delay(12); analogWrite(PWRLED, 20.81); delay(12); analogWrite(PWRLED, 19.66); delay(12); analogWrite(PWRLED, 18.64); delay(12); analogWrite(PWRLED, 17.57); delay(12); analogWrite(PWRLED, 16.61); delay(12); analogWrite(PWRLED, 15.62); delay(12); analogWrite(PWRLED, 14.67); delay(12); analogWrite(PWRLED, 13.82); delay(12); analogWrite(PWRLED, 12.99); delay(12); analogWrite(PWRLED, 12.09); delay(12); analogWrite(PWRLED, 11.33); delay(12); analogWrite(PWRLED, 10.60); delay(12); analogWrite(PWRLED, 9.85); delay(12); analogWrite(PWRLED, 9.23); delay(12); analogWrite(PWRLED, 8.68); delay(12); analogWrite(PWRLED, 8.10); delay(12); analogWrite(PWRLED, 7.58); delay(12); analogWrite(PWRLED, 7.09); delay(12); analogWrite(PWRLED, 6.58); delay(12); analogWrite(PWRLED, 6.08); delay(12); analogWrite(PWRLED, 5.65); delay(12); analogWrite(PWRLED, 5.23); delay(12); analogWrite(PWRLED, 4.77); delay(12); analogWrite(PWRLED, 4.39); delay(12); analogWrite(PWRLED, 4.03); delay(12); analogWrite(PWRLED, 3.65); delay(12); analogWrite(PWRLED, 3.33); delay(12); analogWrite(PWRLED, 2.99); delay(12); analogWrite(PWRLED, 2.70); delay(12); analogWrite(PWRLED, 2.40); delay(12); analogWrite(PWRLED, 2.14); delay(12); analogWrite(PWRLED, 1.87); delay(12); analogWrite(PWRLED, 1.63); delay(12); analogWrite(PWRLED, 1.42); delay(12); analogWrite(PWRLED, 1.22); delay(12); analogWrite(PWRLED, 1.04); delay(12); analogWrite(PWRLED, 0.85); delay(12); analogWrite(PWRLED, 0.70); delay(12); analogWrite(PWRLED, 0.56); delay(12); analogWrite(PWRLED, 0.43); delay(12); analogWrite(PWRLED, 0.33); delay(12); analogWrite(PWRLED, 0.23); delay(12); analogWrite(PWRLED, 0.15); delay(12); analogWrite(PWRLED, 0.09); delay(12); analogWrite(PWRLED, 0.05); delay(12); analogWrite(PWRLED, 0.02); delay(12); } void BlinkChg() { delay(200); analogWrite(CHGLED, 0.00); delay(12); analogWrite(CHGLED, 0.00); delay(12); analogWrite(CHGLED, 0.02); delay(12); analogWrite(CHGLED, 0.05); delay(12); analogWrite(CHGLED, 0.09); delay(12); analogWrite(CHGLED, 0.15); delay(12); analogWrite(CHGLED, 0.23); delay(12); analogWrite(CHGLED, 0.32); delay(12); analogWrite(CHGLED, 0.43); delay(12); analogWrite(CHGLED, 0.55); delay(12); analogWrite(CHGLED, 0.70); delay(12); analogWrite(CHGLED, 0.85); delay(12); analogWrite(CHGLED, 1.01); delay(12); analogWrite(CHGLED, 1.20); delay(12); analogWrite(CHGLED, 1.42); delay(12); analogWrite(CHGLED, 1.63); delay(12); analogWrite(CHGLED, 1.85); delay(12); analogWrite(CHGLED, 2.12); delay(12); analogWrite(CHGLED, 2.40); delay(12); analogWrite(CHGLED, 2.67); delay(12); analogWrite(CHGLED, 2.99); delay(12); analogWrite(CHGLED, 3.30); delay(12); analogWrite(CHGLED, 3.65); delay(12); analogWrite(CHGLED, 4.00); delay(12); analogWrite(CHGLED, 4.39); delay(12); analogWrite(CHGLED, 4.77); delay(12); analogWrite(CHGLED, 5.16); delay(12); analogWrite(CHGLED, 5.65); delay(12); analogWrite(CHGLED, 6.08); delay(12); analogWrite(CHGLED, 6.54); delay(12); analogWrite(CHGLED, 7.01); delay(12); analogWrite(CHGLED, 7.54); delay(12); analogWrite(CHGLED, 8.10); delay(12); analogWrite(CHGLED, 8.63); delay(12); analogWrite(CHGLED, 9.23); delay(12); analogWrite(CHGLED, 9.80); delay(12); analogWrite(CHGLED, 10.45); delay(12); analogWrite(CHGLED, 11.23); delay(12); analogWrite(CHGLED, 11.98); delay(12); analogWrite(CHGLED, 12.76); delay(12); analogWrite(CHGLED, 13.70); delay(12); analogWrite(CHGLED, 14.55); delay(12); analogWrite(CHGLED, 15.43); delay(12); analogWrite(CHGLED, 16.41); delay(12); analogWrite(CHGLED, 17.43); delay(12); analogWrite(CHGLED, 18.42); delay(12); analogWrite(CHGLED, 19.52); delay(12); analogWrite(CHGLED, 20.58); delay(12); analogWrite(CHGLED, 21.75); delay(12); analogWrite(CHGLED, 22.97); delay(12); analogWrite(CHGLED, 24.15); delay(12); analogWrite(CHGLED, 25.36); delay(12); analogWrite(CHGLED, 26.80); delay(12); analogWrite(CHGLED, 28.10); delay(12); analogWrite(CHGLED, 29.44); delay(12); analogWrite(CHGLED, 30.92); delay(12); analogWrite(CHGLED, 32.45); delay(12); analogWrite(CHGLED, 33.93); delay(12); analogWrite(CHGLED, 35.56); delay(12); analogWrite(CHGLED, 37.12); delay(12); analogWrite(CHGLED, 38.85); delay(12); analogWrite(CHGLED, 40.63); delay(12); analogWrite(CHGLED, 42.35); delay(12); analogWrite(CHGLED, 44.11); delay(12); analogWrite(CHGLED, 46.18); delay(12); analogWrite(CHGLED, 48.04); delay(12); analogWrite(CHGLED, 49.95); delay(12); analogWrite(CHGLED, 52.06); delay(12); analogWrite(CHGLED, 54.22); delay(12); analogWrite(CHGLED, 56.44); delay(12); analogWrite(CHGLED, 58.57); delay(12); analogWrite(CHGLED, 60.75); delay(12); analogWrite(CHGLED, 63.30); delay(12); analogWrite(CHGLED, 65.59); delay(12); analogWrite(CHGLED, 67.93); delay(12); analogWrite(CHGLED, 70.50); delay(12); analogWrite(CHGLED, 73.12); delay(12); analogWrite(CHGLED, 75.63); delay(12); analogWrite(CHGLED, 78.37); delay(12); analogWrite(CHGLED, 80.98); delay(12); analogWrite(CHGLED, 83.84); delay(12); analogWrite(CHGLED, 86.75); delay(12); analogWrite(CHGLED, 89.52); delay(12); analogWrite(CHGLED, 92.35); delay(12); analogWrite(CHGLED, 95.63); delay(12); analogWrite(CHGLED, 98.55); delay(12); analogWrite(CHGLED, 101.52); delay(12); analogWrite(CHGLED, 105.41); delay(12); analogWrite(CHGLED, 108.92); delay(12); analogWrite(CHGLED, 112.71); delay(12); analogWrite(CHGLED, 116.33); delay(12); analogWrite(CHGLED, 120.23); delay(12); analogWrite(CHGLED, 124.19); delay(12); analogWrite(CHGLED, 127.95); delay(12); analogWrite(CHGLED, 131.99); delay(12); analogWrite(CHGLED, 136.08); delay(12); analogWrite(CHGLED, 139.95); delay(12); analogWrite(CHGLED, 144.09); delay(12); analogWrite(CHGLED, 148.26); delay(12); analogWrite(CHGLED, 152.20); delay(12); analogWrite(CHGLED, 156.40); delay(12); analogWrite(CHGLED, 160.60); delay(12); analogWrite(CHGLED, 164.81); delay(12); analogWrite(CHGLED, 168.76); delay(12); analogWrite(CHGLED, 172.70); delay(12); analogWrite(CHGLED, 177.11); delay(12); analogWrite(CHGLED, 181.01); delay(12); analogWrite(CHGLED, 185.11); delay(12); analogWrite(CHGLED, 189.17); delay(12); analogWrite(CHGLED, 192.94); delay(12); analogWrite(CHGLED, 196.89); delay(12); analogWrite(CHGLED, 200.55); delay(12); analogWrite(CHGLED, 204.59); delay(12); analogWrite(CHGLED, 208.10); delay(12); analogWrite(CHGLED, 211.52); delay(12); analogWrite(CHGLED, 215.27); delay(12); analogWrite(CHGLED, 218.50); delay(12); analogWrite(CHGLED, 221.63); delay(12); analogWrite(CHGLED, 224.83); delay(12); analogWrite(CHGLED, 227.90); delay(12); analogWrite(CHGLED, 230.83); delay(12); analogWrite(CHGLED, 233.46); delay(12); analogWrite(CHGLED, 236.10); delay(12); analogWrite(CHGLED, 238.58); delay(12); analogWrite(CHGLED, 240.76); delay(12); analogWrite(CHGLED, 242.90); delay(12); analogWrite(CHGLED, 244.87); delay(12); analogWrite(CHGLED, 246.56); delay(12); analogWrite(CHGLED, 248.17); delay(12); analogWrite(CHGLED, 249.58); delay(12); analogWrite(CHGLED, 250.80); delay(12); analogWrite(CHGLED, 251.76); delay(12); analogWrite(CHGLED, 252.59); delay(12); analogWrite(CHGLED, 253.21); delay(12); analogWrite(CHGLED, 253.60); delay(12); analogWrite(CHGLED, 253.81); delay(12); analogWrite(CHGLED, 253.8); delay(12); analogWrite(CHGLED, 253.08); delay(12); analogWrite(CHGLED, 253.54); delay(12); analogWrite(CHGLED, 253.79); delay(12); analogWrite(CHGLED, 253.84); delay(12); analogWrite(CHGLED, 253.68); delay(12); analogWrite(CHGLED, 253.32); delay(12); analogWrite(CHGLED, 252.79); delay(12); analogWrite(CHGLED, 252.03); delay(12); analogWrite(CHGLED, 251.06); delay(12); analogWrite(CHGLED, 249.96); delay(12); analogWrite(CHGLED, 248.60); delay(12); analogWrite(CHGLED, 247.05); delay(12); analogWrite(CHGLED, 245.31); delay(12); analogWrite(CHGLED, 243.50); delay(12); analogWrite(CHGLED, 241.53); delay(12); analogWrite(CHGLED, 239.14); delay(12); analogWrite(CHGLED, 236.84); delay(12); analogWrite(CHGLED, 234.25); delay(12); analogWrite(CHGLED, 231.50); delay(12); analogWrite(CHGLED, 228.78); delay(12); analogWrite(CHGLED, 225.75); delay(12); analogWrite(CHGLED, 222.77); delay(12); analogWrite(CHGLED, 219.49); delay(12); analogWrite(CHGLED, 216.09); delay(12); analogWrite(CHGLED, 212.78); delay(12); analogWrite(CHGLED, 208.96); delay(12); analogWrite(CHGLED, 205.47); delay(12); analogWrite(CHGLED, 201.91); delay(12); analogWrite(CHGLED, 197.81); delay(12); analogWrite(CHGLED, 194.11); delay(12); analogWrite(CHGLED, 190.12); delay(12); analogWrite(CHGLED, 186.31); delay(12); analogWrite(CHGLED, 182.22); delay(12); analogWrite(CHGLED, 178.09); delay(12); analogWrite(CHGLED, 174.17); delay(12); analogWrite(CHGLED, 169.75); delay(12); analogWrite(CHGLED, 165.80); delay(12); analogWrite(CHGLED, 161.84); delay(12); analogWrite(CHGLED, 157.64); delay(12); analogWrite(CHGLED, 153.43); delay(12); analogWrite(CHGLED, 149.24); delay(12); analogWrite(CHGLED, 145.32); delay(12); analogWrite(CHGLED, 141.16); delay(12); analogWrite(CHGLED, 137.04); delay(12); analogWrite(CHGLED, 133.19); delay(12); analogWrite(CHGLED, 129.37); delay(12); analogWrite(CHGLED, 125.12); delay(12); analogWrite(CHGLED, 121.39); delay(12); analogWrite(CHGLED, 117.47); delay(12); analogWrite(CHGLED, 113.61); delay(12); analogWrite(CHGLED, 110.03); delay(12); analogWrite(CHGLED, 106.28); delay(12); analogWrite(CHGLED, 102.81); delay(12); analogWrite(CHGLED, 98.97); delay(12); analogWrite(CHGLED, 96.04); delay(12); analogWrite(CHGLED, 93.16); delay(12); analogWrite(CHGLED, 89.92); delay(12); analogWrite(CHGLED, 87.15); delay(12); analogWrite(CHGLED, 84.42); delay(12); analogWrite(CHGLED, 81.55); delay(12); analogWrite(CHGLED, 78.74); delay(12); analogWrite(CHGLED, 76.17); delay(12); analogWrite(CHGLED, 73.48); delay(12); analogWrite(CHGLED, 71.02); delay(12); analogWrite(CHGLED, 68.44); delay(12); analogWrite(CHGLED, 65.92); delay(12); analogWrite(CHGLED, 63.62); delay(12); analogWrite(CHGLED, 61.38); delay(12); analogWrite(CHGLED, 58.88); delay(12); analogWrite(CHGLED, 56.74); delay(12); analogWrite(CHGLED, 54.66); delay(12); analogWrite(CHGLED, 52.49); delay(12); analogWrite(CHGLED, 50.37); delay(12); analogWrite(CHGLED, 48.45); delay(12); analogWrite(CHGLED, 46.44); delay(12); analogWrite(CHGLED, 44.62); delay(12); analogWrite(CHGLED, 42.72); delay(12); analogWrite(CHGLED, 40.88); delay(12); analogWrite(CHGLED, 39.20); delay(12); analogWrite(CHGLED, 37.58); delay(12); analogWrite(CHGLED, 35.78); delay(12); analogWrite(CHGLED, 34.25); delay(12); analogWrite(CHGLED, 32.66); delay(12); analogWrite(CHGLED, 31.22); delay(12); analogWrite(CHGLED, 29.73); delay(12); analogWrite(CHGLED, 28.29); delay(12); analogWrite(CHGLED, 26.98); delay(12); analogWrite(CHGLED, 25.71); delay(12); analogWrite(CHGLED, 24.32); delay(12); analogWrite(CHGLED, 23.14); delay(12); analogWrite(CHGLED, 21.99); delay(12); analogWrite(CHGLED, 20.81); delay(12); analogWrite(CHGLED, 19.66); delay(12); analogWrite(CHGLED, 18.64); delay(12); analogWrite(CHGLED, 17.57); delay(12); analogWrite(CHGLED, 16.61); delay(12); analogWrite(CHGLED, 15.62); delay(12); analogWrite(CHGLED, 14.67); delay(12); analogWrite(CHGLED, 13.82); delay(12); analogWrite(CHGLED, 12.99); delay(12); analogWrite(CHGLED, 12.09); delay(12); analogWrite(CHGLED, 11.33); delay(12); analogWrite(CHGLED, 10.60); delay(12); analogWrite(CHGLED, 9.85); delay(12); analogWrite(CHGLED, 9.23); delay(12); analogWrite(CHGLED, 8.68); delay(12); analogWrite(CHGLED, 8.10); delay(12); analogWrite(CHGLED, 7.58); delay(12); analogWrite(CHGLED, 7.09); delay(12); analogWrite(CHGLED, 6.58); delay(12); analogWrite(CHGLED, 6.08); delay(12); analogWrite(CHGLED, 5.65); delay(12); analogWrite(CHGLED, 5.23); delay(12); analogWrite(CHGLED, 4.77); delay(12); analogWrite(CHGLED, 4.39); delay(12); analogWrite(CHGLED, 4.03); delay(12); analogWrite(CHGLED, 3.65); delay(12); analogWrite(CHGLED, 3.33); delay(12); analogWrite(CHGLED, 2.99); delay(12); analogWrite(CHGLED, 2.70); delay(12); analogWrite(CHGLED, 2.40); delay(12); analogWrite(CHGLED, 2.14); delay(12); analogWrite(CHGLED, 1.87); delay(12); analogWrite(CHGLED, 1.63); delay(12); analogWrite(CHGLED, 1.42); delay(12); analogWrite(CHGLED, 1.22); delay(12); analogWrite(CHGLED, 1.04); delay(12); analogWrite(CHGLED, 0.85); delay(12); analogWrite(CHGLED, 0.70); delay(12); analogWrite(CHGLED, 0.56); delay(12); analogWrite(CHGLED, 0.43); delay(12); analogWrite(CHGLED, 0.33); delay(12); analogWrite(CHGLED, 0.23); delay(12); analogWrite(CHGLED, 0.15); delay(12); analogWrite(CHGLED, 0.09); delay(12); analogWrite(CHGLED, 0.05); delay(12); analogWrite(CHGLED, 0.02); delay(12); } void DidActionTakePlace() { buttonPState = digitalRead(PWRBTN); if(buttonPState == LOW){ delay(100); if(buttonPState == LOW){ if(IsPowerOn == 0){TurnOn();} else{TurnOff();} } } buttonCState = digitalRead(CHGBTN); if(buttonCState == LOW){ DisplayBattTings();} } void TurnOn() { BlinkPow(); digitalWrite(PWRMFT, HIGH); IsPowerOn = 1; } void TurnOff() { BlinkPow(); digitalWrite(PWRMFT, LOW); IsPowerOn = 0; } void DisplayBattTings() { BlinkChg(); GetVoltage(); if(IsPowerOn == 0){CapAtOff();} else{CapAtOn();} } void CapAtOff () { if(voltage > 3.60){digitalWrite(LED1, HIGH); delay(500);} if(voltage > 3.70){digitalWrite(LED2, HIGH); delay(500);} if(voltage > 3.75){digitalWrite(LED3, HIGH); delay(500);} if(voltage > 3.85){digitalWrite(LED4, HIGH); delay(500);} if(voltage > 4.10){digitalWrite(LED5, HIGH); delay(500);} if(voltage < 3.25){ for (int i = 0; i < 11; i++) { digitalWrite(LED1, HIGH); delay(200); digitalWrite(LED1, LOW); delay(200); } } delay(5000); digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW); } void CapAtOn () { if(voltage > 3.40){digitalWrite(LED1, HIGH); delay(500);} if(voltage > 3.60){digitalWrite(LED2, HIGH); delay(500);} if(voltage > 3.65){digitalWrite(LED3, HIGH); delay(500);} if(voltage > 3.75){digitalWrite(LED4, HIGH); delay(500);} if(voltage > 4.00){digitalWrite(LED5, HIGH); delay(500);} if(voltage < 3.25){ for (int i = 0; i < 11; i++) { digitalWrite(LED1, HIGH); delay(200); digitalWrite(LED1, LOW); delay(200); } } delay(5000); digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW); } void CapAtCharge(){ delay(500); if(voltage >= 4.185){digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW);} if(voltage < 4.185){ if(voltage > 3.40){digitalWrite(LED1, HIGH); delay(500);} if(voltage > 3.60){digitalWrite(LED2, HIGH); delay(500);} if(voltage > 3.70){digitalWrite(LED3, HIGH); delay(500);} if(voltage > 4.00){digitalWrite(LED4, HIGH); delay(500);} if(voltage > 4.17){digitalWrite(LED5, HIGH); delay(500);} delay(500); digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW);} } void ChechChg(){ if((analogRead(IN1) > 700) || (analogRead(IN2) > 700)){ isCharging = 1; GetVoltage(); CapAtCharge(); } if((analogRead(IN1) < 700) && (analogRead(IN2) < 700)){ isCharging = 0; digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW); } } void CheckVoltage(){ GetVoltage(); if(voltage < 3.20){ delay(50); if(voltage < 3.20){ digitalWrite(LED1, HIGH);digitalWrite(LED2, HIGH);digitalWrite(LED3, HIGH);digitalWrite(LED4, HIGH);digitalWrite(LED5, HIGH); delay(5000); digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW); TurnOff(); } } } void GetVoltage(){ for (int q = 0; q < 10; q++) { countVal = countVal + analogRead(VIN); delay(5); } sensorVal = countVal / 10; voltage = sensorVal * (5.10 / 1023.0); countVal = 0; }