Initial Commit

This commit is contained in:
Max Hunt 2018-10-05 13:22:45 +01:00
parent f67392a6e7
commit fedf4c7681
34 changed files with 2283 additions and 0 deletions

BIN
IMAGES/1.pdf Executable file

Binary file not shown.

BIN
IMAGES/2.pdf Executable file

Binary file not shown.

BIN
IMAGES/2024950802.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
IMAGES/3699147681.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
IMAGES/598883065.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
IMAGES/91017.pdf Executable file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

BIN
IMAGES/IMG_0243.PNG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 KiB

BIN
IMAGES/IMG_0244.PNG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
IMAGES/IMG_0245.PNG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
IMAGES/IMG_0246.PNG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

BIN
IMAGES/IMG_0247.PNG Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 KiB

BIN
IMAGES/IMG_8CC9B19A5F6B-1.jpeg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
IMAGES/Li_Ion_DiscGph.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

BIN
IMAGES/Watchdog20110611.pdf Normal file

Binary file not shown.

BIN
IMAGES/nano.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
IMAGES/s-l1600.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
IMAGES/s-l16002.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
IMAGES/s-l16003.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

64
List of parts + price.rtf Executable file
View File

@ -0,0 +1,64 @@
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf830
{\fonttbl\f0\fnil\fcharset0 Copperplate;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww14620\viewh11880\viewkind0
\pard\tx720\tx1440\tx2160\tx2891\tx3600\tx4320\tx5040\tx5760\tx6324\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs28 \cf0 PowerBoost 1*6
\fs20
\fs28 = 6\'80\
Lightning 3.5 2.9*3
\fs20
\fs28 =
\fs30
\fs28 8.7\'80\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\cf0 Acrylic 7.7*2 = 15.4\'80\
Batteries 10.1*8 = 80.8\'80\
Chargers 1.3*1
\fs20
\fs28 =
\fs18
\fs28 1.3\'80\
USB C 1.8*1 =
\fs20
\fs28 1.8\'80\
Micro Usb Free
\fs24
\fs28 = 0\'80\
\strike \strikec0 USB A 2.9*2 = 5.8\'80\strike0\striked0 \
Arduino 2.1*1 = 2.1\'80\
LED 0.8*3
\fs26
\fs28 =
\fs24
\fs28 2.4\'80\
Buttons 4.35*2 =
\fs22
\fs28 8.7\'80\
Ard Boost 0.86*2
\fs26
\fs28 =
\fs24
\fs28 1.8\'80\
MOSFET 5.9*1
\fs22
\fs28 =
\fs24
\fs28 5.9\'80\
Retractable 1.4*1 = 1.4\'80\
Shipping
\fs22
\fs28 = 22.7\'80\
TOTAL = 159\'80\
\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\'96\
\
Peltiers 1*7.3 = 7.3\'80\
Cooler 2*7.2 =14.4\'80\
TOTAL =21.7\'80\
\
Ruler = 1.2\'80\
\
\b \outl\strokewidth60 ================== 181.9\'80 =. 180.5\'80}

BIN
Low-Power-master.zip Normal file

Binary file not shown.

View File

@ -0,0 +1,713 @@
#include "LowPower.h"
#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++;
if (isCharging == 0 && IsPowerOn == 0){
LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
}
//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;
}

79
firmware/Debug/Debug.ino Normal file
View File

@ -0,0 +1,79 @@
#include "LowPower.h"
//#include <avr/wdt.h>
#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() {
// wdt_enable(WDTO_8S);
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(9600);
}
void loop() {
Serial.println("PWRBTN OFF?: " && digitalRead(PWRBTN));
Serial.println();
Serial.println("CHGBTN OFF?: " && digitalRead(CHGBTN));
Serial.println();
delay(100);
analogWrite(PWRLED, 201.91); delay(500);
analogWrite(PWRLED, 0); delay(500);
analogWrite(CHGLED, 201.91); delay(500);
analogWrite(CHGLED, 0); delay(500);
GetVoltage();
Serial.println(voltage);
delay(500);
digitalWrite(LED1, HIGH); delay(500);
digitalWrite(LED2, HIGH); delay(500);
digitalWrite(LED3, HIGH); delay(500);
digitalWrite(LED4, HIGH); delay(500);
digitalWrite(LED5, HIGH); delay(500);
digitalWrite(LED1, LOW);digitalWrite(LED2, LOW);digitalWrite(LED3, LOW);digitalWrite(LED4, LOW);digitalWrite(LED5, LOW);
}
void GetVoltage(){
for (int q = 0; q < 10; q++) {
countVal = countVal + analogRead(VIN);
delay(5);
}
sensorVal = countVal / 10;
voltage = sensorVal * (5.0 / 1023.0);
countVal = 0;
}

View File

@ -0,0 +1,720 @@
#include "LowPower.h"
#include <avr/wdt.h>
#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() {
wdt_enable(WDTO_8S);
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(9600);
}
void loop() {
DidActionTakePlace();
ChechChg();
if (i>5000 && IsPowerOn == 1){
CheckVoltage();}
i++;
if (isCharging == 0 && IsPowerOn == 0){
LowPower.powerDown(SLEEP_2S, ADC_OFF, BOD_OFF);
}
wdt_reset();
//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);
wdt_reset();
}
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);
wdt_reset();
}
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;
}

View File

@ -0,0 +1,707 @@
#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;
}