This commit is contained in:
Max Hunt 2019-12-20 15:08:32 +00:00
parent 74aec42e44
commit a3c4ac9aa9
3 changed files with 120 additions and 282 deletions

View File

@ -18,6 +18,8 @@
#define CSTAT1 A1
#define CSTAT2 A2
#define DIMLEN 274
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int batteryPct = 0;
@ -78,7 +80,22 @@ static const unsigned char PROGMEM charge_logo[] = {
B00100100, B00000000,
B01001000, B00000000,
B01010000, B00000000,
B01100000, B00000000,
B01100000, B00000000
};
static const int PROGMEM dimmerVals[] = {
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,4,
4,4,5,5,6,6,7,7,8,8,9,9,010,11,11,12,13,14,15,16,17,18,19,20,
21,22,24,25,26,28,29,30,32,33,35,37,38,40,42,44,46,48,49,52,54,56,58,60,
63,65,67,70,73,75,78,80,83,86,89,92,95,98,101,105,108,112,116,120,124,127,131,136,
139,144,148,152,156,160,164,168,172,177,181,185,189,192,196,200,204,208,211,215,218,221,224,227,
230,233,236,238,240,242,244,246,248,249,250,251,252,253,253,253,253,253,253,253,253,253,253,252,
252,251,249,248,247,245,243,241,239,236,234,231,228,225,222,219,216,212,208,205,201,197,194,190,
186,182,178,174,169,165,161,157,153,149,145,141,137,133,129,125,121,117,113,110,106,102,98,96,
93,89,87,84,81,78,76,73,71,68,65,63,61,58,56,54,52,50,48,46,44,42,40,39,
37,35,34,32,31,29,28,26,25,24,23,21,20,19,18,17,16,15,14,13,12,12,11,10,
9,9,8,8,7,7,6,6,5,5,4,4,4,3,3,2,2,2,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0
};
void setup() {
@ -204,13 +221,12 @@ void updateScreen() {
else if (screenState == 2) {
updateDisplayVoltage();
}
updateDispayChg();
}
void updateDisplayPct(){
display.clearDisplay();
display.drawBitmap(0, 0, battery_logo, 120, 32, 1);
if (charging_1 == true) {display.drawBitmap(118, 0, charge_logo, 16, 14, 1);}
if (charging_2 == true) {display.drawBitmap(118, 16, charge_logo, 16, 14, 1);}
display.setTextSize(2);
display.setCursor(35, 10);
display.setTextColor(0);
@ -223,8 +239,6 @@ void updateDisplayPct(){
void updateDisplayVoltage(){
display.clearDisplay();
display.drawBitmap(0, 0, battery_logo, 120, 32, 1);
if (charging_1 == true) {display.drawBitmap(118, 0, charge_logo, 16, 14, 1);}
if (charging_2 == true) {display.drawBitmap(118, 16, charge_logo, 16, 14, 1);}
display.setTextSize(2);
display.setCursor(30, 10);
display.setTextColor(0);
@ -234,6 +248,12 @@ void updateDisplayVoltage(){
screenOn = true;
}
void updateDispayChg(){
if (charging_1 == true) {display.drawBitmap(118, 0, charge_logo, 16, 14, 1);}
if (charging_2 == true) {display.drawBitmap(118, 16, charge_logo, 16, 14, 1);}
display.display();
}
double GetVoltage(){
int totalSamples = 0;
double voltage = 0;
@ -252,278 +272,7 @@ double GetVoltage(){
}
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);
for(int i=0; i<DIMLEN; i++){
analogWrite(ctrlLed, dimmerVals[i]); delay(12);
}
}

View File

@ -60,8 +60,6 @@ wdt_reset();
}
void BlinkPow() {
delay(200);
analogWrite(PWRLED, 0.00); delay(12);
analogWrite(PWRLED, 0.00); delay(12);
analogWrite(PWRLED, 0.02); delay(12);
@ -198,7 +196,7 @@ void BlinkPow() {
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.80); delay(12);
analogWrite(PWRLED, 253.08); delay(12);
analogWrite(PWRLED, 253.54); delay(12);
analogWrite(PWRLED, 253.79); delay(12);

91
firmware/png2bi.py Normal file
View File

@ -0,0 +1,91 @@
from PIL import Image as img
import sys
if len(sys.argv) < 2:
print('Need image path as filename')
exit(0)
fname = sys.argv[1]
im = img.open(fname, 'r')
raw_pixels = list(im.getdata())
width = im.width
x = 0
_pix = []
pixels = []
for i in raw_pixels:
_pix.append(i)
x+=1
if x == width:
x = 0
pixels.append(_pix)
_pix = []
for i in range(0, len(pixels)):
for j in range(0, len(pixels[i])):
if pixels[i][j] < 50:
pixels[i][j] = "0"
else:
pixels[i][j] = "1"
true_pixels = []
for i in pixels:
st = ''
for j in i:
st += j
true_pixels.append(st)
final_pixels = []
_bdata = ''
mod_length = len(i) % 8
full_length = (len(i) / 8) - mod_length
for iterator in range(0, len(true_pixels)):
it = 0
counter = 0
do = True
_bdata = 'B'
while do:
if (counter*8+it) < len(i):
_bdata += true_pixels[iterator][counter*8 + it]
elif it != 0:
_bdata += '0'
else:
do = False
it+=1
if (it == 8) and (counter*8+it) < len(i):
it = 0
_bdata+=', B'
counter+=1
elif (it == 8):
it = 0
if iterator != len(true_pixels)-1:
_bdata+=','
counter+=1
final_pixels.append(_bdata)
print("static const unsigned char PROGMEM var_name[] = {")
for i in final_pixels:
print(" " + i)
print("};")