Update
This commit is contained in:
parent
fae61b8b88
commit
088fa5da21
@ -26,14 +26,6 @@
|
|||||||
|
|
||||||
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
|
||||||
|
|
||||||
int batteryPct = 0;
|
|
||||||
double battVoltage = 0.0;
|
|
||||||
|
|
||||||
static const double chargeModifier = -0.04;
|
|
||||||
static const double dischargeModifier = 0.04;
|
|
||||||
|
|
||||||
double voltageModifier = 0;
|
|
||||||
|
|
||||||
bool powerState = false;
|
bool powerState = false;
|
||||||
bool screenOn = false;
|
bool screenOn = false;
|
||||||
bool charging_1 = false;
|
bool charging_1 = false;
|
||||||
@ -138,14 +130,11 @@ void setup() {
|
|||||||
pinMode(PWRBTN, INPUT_PULLUP);
|
pinMode(PWRBTN, INPUT_PULLUP);
|
||||||
pinMode(CHGBTN, INPUT_PULLUP);
|
pinMode(CHGBTN, INPUT_PULLUP);
|
||||||
digitalWrite(FETCTRL, LOW);
|
digitalWrite(FETCTRL, LOW);
|
||||||
battVoltage = GetVoltage();
|
|
||||||
resetScreen();
|
resetScreen();
|
||||||
delay(200);
|
delay(200);
|
||||||
/*
|
|
||||||
FuelGauge.begin();
|
FuelGauge.begin();
|
||||||
FuelGauge.reset(); //<== Might cause problems
|
FuelGauge.reset(); //<== Might cause problems
|
||||||
FuelGauge.quickstart();
|
FuelGauge.quickstart();
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
@ -166,41 +155,6 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void getBatteryCharge(){
|
|
||||||
double voltage = GetVoltage();
|
|
||||||
|
|
||||||
if (voltage > 4.15){batteryPct = 100;}
|
|
||||||
else if (voltage > 4.11){batteryPct = 95;}
|
|
||||||
else if (voltage > 4.08){batteryPct = 90;}
|
|
||||||
else if (voltage > 4.02){batteryPct = 85;}
|
|
||||||
else if (voltage > 3.98){batteryPct = 80;}
|
|
||||||
else if (voltage > 3.95){batteryPct = 75;}
|
|
||||||
else if (voltage > 3.91){batteryPct = 70;}
|
|
||||||
else if (voltage > 3.87){batteryPct = 65;}
|
|
||||||
else if (voltage > 3.85){batteryPct = 60;}
|
|
||||||
else if (voltage > 3.83){batteryPct = 55;}
|
|
||||||
else if (voltage > 3.82){batteryPct = 50;}
|
|
||||||
else if (voltage > 3.80){batteryPct = 45;}
|
|
||||||
else if (voltage > 3.79){batteryPct = 40;}
|
|
||||||
else if (voltage > 3.77){batteryPct = 35;}
|
|
||||||
else if (voltage > 3.75){batteryPct = 30;}
|
|
||||||
else if (voltage > 3.73){batteryPct = 25;}
|
|
||||||
else if (voltage > 3.71){batteryPct = 20;}
|
|
||||||
else if (voltage > 3.69){batteryPct = 15;}
|
|
||||||
else if (voltage > 3.61){batteryPct = 10;}
|
|
||||||
else if (voltage > 3.40){
|
|
||||||
|
|
||||||
batteryPct = 0;
|
|
||||||
}
|
|
||||||
else if (voltage < 2){batteryPct = -1;}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void _getBatteryCharge(){
|
|
||||||
batteryPct = FuelGauge.percent();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void checkPresses(){
|
void checkPresses(){
|
||||||
if (digitalRead(PWRBTN) == 0) {
|
if (digitalRead(PWRBTN) == 0) {
|
||||||
if (powerState == true || screenState != 0) {
|
if (powerState == true || screenState != 0) {
|
||||||
@ -257,7 +211,6 @@ void checkCharging(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void turnOn() {
|
void turnOn() {
|
||||||
if(isSafe == true){
|
if(isSafe == true){
|
||||||
blinkLed(PWRLED);
|
blinkLed(PWRLED);
|
||||||
@ -275,30 +228,24 @@ void turnOff() {
|
|||||||
powerState = false;
|
powerState = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void resetScreen() {
|
void resetScreen() {
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
display.display();
|
display.display();
|
||||||
screenOn = false;
|
screenOn = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateScreen() {
|
void updateScreen(){
|
||||||
getBatteryCharge();
|
|
||||||
updateDisplay();
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateDisplay(){
|
|
||||||
display.clearDisplay();
|
display.clearDisplay();
|
||||||
display.drawBitmap(0, 0, battery_logo, 120, 32, 1);
|
display.drawBitmap(0, 0, battery_logo, 120, 32, 1);
|
||||||
display.setTextSize(2);
|
display.setTextSize(2);
|
||||||
display.setCursor(30, 10);
|
display.setCursor(30, 10);
|
||||||
display.setTextColor(0);
|
display.setTextColor(0);
|
||||||
if (screenState == 1){
|
if (screenState == 1){
|
||||||
display.print(batteryPct);
|
display.print(getPct());
|
||||||
display.println("%");
|
display.println("%");
|
||||||
}
|
}
|
||||||
else if (screenState == 2){
|
else if (screenState == 2){
|
||||||
display.print(GetVoltage());
|
display.print(getVoltage());
|
||||||
display.println(" V");
|
display.println(" V");
|
||||||
}
|
}
|
||||||
updateDispayHelper();
|
updateDispayHelper();
|
||||||
@ -314,42 +261,23 @@ void updateDisplayChg(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void updateDispayHelper(){
|
void updateDispayHelper(){
|
||||||
|
int batteryPct = getPct();
|
||||||
if (charging_1 == true && batteryPct != 100) {display.drawBitmap(118, 0, charge_logo, 16, 14, 1); screenOn = true;}
|
if (charging_1 == true && batteryPct != 100) {display.drawBitmap(118, 0, charge_logo, 16, 14, 1); screenOn = true;}
|
||||||
else if (charging_2 == true && batteryPct != 100) {display.drawBitmap(118, 16, charge_logo, 16, 14, 1); screenOn = true;}
|
else if (charging_2 == true && batteryPct != 100) {display.drawBitmap(118, 16, charge_logo, 16, 14, 1); screenOn = true;}
|
||||||
else if (charging_1 == true && batteryPct == 100) {display.drawBitmap(118, 0, charged_logo, 16, 14, 1); screenOn = true;}
|
else if (charging_1 == true && batteryPct == 100) {display.drawBitmap(118, 0, charged_logo, 16, 14, 1); screenOn = true;}
|
||||||
else if (charging_2 == true && batteryPct == 100) {display.drawBitmap(118, 16, charged_logo, 16, 14, 1); screenOn = true;}
|
else if (charging_2 == true && batteryPct == 100) {display.drawBitmap(118, 16, charged_logo, 16, 14, 1); screenOn = true;}
|
||||||
}
|
}
|
||||||
|
|
||||||
double GetVoltage(){
|
double getVoltage(){
|
||||||
int totalSamples = 0;
|
return (FuelGauge.voltage()/1000);
|
||||||
double voltage = 0;
|
|
||||||
for (int q = 0; q < 10; q++) {
|
|
||||||
totalSamples = totalSamples + analogRead(VBAT);
|
|
||||||
delay(5);
|
|
||||||
}
|
|
||||||
voltage = (totalSamples / 10) * (5.00 / 1023.0);
|
|
||||||
|
|
||||||
if(charging_1 == true || charging_2 == true){voltageModifier = chargeModifier;}
|
|
||||||
else if(powerState == true){voltageModifier = dischargeModifier;}
|
|
||||||
else {voltageModifier = 0;}
|
|
||||||
|
|
||||||
voltage = voltage + voltageModifier;
|
|
||||||
|
|
||||||
if (voltage > (battVoltage-0.03) && voltage < (battVoltage+0.03)) {
|
|
||||||
return battVoltage;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
battVoltage = voltage;
|
|
||||||
return voltage;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double _GetVoltage(){
|
int getPct(){
|
||||||
return (FuelGauge.voltage());
|
return (FuelGauge.percent());
|
||||||
}
|
}
|
||||||
|
|
||||||
void safetyCheck(){
|
void safetyCheck(){
|
||||||
double currentVoltage = GetVoltage();
|
double currentVoltage = getVoltage();
|
||||||
if(currentVoltage > 3.40 ){ //|| currentVoltage < 1.00
|
if(currentVoltage > 3.40 ){ //|| currentVoltage < 1.00
|
||||||
isSafe = true;
|
isSafe = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user