Initial commit
1 parent 388c582 commit ef7867cbd48555bfd2a57ee4cd5ca5d5b53bd909
root authored on 15 Jun 2019
Showing 2 changed files
View
103
BatteryMeters.ino 0 → 100755
#include <Arduino.h>
#include <U8g2lib.h>
 
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
 
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ 16, /* clock=*/ 5, /* data=*/ 4);
ADC_MODE(ADC_VCC);
 
void setup() {
Serial.begin(115200);
 
// screen stuff (128 x 32 px)
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(10, 0);
digitalWrite(9, 0);
u8g2.begin();
u8g2.enableUTF8Print();
 
Serial.println("Setup done");
 
getBatteryLevel();
delay(100);
}
 
int getBatteryLevel() {
uint32_t getVcc = ESP.getVcc();
Serial.println(getVcc);
float measuredvbat = getVcc; // for actual voltage
measuredvbat /= 1024; // convert to voltage
Serial.println(measuredvbat);
 
int percent = map(getVcc, 2300, 3000, 0, 100); // turn vcc into batt perentage (yea I know it's not that accurate due to dropoff rate)
return percent;
//return 30; //DEBUG
}
 
void smallText(int percent){
String batvol = "";
batvol += percent;
batvol += "%";
char batChr2[batvol.length()+1];
batvol.toCharArray(batChr2, batvol.length()+1);
 
u8g2.setFont(u8g2_font_8x13_mf);
u8g2.drawStr(70,25,batChr2);
}
 
void smallBottomRightIcon(int percent){
percent = map(percent, 0, 100, 1, 11);
if(percent > 11){ percent = 11; }
if(percent < 1){ percent = 1; }
u8g2.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g2.drawFrame(111,24,15,8);
u8g2.drawBox(113,26,percent,4); //3rd param is %(1-11)
u8g2.drawBox(126,26,2,4);
}
 
void topBar(int percent){
percent = map(percent, 0, 100, 1, 128);
if(percent > 128){ percent = 128; }
if(percent < 1){ percent = 1; }
 
u8g2.drawLine(128-percent,0, 128, 0);
}
 
void gauge(int percent){
int arc=10;
uint8_t angle = map(percent,0,100,0,90);
if (angle<45){
angle=angle+135;
}else{
angle=angle-45;
}
float x1=sin(2*angle*2*3.14/360);
float y1=cos(2*angle*2*3.14/360);
u8g2.drawLine(40, 32, 40+arc*x1, 32-arc*y1);
u8g2.drawCircle(40, 32, 15, U8G2_DRAW_UPPER_LEFT);
u8g2.drawCircle(40, 32, 15, U8G2_DRAW_UPPER_RIGHT);
}
 
void loop() {
u8g2.clearBuffer();
int percent = getBatteryLevel();
smallBottomRightIcon(percent);
topBar(percent);
gauge(percent);
smallText(percent);
u8g2.sendBuffer();
delay(1000);
}
View
16
README.md
Heltec_WiFi_Kit_8
<u>Heltec WiFi Kit 8</u>
===============
 
Example scripts and useful links for the Heltec WiFi Kit 8
 
#**Scripts**
 
# BatteryMeters.ino
Example Battery Gauges
 
 
Click to watch demo video:
 
[![https://www.youtube.com/watch?v=EnLS2lJF1Ls](http://img.youtube.com/vi/EnLS2lJF1Ls/0.jpg)](http://www.youtube.com/watch?v=EnLS2lJF1Ls "Battery Gauges")
 
#**Useful links**
 
Use the following guide to setup the arduino environment for the wifi kit 8: [https://robotzero.one/heltec-wifi-kit-8/](https://robotzero.one/heltec-wifi-kit-8/)
Buy Me A Coffee