88 lines
1.7 KiB
C++
88 lines
1.7 KiB
C++
|
|
#include <Wire.h>
|
|
#include <Adafruit_GFX.h>
|
|
#include <Adafruit_SSD1306.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;
|
|
int var;
|
|
int var2;
|
|
int var3;
|
|
|
|
void setup() {
|
|
delay(100);
|
|
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
|
|
display.clearDisplay();
|
|
display.setTextColor(WHITE);
|
|
Serial.begin(9600);
|
|
pinMode(VBAT, INPUT_PULLUP);
|
|
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);
|
|
draw();
|
|
}
|
|
|
|
void loop() {
|
|
delay(50);
|
|
var = analogRead(VBAT);
|
|
var2 = digitalRead(PWRBTN);
|
|
var3 = digitalRead(CHGBTN);
|
|
Serial.print(var);
|
|
Serial.print(" ");
|
|
Serial.print(var2);
|
|
Serial.print(" ");
|
|
Serial.println(var3);
|
|
checkPresses();
|
|
}
|
|
|
|
void checkPresses(){
|
|
if (digitalRead(PWRBTN) == 0) {
|
|
delay(100);
|
|
if (digitalRead(PWRBTN) == 0) {
|
|
pwrLed();
|
|
}
|
|
}
|
|
if (digitalRead(CHGBTN) == 0) {
|
|
delay(100);
|
|
if (digitalRead(CHGBTN) == 0) {
|
|
chgLed();
|
|
}
|
|
}
|
|
}
|
|
|
|
void chgLed(){
|
|
digitalWrite(CHGLED, HIGH);
|
|
delay(100);
|
|
digitalWrite(CHGLED, LOW);
|
|
}
|
|
|
|
void pwrLed(){
|
|
digitalWrite(PWRLED, HIGH);
|
|
delay(100);
|
|
digitalWrite(PWRLED, LOW);
|
|
}
|
|
|
|
void draw() {
|
|
display.drawRect(5, 5, 123, 27, SSD1306_WHITE);
|
|
display.display();
|
|
}
|