project_power-bank/UPGRADE/Code/v2/v2.ino
2019-12-18 00:21:04 +00:00

423 lines
18 KiB
C++

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "LowPower.h"
#include <avr/wdt.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define PWRBTN 3
#define CHGBTN 4
#define PWRLED 5
#define CHGLED 6
#define VBAT A0
#define FETCTRL 2
#define CSTAT1 A1
#define CSTAT2 A2
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int batteryPct = 0;
double battVoltage = 0.0;
int rawBattVal = 0;
bool powerState = false;
static const unsigned char PROGMEM logo_bmp[] =
{ B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B01111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B10000000, B00000000,
B00000001, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000, B00000000,
B00000011, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000, B00000000,
B00000011, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111110, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B10000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B10000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B10000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111110, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11110000, B00000000,
B00000111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000011, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000001, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11100000, B00000000,
B00000000, B01111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11111111, B11000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000,
B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000};
void setup() {
delay(100);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
Serial.begin(9600);
pinMode(VBAT, INPUT);
pinMode(CSTAT1, INPUT_PULLUP);
pinMode(CSTAT2, INPUT_PULLUP);
pinMode(FETCTRL, OUTPUT);
pinMode(PWRLED, OUTPUT);
pinMode(CHGLED, OUTPUT);
pinMode(PWRBTN, INPUT_PULLUP);
pinMode(CHGBTN, INPUT_PULLUP);
digitalWrite(FETCTRL, LOW);
initScreen();
delay(200);
}
void loop() {
delay(100);
getBatteryState();
updateDisplay();
checkEvents();
}
void getBatteryState(){
rawBattVal = analogRead(VBAT);
battVoltage = rawBattVal * (5.0 / 1023.0);
}
void checkEvents(){
if (digitalRead(PWRBTN) == 0) {
delay(100);
if (digitalRead(PWRBTN) == 0) {
blinkLed(PWRLED);
if(powerState == true){
turnOff();
}
else {
turnOff();
}
}
}
if (digitalRead(CHGBTN) == 0) {
delay(100);
if (digitalRead(CHGBTN) == 0) {
blinkLed(CHGLED);
}
}
}
void turnOn() {
digitalWrite(FETCTRL, HIGH);
powerState = true;
}
void turnOff() {
digitalWrite(FETCTRL, LOW);
powerState = false;
}
void initScreen() {
display.clearDisplay();
display.display();
}
void updateDisplay(){
// display.drawBitmap(0, 0, logo_bmp, 128, 32, WHITE);
display.clearDisplay();
display.drawBitmap(0, 0, logo_bmp, 128, 32, 1);
display.setTextSize(2);
display.setCursor(40, 11);
display.setTextColor(0);
display.print(battVoltage);
display.println(" V");
display.display();
}
void blinkLed(int ctrlLed) {
analogWrite(ctrlLed, 0.00); delay(12);
analogWrite(ctrlLed, 0.00); delay(12);
analogWrite(ctrlLed, 0.02); delay(12);
analogWrite(ctrlLed, 0.05); delay(12);
analogWrite(ctrlLed, 0.09); delay(12);
analogWrite(ctrlLed, 0.15); delay(12);
analogWrite(ctrlLed, 0.23); delay(12);
analogWrite(ctrlLed, 0.32); delay(12);
analogWrite(ctrlLed, 0.43); delay(12);
analogWrite(ctrlLed, 0.55); delay(12);
analogWrite(ctrlLed, 0.70); delay(12);
analogWrite(ctrlLed, 0.85); delay(12);
analogWrite(ctrlLed, 1.01); delay(12);
analogWrite(ctrlLed, 1.20); delay(12);
analogWrite(ctrlLed, 1.42); delay(12);
analogWrite(ctrlLed, 1.63); delay(12);
analogWrite(ctrlLed, 1.85); delay(12);
analogWrite(ctrlLed, 2.12); delay(12);
analogWrite(ctrlLed, 2.40); delay(12);
analogWrite(ctrlLed, 2.67); delay(12);
analogWrite(ctrlLed, 2.99); delay(12);
analogWrite(ctrlLed, 3.30); delay(12);
analogWrite(ctrlLed, 3.65); delay(12);
analogWrite(ctrlLed, 4.00); delay(12);
analogWrite(ctrlLed, 4.39); delay(12);
analogWrite(ctrlLed, 4.77); delay(12);
analogWrite(ctrlLed, 5.16); delay(12);
analogWrite(ctrlLed, 5.65); delay(12);
analogWrite(ctrlLed, 6.08); delay(12);
analogWrite(ctrlLed, 6.54); delay(12);
analogWrite(ctrlLed, 7.01); delay(12);
analogWrite(ctrlLed, 7.54); delay(12);
analogWrite(ctrlLed, 8.10); delay(12);
analogWrite(ctrlLed, 8.63); delay(12);
analogWrite(ctrlLed, 9.23); delay(12);
analogWrite(ctrlLed, 9.80); delay(12);
analogWrite(ctrlLed, 10.45); delay(12);
analogWrite(ctrlLed, 11.23); delay(12);
analogWrite(ctrlLed, 11.98); delay(12);
analogWrite(ctrlLed, 12.76); delay(12);
analogWrite(ctrlLed, 13.70); delay(12);
analogWrite(ctrlLed, 14.55); delay(12);
analogWrite(ctrlLed, 15.43); delay(12);
analogWrite(ctrlLed, 16.41); delay(12);
analogWrite(ctrlLed, 17.43); delay(12);
analogWrite(ctrlLed, 18.42); delay(12);
analogWrite(ctrlLed, 19.52); delay(12);
analogWrite(ctrlLed, 20.58); delay(12);
analogWrite(ctrlLed, 21.75); delay(12);
analogWrite(ctrlLed, 22.97); delay(12);
analogWrite(ctrlLed, 24.15); delay(12);
analogWrite(ctrlLed, 25.36); delay(12);
analogWrite(ctrlLed, 26.80); delay(12);
analogWrite(ctrlLed, 28.10); delay(12);
analogWrite(ctrlLed, 29.44); delay(12);
analogWrite(ctrlLed, 30.92); delay(12);
analogWrite(ctrlLed, 32.45); delay(12);
analogWrite(ctrlLed, 33.93); delay(12);
analogWrite(ctrlLed, 35.56); delay(12);
analogWrite(ctrlLed, 37.12); delay(12);
analogWrite(ctrlLed, 38.85); delay(12);
analogWrite(ctrlLed, 40.63); delay(12);
analogWrite(ctrlLed, 42.35); delay(12);
analogWrite(ctrlLed, 44.11); delay(12);
analogWrite(ctrlLed, 46.18); delay(12);
analogWrite(ctrlLed, 48.04); delay(12);
analogWrite(ctrlLed, 49.95); delay(12);
analogWrite(ctrlLed, 52.06); delay(12);
analogWrite(ctrlLed, 54.22); delay(12);
analogWrite(ctrlLed, 56.44); delay(12);
analogWrite(ctrlLed, 58.57); delay(12);
analogWrite(ctrlLed, 60.75); delay(12);
analogWrite(ctrlLed, 63.30); delay(12);
analogWrite(ctrlLed, 65.59); delay(12);
analogWrite(ctrlLed, 67.93); delay(12);
analogWrite(ctrlLed, 70.50); delay(12);
analogWrite(ctrlLed, 73.12); delay(12);
analogWrite(ctrlLed, 75.63); delay(12);
analogWrite(ctrlLed, 78.37); delay(12);
analogWrite(ctrlLed, 80.98); delay(12);
analogWrite(ctrlLed, 83.84); delay(12);
analogWrite(ctrlLed, 86.75); delay(12);
analogWrite(ctrlLed, 89.52); delay(12);
analogWrite(ctrlLed, 92.35); delay(12);
analogWrite(ctrlLed, 95.63); delay(12);
analogWrite(ctrlLed, 98.55); delay(12);
analogWrite(ctrlLed, 101.52); delay(12);
analogWrite(ctrlLed, 105.41); delay(12);
analogWrite(ctrlLed, 108.92); delay(12);
analogWrite(ctrlLed, 112.71); delay(12);
analogWrite(ctrlLed, 116.33); delay(12);
analogWrite(ctrlLed, 120.23); delay(12);
analogWrite(ctrlLed, 124.19); delay(12);
analogWrite(ctrlLed, 127.95); delay(12);
analogWrite(ctrlLed, 131.99); delay(12);
analogWrite(ctrlLed, 136.08); delay(12);
analogWrite(ctrlLed, 139.95); delay(12);
analogWrite(ctrlLed, 144.09); delay(12);
analogWrite(ctrlLed, 148.26); delay(12);
analogWrite(ctrlLed, 152.20); delay(12);
analogWrite(ctrlLed, 156.40); delay(12);
analogWrite(ctrlLed, 160.60); delay(12);
analogWrite(ctrlLed, 164.81); delay(12);
analogWrite(ctrlLed, 168.76); delay(12);
analogWrite(ctrlLed, 172.70); delay(12);
analogWrite(ctrlLed, 177.11); delay(12);
analogWrite(ctrlLed, 181.01); delay(12);
analogWrite(ctrlLed, 185.11); delay(12);
analogWrite(ctrlLed, 189.17); delay(12);
analogWrite(ctrlLed, 192.94); delay(12);
analogWrite(ctrlLed, 196.89); delay(12);
analogWrite(ctrlLed, 200.55); delay(12);
analogWrite(ctrlLed, 204.59); delay(12);
analogWrite(ctrlLed, 208.10); delay(12);
analogWrite(ctrlLed, 211.52); delay(12);
analogWrite(ctrlLed, 215.27); delay(12);
analogWrite(ctrlLed, 218.50); delay(12);
analogWrite(ctrlLed, 221.63); delay(12);
analogWrite(ctrlLed, 224.83); delay(12);
analogWrite(ctrlLed, 227.90); delay(12);
analogWrite(ctrlLed, 230.83); delay(12);
analogWrite(ctrlLed, 233.46); delay(12);
analogWrite(ctrlLed, 236.10); delay(12);
analogWrite(ctrlLed, 238.58); delay(12);
analogWrite(ctrlLed, 240.76); delay(12);
analogWrite(ctrlLed, 242.90); delay(12);
analogWrite(ctrlLed, 244.87); delay(12);
analogWrite(ctrlLed, 246.56); delay(12);
analogWrite(ctrlLed, 248.17); delay(12);
analogWrite(ctrlLed, 249.58); delay(12);
analogWrite(ctrlLed, 250.80); delay(12);
analogWrite(ctrlLed, 251.76); delay(12);
analogWrite(ctrlLed, 252.59); delay(12);
analogWrite(ctrlLed, 253.21); delay(12);
analogWrite(ctrlLed, 253.60); delay(12);
analogWrite(ctrlLed, 253.81); delay(12);
analogWrite(ctrlLed, 253.80); delay(12);
analogWrite(ctrlLed, 253.08); delay(12);
analogWrite(ctrlLed, 253.54); delay(12);
analogWrite(ctrlLed, 253.79); delay(12);
analogWrite(ctrlLed, 253.84); delay(12);
analogWrite(ctrlLed, 253.68); delay(12);
analogWrite(ctrlLed, 253.32); delay(12);
analogWrite(ctrlLed, 252.79); delay(12);
analogWrite(ctrlLed, 252.03); delay(12);
analogWrite(ctrlLed, 251.06); delay(12);
analogWrite(ctrlLed, 249.96); delay(12);
analogWrite(ctrlLed, 248.60); delay(12);
analogWrite(ctrlLed, 247.05); delay(12);
analogWrite(ctrlLed, 245.31); delay(12);
analogWrite(ctrlLed, 243.50); delay(12);
analogWrite(ctrlLed, 241.53); delay(12);
analogWrite(ctrlLed, 239.14); delay(12);
analogWrite(ctrlLed, 236.84); delay(12);
analogWrite(ctrlLed, 234.25); delay(12);
analogWrite(ctrlLed, 231.50); delay(12);
analogWrite(ctrlLed, 228.78); delay(12);
analogWrite(ctrlLed, 225.75); delay(12);
analogWrite(ctrlLed, 222.77); delay(12);
analogWrite(ctrlLed, 219.49); delay(12);
analogWrite(ctrlLed, 216.09); delay(12);
analogWrite(ctrlLed, 212.78); delay(12);
analogWrite(ctrlLed, 208.96); delay(12);
analogWrite(ctrlLed, 205.47); delay(12);
analogWrite(ctrlLed, 201.91); delay(12);
analogWrite(ctrlLed, 197.81); delay(12);
analogWrite(ctrlLed, 194.11); delay(12);
analogWrite(ctrlLed, 190.12); delay(12);
analogWrite(ctrlLed, 186.31); delay(12);
analogWrite(ctrlLed, 182.22); delay(12);
analogWrite(ctrlLed, 178.09); delay(12);
analogWrite(ctrlLed, 174.17); delay(12);
analogWrite(ctrlLed, 169.75); delay(12);
analogWrite(ctrlLed, 165.80); delay(12);
analogWrite(ctrlLed, 161.84); delay(12);
analogWrite(ctrlLed, 157.64); delay(12);
analogWrite(ctrlLed, 153.43); delay(12);
analogWrite(ctrlLed, 149.24); delay(12);
analogWrite(ctrlLed, 145.32); delay(12);
analogWrite(ctrlLed, 141.16); delay(12);
analogWrite(ctrlLed, 137.04); delay(12);
analogWrite(ctrlLed, 133.19); delay(12);
analogWrite(ctrlLed, 129.37); delay(12);
analogWrite(ctrlLed, 125.12); delay(12);
analogWrite(ctrlLed, 121.39); delay(12);
analogWrite(ctrlLed, 117.47); delay(12);
analogWrite(ctrlLed, 113.61); delay(12);
analogWrite(ctrlLed, 110.03); delay(12);
analogWrite(ctrlLed, 106.28); delay(12);
analogWrite(ctrlLed, 102.81); delay(12);
analogWrite(ctrlLed, 98.97); delay(12);
analogWrite(ctrlLed, 96.04); delay(12);
analogWrite(ctrlLed, 93.16); delay(12);
analogWrite(ctrlLed, 89.92); delay(12);
analogWrite(ctrlLed, 87.15); delay(12);
analogWrite(ctrlLed, 84.42); delay(12);
analogWrite(ctrlLed, 81.55); delay(12);
analogWrite(ctrlLed, 78.74); delay(12);
analogWrite(ctrlLed, 76.17); delay(12);
analogWrite(ctrlLed, 73.48); delay(12);
analogWrite(ctrlLed, 71.02); delay(12);
analogWrite(ctrlLed, 68.44); delay(12);
analogWrite(ctrlLed, 65.92); delay(12);
analogWrite(ctrlLed, 63.62); delay(12);
analogWrite(ctrlLed, 61.38); delay(12);
analogWrite(ctrlLed, 58.88); delay(12);
analogWrite(ctrlLed, 56.74); delay(12);
analogWrite(ctrlLed, 54.66); delay(12);
analogWrite(ctrlLed, 52.49); delay(12);
analogWrite(ctrlLed, 50.37); delay(12);
analogWrite(ctrlLed, 48.45); delay(12);
analogWrite(ctrlLed, 46.44); delay(12);
analogWrite(ctrlLed, 44.62); delay(12);
analogWrite(ctrlLed, 42.72); delay(12);
analogWrite(ctrlLed, 40.88); delay(12);
analogWrite(ctrlLed, 39.20); delay(12);
analogWrite(ctrlLed, 37.58); delay(12);
analogWrite(ctrlLed, 35.78); delay(12);
analogWrite(ctrlLed, 34.25); delay(12);
analogWrite(ctrlLed, 32.66); delay(12);
analogWrite(ctrlLed, 31.22); delay(12);
analogWrite(ctrlLed, 29.73); delay(12);
analogWrite(ctrlLed, 28.29); delay(12);
analogWrite(ctrlLed, 26.98); delay(12);
analogWrite(ctrlLed, 25.71); delay(12);
analogWrite(ctrlLed, 24.32); delay(12);
analogWrite(ctrlLed, 23.14); delay(12);
analogWrite(ctrlLed, 21.99); delay(12);
analogWrite(ctrlLed, 20.81); delay(12);
analogWrite(ctrlLed, 19.66); delay(12);
analogWrite(ctrlLed, 18.64); delay(12);
analogWrite(ctrlLed, 17.57); delay(12);
analogWrite(ctrlLed, 16.61); delay(12);
analogWrite(ctrlLed, 15.62); delay(12);
analogWrite(ctrlLed, 14.67); delay(12);
analogWrite(ctrlLed, 13.82); delay(12);
analogWrite(ctrlLed, 12.99); delay(12);
analogWrite(ctrlLed, 12.09); delay(12);
analogWrite(ctrlLed, 11.33); delay(12);
analogWrite(ctrlLed, 10.60); delay(12);
analogWrite(ctrlLed, 9.85); delay(12);
analogWrite(ctrlLed, 9.23); delay(12);
analogWrite(ctrlLed, 8.68); delay(12);
analogWrite(ctrlLed, 8.10); delay(12);
analogWrite(ctrlLed, 7.58); delay(12);
analogWrite(ctrlLed, 7.09); delay(12);
analogWrite(ctrlLed, 6.58); delay(12);
analogWrite(ctrlLed, 6.08); delay(12);
analogWrite(ctrlLed, 5.65); delay(12);
analogWrite(ctrlLed, 5.23); delay(12);
analogWrite(ctrlLed, 4.77); delay(12);
analogWrite(ctrlLed, 4.39); delay(12);
analogWrite(ctrlLed, 4.03); delay(12);
analogWrite(ctrlLed, 3.65); delay(12);
analogWrite(ctrlLed, 3.33); delay(12);
analogWrite(ctrlLed, 2.99); delay(12);
analogWrite(ctrlLed, 2.70); delay(12);
analogWrite(ctrlLed, 2.40); delay(12);
analogWrite(ctrlLed, 2.14); delay(12);
analogWrite(ctrlLed, 1.87); delay(12);
analogWrite(ctrlLed, 1.63); delay(12);
analogWrite(ctrlLed, 1.42); delay(12);
analogWrite(ctrlLed, 1.22); delay(12);
analogWrite(ctrlLed, 1.04); delay(12);
analogWrite(ctrlLed, 0.85); delay(12);
analogWrite(ctrlLed, 0.70); delay(12);
analogWrite(ctrlLed, 0.56); delay(12);
analogWrite(ctrlLed, 0.43); delay(12);
analogWrite(ctrlLed, 0.33); delay(12);
analogWrite(ctrlLed, 0.23); delay(12);
analogWrite(ctrlLed, 0.15); delay(12);
analogWrite(ctrlLed, 0.09); delay(12);
analogWrite(ctrlLed, 0.05); delay(12);
analogWrite(ctrlLed, 0.02); delay(12);
}