#include <Gamebuino.h>
#include <SPI.h>
Gamebuino gb;
unsigned int tm=0;
int i;
int t;
unsigned long x,y,xt,yt;
unsigned int bmax;
unsigned int bmin;
unsigned int bat;
unsigned int data[512]={};
void setup() {
// put your setup code here, to run once:
gb.begin();
gb.titleScreen(F("Battery Monitor"));
gb.backlight.automatic = false;
gb.backlight.set(0);
gb.display.clear();
gb.display.persistence = true;
gb.battery.show = false;
gb.display.textWrap = false;
data[0]=int(gb.battery.voltage);
}
void loop() {
if(gb.update()){
if(gb.buttons.pressed(BTN_C)){
gb.titleScreen(F("Battery Monitor"));
//reset();
}
t++;
if (t>=1200*2){
t=0;
if (tm<511){
tm++;
bat=gb.battery.voltage;
data[tm]=bat;
bmin=4500;
bmax=0;
for (i=0; i<tm; i++)
{
if (data[i]<bmin) bmin=data[i];
if (data[i]>bmax) bmax=data[i];
}
}
}
if((gb.frameCount%20) == 0){
gb.display.clear();
xt=0;
yt=0;
for (i=0; i<tm; i++)
{
x=1+i*83/(tm);
y=int(long(47)*(bmax-data[i])/(bmax-bmin));
gb.display.drawLine(xt,yt, x,y);
xt=x;
yt=y;
}
gb.display.drawFastVLine(0,0,48);
gb.display.drawFastHLine(0,47,84);
gb.display.cursorX = 40;
gb.display.cursorY = 41;
gb.display.print(tm*2);
gb.display.println(F("min"));
gb.display.cursorX = 60;
gb.display.cursorY = 0;
gb.display.print(bmax);
gb.display.println(F("mV"));
gb.display.cursorX = 2;
gb.display.cursorY = 41;
gb.display.print(bmin);
gb.display.println(F("mV"));
if (gb.battery.level<=1) gb.sound.playTick();
}
}
}
Users browsing this forum: No registered users and 7 guests