#include "LowPower.h" #include #define PWRLED 5 #define CHGLED 6 #define PWRBTN 8 #define CHGBTN 9 #define PWRMFT 11 #define VUSBC A0 #define VLTNG A1 boolean powerOn = 0; boolean charging = 0; void setup(){ //wdt_enable(WDTO_8S); pinMode(PWRLED, OUTPUT); pinMode(CHGLED, OUTPUT); pinMode(PWRBTN, INPUT_PULLUP); pinMode(CHGBTN, INPUT_PULLUP); pinMode(PWRMFT, OUTPUT); digitalWrite (PWRMFT, LOW); pinMode(VUSBC, INPUT); pinMode(VLTNG, INPUT); } void loop(){ if(digitalRead(PWRBTN) == LOW){ delay(100); if(buttonPState == LOW){ if(IsPowerOn == 0){pulseLed(PWRBTN); TurnOn();} else{pulseLed(PWRBTN) TurnOff();} } } if(digitalRead(CHGBTN) == LOW){ pulseLed(CHGBTN); UserInterface();} } void TurnOn() { BlinkPow(); digitalWrite(PWRMFT, HIGH); powerOn = 1; } void TurnOff() { BlinkPow(); digitalWrite(PWRMFT, LOW); powerOn = 0; } void pulseLed(object){ delay(200); analogWrite(object, 0.00); delay(12);analogWrite(object, 0.00); delay(12);analogWrite(object, 0.02); delay(12); analogWrite(object, 0.05); delay(12);analogWrite(object, 0.09); delay(12);analogWrite(object, 0.15); delay(12); analogWrite(object, 0.23); delay(12);analogWrite(object, 0.32); delay(12);analogWrite(object, 0.43); delay(12); analogWrite(object, 0.55); delay(12);analogWrite(object, 0.70); delay(12);analogWrite(object, 0.85); delay(12); analogWrite(object, 1.01); delay(12);analogWrite(object, 1.20); delay(12);analogWrite(object, 1.42); delay(12); analogWrite(object, 1.63); delay(12);analogWrite(object, 1.85); delay(12);analogWrite(object, 2.12); delay(12); analogWrite(object, 2.40); delay(12);analogWrite(object, 2.67); delay(12);analogWrite(object, 2.99); delay(12); analogWrite(object, 3.30); delay(12);analogWrite(object, 3.65); delay(12);analogWrite(object, 4.00); delay(12); analogWrite(object, 4.39); delay(12);analogWrite(object, 4.77); delay(12);analogWrite(object, 5.16); delay(12); analogWrite(object, 5.65); delay(12);analogWrite(object, 6.08); delay(12);analogWrite(object, 6.54); delay(12); analogWrite(object, 7.01); delay(12);analogWrite(object, 7.54); delay(12);analogWrite(object, 8.10); delay(12); analogWrite(object, 8.63); delay(12);analogWrite(object, 9.23); delay(12);analogWrite(object, 9.80); delay(12); analogWrite(object, 10.45); delay(12);analogWrite(object, 11.23); delay(12);analogWrite(object, 11.98); delay(12); analogWrite(object, 12.76); delay(12);analogWrite(object, 13.70); delay(12);analogWrite(object, 14.55); delay(12); analogWrite(object, 15.43); delay(12);analogWrite(object, 16.41); delay(12);analogWrite(object, 17.43); delay(12); analogWrite(object, 18.42); delay(12);analogWrite(object, 19.52); delay(12);analogWrite(object, 20.58); delay(12); analogWrite(object, 21.75); delay(12);analogWrite(object, 22.97); delay(12);analogWrite(object, 24.15); delay(12); analogWrite(object, 25.36); delay(12);analogWrite(object, 26.80); delay(12);analogWrite(object, 28.10); delay(12); analogWrite(object, 29.44); delay(12);analogWrite(object, 30.92); delay(12);analogWrite(object, 32.45); delay(12); analogWrite(object, 33.93); delay(12);analogWrite(object, 35.56); delay(12);analogWrite(object, 37.12); delay(12); analogWrite(object, 38.85); delay(12);analogWrite(object, 40.63); delay(12);analogWrite(object, 42.35); delay(12); analogWrite(object, 44.11); delay(12);analogWrite(object, 46.18); delay(12);analogWrite(object, 48.04); delay(12); analogWrite(object, 49.95); delay(12);analogWrite(object, 52.06); delay(12);analogWrite(object, 54.22); delay(12); analogWrite(object, 56.44); delay(12);analogWrite(object, 58.57); delay(12);analogWrite(object, 60.75); delay(12); analogWrite(object, 63.30); delay(12);analogWrite(object, 65.59); delay(12);analogWrite(object, 67.93); delay(12); analogWrite(object, 70.50); delay(12);analogWrite(object, 73.12); delay(12);analogWrite(object, 75.63); delay(12); analogWrite(object, 78.37); delay(12);analogWrite(object, 80.98); delay(12);analogWrite(object, 83.84); delay(12); analogWrite(object, 86.75); delay(12);analogWrite(object, 89.52); delay(12);analogWrite(object, 92.35); delay(12); analogWrite(object, 95.63); delay(12);analogWrite(object, 98.55); delay(12);analogWrite(object, 101.52); delay(12); analogWrite(object, 105.41); delay(12);analogWrite(object, 108.92); delay(12);analogWrite(object, 112.71); delay(12); analogWrite(object, 116.33); delay(12);analogWrite(object, 120.23); delay(12);analogWrite(object, 124.19); delay(12); analogWrite(object, 127.95); delay(12);analogWrite(object, 131.99); delay(12);analogWrite(object, 136.08); delay(12); analogWrite(object, 139.95); delay(12);analogWrite(object, 144.09); delay(12);analogWrite(object, 148.26); delay(12); analogWrite(object, 152.20); delay(12);analogWrite(object, 156.40); delay(12);analogWrite(object, 160.60); delay(12); analogWrite(object, 164.81); delay(12);analogWrite(object, 168.76); delay(12);analogWrite(object, 172.70); delay(12); analogWrite(object, 177.11); delay(12);analogWrite(object, 181.01); delay(12);analogWrite(object, 185.11); delay(12); analogWrite(object, 189.17); delay(12);analogWrite(object, 192.94); delay(12);analogWrite(object, 196.89); delay(12); analogWrite(object, 200.55); delay(12);analogWrite(object, 204.59); delay(12);analogWrite(object, 208.10); delay(12); analogWrite(object, 211.52); delay(12);analogWrite(object, 215.27); delay(12);analogWrite(object, 218.50); delay(12); analogWrite(object, 221.63); delay(12);analogWrite(object, 224.83); delay(12);analogWrite(object, 227.90); delay(12); analogWrite(object, 230.83); delay(12);analogWrite(object, 233.46); delay(12);analogWrite(object, 236.10); delay(12); analogWrite(object, 238.58); delay(12);analogWrite(object, 240.76); delay(12);analogWrite(object, 242.90); delay(12); analogWrite(object, 244.87); delay(12);analogWrite(object, 246.56); delay(12);analogWrite(object, 248.17); delay(12); analogWrite(object, 249.58); delay(12);analogWrite(object, 250.80); delay(12);analogWrite(object, 251.76); delay(12); analogWrite(object, 252.59); delay(12);analogWrite(object, 253.21); delay(12);analogWrite(object, 253.60); delay(12); analogWrite(object, 253.81); delay(12);analogWrite(object, 253.80); delay(12);analogWrite(object, 253.08); delay(12); analogWrite(object, 253.54); delay(12);analogWrite(object, 253.79); delay(12);analogWrite(object, 253.84); delay(12); analogWrite(object, 253.68); delay(12);analogWrite(object, 253.32); delay(12);analogWrite(object, 252.79); delay(12); analogWrite(object, 252.03); delay(12);analogWrite(object, 251.06); delay(12);analogWrite(object, 249.96); delay(12); analogWrite(object, 248.60); delay(12);analogWrite(object, 247.05); delay(12);analogWrite(object, 245.31); delay(12); analogWrite(object, 243.50); delay(12);analogWrite(object, 241.53); delay(12);analogWrite(object, 239.14); delay(12); analogWrite(object, 236.84); delay(12);analogWrite(object, 234.25); delay(12);analogWrite(object, 231.50); delay(12); analogWrite(object, 228.78); delay(12);analogWrite(object, 225.75); delay(12);analogWrite(object, 222.77); delay(12); analogWrite(object, 219.49); delay(12);analogWrite(object, 216.09); delay(12);analogWrite(object, 212.78); delay(12); analogWrite(object, 208.96); delay(12);analogWrite(object, 205.47); delay(12);analogWrite(object, 201.91); delay(12); analogWrite(object, 197.81); delay(12);analogWrite(object, 194.11); delay(12);analogWrite(object, 190.12); delay(12); analogWrite(object, 186.31); delay(12);analogWrite(object, 182.22); delay(12);analogWrite(object, 178.09); delay(12); analogWrite(object, 174.17); delay(12);analogWrite(object, 169.75); delay(12);analogWrite(object, 165.80); delay(12); analogWrite(object, 161.84); delay(12);analogWrite(object, 157.64); delay(12);analogWrite(object, 153.43); delay(12); analogWrite(object, 149.24); delay(12);analogWrite(object, 145.32); delay(12);analogWrite(object, 141.16); delay(12); analogWrite(object, 137.04); delay(12);analogWrite(object, 133.19); delay(12);analogWrite(object, 129.37); delay(12); analogWrite(object, 125.12); delay(12);analogWrite(object, 121.39); delay(12);analogWrite(object, 117.47); delay(12); analogWrite(object, 113.61); delay(12);analogWrite(object, 110.03); delay(12);analogWrite(object, 106.28); delay(12); analogWrite(object, 102.81); delay(12);analogWrite(object, 98.97); delay(12);analogWrite(object, 96.04); delay(12); analogWrite(object, 93.16); delay(12);analogWrite(object, 89.92); delay(12);analogWrite(object, 87.15); delay(12); analogWrite(object, 84.42); delay(12);analogWrite(object, 81.55); delay(12);analogWrite(object, 78.74); delay(12); analogWrite(object, 76.17); delay(12);analogWrite(object, 73.48); delay(12);analogWrite(object, 71.02); delay(12); analogWrite(object, 68.44); delay(12);analogWrite(object, 65.92); delay(12);analogWrite(object, 63.62); delay(12); analogWrite(object, 61.38); delay(12);analogWrite(object, 58.88); delay(12);analogWrite(object, 56.74); delay(12); analogWrite(object, 54.66); delay(12);analogWrite(object, 52.49); delay(12);analogWrite(object, 50.37); delay(12); analogWrite(object, 48.45); delay(12);analogWrite(object, 46.44); delay(12);analogWrite(object, 44.62); delay(12); analogWrite(object, 42.72); delay(12);analogWrite(object, 40.88); delay(12);analogWrite(object, 39.20); delay(12); analogWrite(object, 37.58); delay(12);analogWrite(object, 35.78); delay(12);analogWrite(object, 34.25); delay(12); analogWrite(object, 32.66); delay(12);analogWrite(object, 31.22); delay(12);analogWrite(object, 29.73); delay(12); analogWrite(object, 28.29); delay(12);analogWrite(object, 26.98); delay(12);analogWrite(object, 25.71); delay(12); analogWrite(object, 24.32); delay(12);analogWrite(object, 23.14); delay(12);analogWrite(object, 21.99); delay(12); analogWrite(object, 20.81); delay(12);analogWrite(object, 19.66); delay(12);analogWrite(object, 18.64); delay(12); analogWrite(object, 17.57); delay(12);analogWrite(object, 16.61); delay(12);analogWrite(object, 15.62); delay(12); analogWrite(object, 14.67); delay(12);analogWrite(object, 13.82); delay(12);analogWrite(object, 12.99); delay(12); analogWrite(object, 12.09); delay(12);analogWrite(object, 11.33); delay(12);analogWrite(object, 10.60); delay(12); analogWrite(object, 9.85); delay(12);analogWrite(object, 9.23); delay(12);analogWrite(object, 8.68); delay(12); analogWrite(object, 8.10); delay(12);analogWrite(object, 7.58); delay(12);analogWrite(object, 7.09); delay(12); analogWrite(object, 6.58); delay(12);analogWrite(object, 6.08); delay(12);analogWrite(object, 5.65); delay(12); analogWrite(object, 5.23); delay(12);analogWrite(object, 4.77); delay(12);analogWrite(object, 4.39); delay(12); analogWrite(object, 4.03); delay(12);analogWrite(object, 3.65); delay(12);analogWrite(object, 3.33); delay(12); analogWrite(object, 2.99); delay(12);analogWrite(object, 2.70); delay(12);analogWrite(object, 2.40); delay(12); analogWrite(object, 2.14); delay(12);analogWrite(object, 1.87); delay(12);analogWrite(object, 1.63); delay(12); analogWrite(object, 1.42); delay(12);analogWrite(object, 1.22); delay(12);analogWrite(object, 1.04); delay(12); analogWrite(object, 0.85); delay(12);analogWrite(object, 0.70); delay(12);analogWrite(object, 0.56); delay(12); analogWrite(object, 0.43); delay(12);analogWrite(object, 0.33); delay(12);analogWrite(object, 0.23); delay(12); analogWrite(object, 0.15); delay(12);analogWrite(object, 0.09); delay(12);analogWrite(object, 0.05); delay(12); analogWrite(object, 0.02); delay(12); }