batt display, low batt shutdown, timeout shutdown
This commit is contained in:
87
src/board.h
87
src/board.h
@@ -1,35 +1,11 @@
|
||||
#ifndef BOARDH
|
||||
#define BOARDH
|
||||
|
||||
#define HARDWAREVERSION 11
|
||||
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
|
||||
#if HARDWAREVERSION==11
|
||||
|
||||
#define LED3 PB2 //D3
|
||||
#define LED2 PB8 //D4
|
||||
#define LED1 PB7 //D5
|
||||
|
||||
#define DETECT3 PA6 //A5
|
||||
#define DETECT2 PA5 //A4
|
||||
#define DETECT1 PA4 //A3
|
||||
|
||||
#define SWITCH3 PA7 //A6 TOGGLE1
|
||||
#define SWITCH32 PA2 //A7 MOMENTARY1
|
||||
#define SWITCH2 PA1 //A1 TOGGLE1
|
||||
#define SWITCH22 PA3 //A2 MOMENTARY1
|
||||
#define SWITCH1 PB6 //D11 TOGGLE1
|
||||
#define SWITCH12 PB5 //D12 MOMENTARY1
|
||||
|
||||
#define LD3LED PB3
|
||||
#define WAKEUPPIN PA2
|
||||
|
||||
#define REDLEDRES
|
||||
#define YELLOWLEDRES
|
||||
#define GREENLEDRES
|
||||
|
||||
#elif HARDWAREVERSION==10
|
||||
#if HARDWAREVERSION==9 //proto board with nucleo32l031 board
|
||||
|
||||
#define LED3 PB0 //D3
|
||||
#define LED2 PB7 //D4
|
||||
@@ -49,15 +25,70 @@
|
||||
#define LD3LED PB3
|
||||
#define WAKEUPPIN PA2
|
||||
|
||||
#define REDLEDRES
|
||||
#define YELLOWLEDRES
|
||||
#define GREENLEDRES
|
||||
|
||||
#elif HARDWAREVERSION==10 //v1.0 PCB
|
||||
|
||||
#define LED3 PB2
|
||||
#define LED2 PB8
|
||||
#define LED1 PB7
|
||||
|
||||
#define DETECT3 PA6
|
||||
#define DETECT2 PA5
|
||||
#define DETECT1 PA4
|
||||
|
||||
#define SWITCH3 PA7 //A6 TOGGLE1
|
||||
#define SWITCH32 PA2 //A7 MOMENTARY1
|
||||
#define SWITCH2 PA1 //A1 TOGGLE1
|
||||
#define SWITCH22 PA3 //A2 MOMENTARY1
|
||||
#define SWITCH1 PB6 //D11 TOGGLE1
|
||||
#define SWITCH12 PB5 //D12 MOMENTARY1
|
||||
|
||||
#define LD3LED PB3
|
||||
#define WAKEUPPIN PA2
|
||||
#define VBATTPIN PA0 //A0 VBATT
|
||||
#define R12 3.3
|
||||
#define R13 10
|
||||
|
||||
#define REDLEDRES
|
||||
#define YELLOWLEDRES
|
||||
#define GREENLEDRES
|
||||
|
||||
#elif HARDWAREVERSION==11
|
||||
|
||||
#define LED3 PB2
|
||||
#define LED2 PB8
|
||||
#define LED1 PB7
|
||||
|
||||
#define DETECT3 PA6
|
||||
#define DETECT2 PA5
|
||||
#define DETECT1 PA4
|
||||
|
||||
#define SWITCH3 PA7 //A6 TOGGLE1
|
||||
#define SWITCH32 PA2 //A7 MOMENTARY1
|
||||
#define SWITCH2 PA1 //A1 TOGGLE1
|
||||
#define SWITCH22 PA3 //A2 MOMENTARY1
|
||||
#define SWITCH1 PB6 //D11 TOGGLE1
|
||||
#define SWITCH12 PB5 //D12 MOMENTARY1
|
||||
|
||||
#define LD3LED PB3
|
||||
#define WAKEUPPIN PA2
|
||||
#define VBATTPIN PA0 //A0 VBATT
|
||||
#define R12 4.7
|
||||
#define R13 10
|
||||
#define MEASTRIGGER PA8
|
||||
|
||||
#define REDLEDRES
|
||||
#define YELLOWLEDRES
|
||||
#define GREENLEDRES
|
||||
#else
|
||||
#error No hardware version defined
|
||||
#error No hardware version defined!!
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
#else //UNIT_TEST
|
||||
|
||||
#define LED1 0 //D3
|
||||
#define LED2 1 //D4
|
||||
|
||||
79
src/main.cpp
79
src/main.cpp
@@ -8,9 +8,10 @@
|
||||
#include "simpleled.h"
|
||||
#include "buttons.h"
|
||||
#include "led.h"
|
||||
#include "power.h"
|
||||
|
||||
|
||||
#define TIMEOUT 300000 // 5min* 60 sec * 1000ms
|
||||
#define TIMEOUT 900000 // 15min* 60 sec * 1000ms
|
||||
#define GAMESELECTTIMEOUT 10000 // 7sec * 1000ms
|
||||
|
||||
typedef enum
|
||||
@@ -55,7 +56,7 @@ void HandleIdle(void)
|
||||
if (buttonIsPressed(YELLOW) && buttonIsPressed(RED) && !buttonIsPressed(GREEN) & (nextGame == none))
|
||||
{
|
||||
//prepare for next game
|
||||
nextGame = detectLED;
|
||||
nextGame = SimpleLed;
|
||||
turnOffLed(GREEN);
|
||||
}
|
||||
|
||||
@@ -70,8 +71,8 @@ void HandleIdle(void)
|
||||
void HandleGameSelectTimeout(void)
|
||||
{
|
||||
uint64_t currentmillis = millis();
|
||||
// yellow && red && green all on
|
||||
if (buttonIsPressed(YELLOW) && buttonIsPressed(RED) && buttonIsPressed(GREEN))
|
||||
//if (yellow && red && green)
|
||||
{
|
||||
//all buttons pressed, wait for next game
|
||||
if (!GameSelectTimer)
|
||||
@@ -95,35 +96,33 @@ void HandleGameSelectTimeout(void)
|
||||
}
|
||||
}
|
||||
|
||||
// void HandleTimeOut(void)
|
||||
// {
|
||||
// uint64_t currentmillis = millis();
|
||||
// if (!lasttimeOut)
|
||||
// {
|
||||
// lasttimeOut = currentmillis;
|
||||
// buttonChanged = anybutton();
|
||||
// }
|
||||
void HandleTimeOut(void)
|
||||
{
|
||||
uint64_t currentmillis = millis();
|
||||
if (!lasttimeOut)
|
||||
{
|
||||
lasttimeOut = currentmillis;
|
||||
buttonChanged = anybutton();
|
||||
}
|
||||
|
||||
// //check if lastTime is initialized or timeout expired
|
||||
// if ((currentmillis - lasttimeOut > TIMEOUT))
|
||||
// {
|
||||
// LowPower.shutdown();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (buttonChanged != anybutton())
|
||||
// {
|
||||
// buttonChanged = anybutton();
|
||||
// //game in progress, update timer
|
||||
// lasttimeOut = currentmillis;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//check if lastTime is initialized or timeout expired
|
||||
if ((currentmillis - lasttimeOut > TIMEOUT))
|
||||
{
|
||||
currentGame = sleep;
|
||||
turnOffAllLed();
|
||||
shutdown();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (buttonChanged != anybutton())
|
||||
{
|
||||
buttonChanged = anybutton();
|
||||
//game in progress, update timer
|
||||
lasttimeOut = currentmillis;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// void initSleep( void )
|
||||
// {
|
||||
// LowPower.begin();
|
||||
// }
|
||||
|
||||
void setup()
|
||||
{
|
||||
@@ -131,12 +130,14 @@ void setup()
|
||||
initButtons();
|
||||
initDetectLed();
|
||||
initSimpleLed();
|
||||
initLowPower();
|
||||
initBattery();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
handleButtons();
|
||||
//HandleTimeOut();
|
||||
HandleTimeOut();
|
||||
HandleGameSelectTimeout();
|
||||
|
||||
switch (currentGame)
|
||||
@@ -175,10 +176,13 @@ void loop()
|
||||
case none:
|
||||
{
|
||||
currentGame = SimpleLed;
|
||||
if (buttonIsPressed(YELLOW))
|
||||
batteryCheck();
|
||||
batterydisplay();
|
||||
delay(1000);
|
||||
if (buttonIsPressed(GREEN))
|
||||
{
|
||||
currentGame = ChainGame;
|
||||
turnOnLed(YELLOW);
|
||||
turnOnLed(GREEN);
|
||||
}
|
||||
if (buttonIsPressed(RED))
|
||||
{
|
||||
@@ -186,14 +190,15 @@ void loop()
|
||||
turnOnLed(RED);
|
||||
}
|
||||
|
||||
if (buttonIsPressed(GREEN))
|
||||
if (buttonIsPressed(YELLOW))
|
||||
{
|
||||
currentGame = detectLED;
|
||||
turnOnLed(GREEN);
|
||||
currentGame = SimpleLed;
|
||||
turnOnLed(YELLOW);
|
||||
}
|
||||
|
||||
//wait for all buttons idle
|
||||
while (anybutton())
|
||||
;
|
||||
{}
|
||||
|
||||
turnOffAllLed();
|
||||
}
|
||||
|
||||
75
src/power.cpp
Normal file
75
src/power.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "power.h"
|
||||
#include "board.h"
|
||||
#include "rtc.h"
|
||||
#include "low_Power.h"
|
||||
#include "led.h"
|
||||
|
||||
#ifdef VBATTPIN
|
||||
#include "Battery.h"
|
||||
Battery battery(2500, 4160, VBATTPIN);
|
||||
#endif
|
||||
|
||||
void initBattery(void)
|
||||
{
|
||||
#ifdef VBATTPIN
|
||||
battery.begin(3300, (R12+R13)/R13); //R1 = 220K, R2 = 100K, factor = (R1+R2)/R2
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t batteryGetVoltage( void )
|
||||
{
|
||||
return battery.voltage();
|
||||
}
|
||||
|
||||
void batterydisplay(void)
|
||||
{
|
||||
#ifdef VBATTPIN
|
||||
uint16_t currentlevel = battery.level();
|
||||
uint16_t currentvoltage = batteryGetVoltage();
|
||||
|
||||
if(currentvoltage)
|
||||
{
|
||||
if (currentlevel > 90)
|
||||
{
|
||||
turnOnLed(3);
|
||||
}
|
||||
if (currentlevel > 50)
|
||||
{
|
||||
turnOnLed(2);
|
||||
}
|
||||
if (currentlevel > 20)
|
||||
{
|
||||
turnOnLed(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void batteryCheck(void)
|
||||
{
|
||||
#ifdef VBATTPIN
|
||||
if (battery.level() < 10)
|
||||
{
|
||||
for( int i = 0; i < 10;i++)
|
||||
{
|
||||
turnOnLed(1);
|
||||
delay(300);
|
||||
turnOffLed(1);
|
||||
delay(300);
|
||||
}
|
||||
delay(5000);
|
||||
shutdown();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//low power
|
||||
void initLowPower(void)
|
||||
{
|
||||
LowPower_init();
|
||||
}
|
||||
|
||||
void shutdown(void)
|
||||
{
|
||||
LowPower_shutdown();
|
||||
}
|
||||
10
src/power.h
Normal file
10
src/power.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
//battery
|
||||
void initBattery( void );
|
||||
void batterydisplay( void );
|
||||
void batteryCheck(void);
|
||||
|
||||
//low power
|
||||
void initLowPower( void );
|
||||
void shutdown( void );
|
||||
Reference in New Issue
Block a user