add debug mode

master
IoTcat 5 years ago
parent e69469b8b3
commit 67d2e451de
  1. 34
      digital-clock.ino
  2. 102
      digital-screen.h

@ -13,6 +13,12 @@
/*** 引入关键库 ****/
#include "ovo.h"
/*** 是否开启debug模式 ****/
//去掉下一行的注释以开启debug模式
//#define DEBUG_MODE
/*** 定义初始参数 ****/
//小组组号
@ -59,24 +65,46 @@ void setup(){
switch_ini();
//初始化串口,方便debug
Serial.begin(115200);
#ifdef DEBUG_MODE
//初始化板载led,作为debug的指示灯
pinMode(LED_BUILTIN, OUTPUT);
#endif
}
/*** 实例化组件 ****/
#ifdef DEBUG_MODE
//时钟显示屏实例化
Debug_DigitalClock clock(GROUP_ID);
#else
//时钟显示屏实例化
DigitalClock clock(GROUP_ID);
//开关组件实例化
Switch swi(SWI_OFF), reset(SWI_RESET);
#endif
//开关组件实例化
Switch swi(SWI_OFF), reset(SWI_RESET);
/*** 主循环程序 ****/
void loop(){
/*** 主要控制逻辑 ****/
#ifdef DEBUG_MODE
//如果reset键或开关键被按下,板载led亮
if(reset.isPressed() == true || swi.isPressed() == true) {
digitalWrite(LED_BUILTIN, HIGH);
}else{
digitalWrite(LED_BUILTIN, LOW);
}
#else
//如果reset键被按下,重置时钟
if(reset.isPressed() == true) {
clock.reset();
@ -87,7 +115,7 @@ void loop(){
//如果开关打开,则开始或停止计时
if(swi.getStatus() == true) clock.show();
else clock.hide();
#endif
/*** 守护进程 ****/
clock.core();

@ -175,4 +175,106 @@ void digital_clock_ini(){
#ifdef DEBUG_MODE
class Debug_DigitalClock{
public:
Debug_DigitalClock(int group = 22){
this->_group = group;
_ice = 0;
_cnt = 0;
};
/**
* control digital screens
*
* @Author yimian
* @param int num #
* @return void
*/
inline void digital_show(int num){
if(num == -1 || _ice == 1){
//digital_show_1(15);
//digital_show_2(15);
return;
}
digital_show_1(num % 10);
digital_show_2(num % 10);
}
void core(){
setInterval([&](){
this->digital_show(this->_cnt % (this->_group + 1));
if(this->_ice != 1) this->_cnt++;
}, INTERVAL_TIME);
}
inline void hide(){
this->_ice = 1;
}
inline void show(){
this->_ice = 0;
}
inline void change(){
this->_ice = !(this->_ice);
}
inline void reset(){
this->_cnt = 0;
}
private:
int _group;
int _ice;
unsigned int _cnt;
/**
* control digital screen 1
*
* @Author yimian
* @param int num #
* @return void
*/
void digital_show_1(int num){
digitalWrite(DIG_1_1, !!(num & (0x01<<0)));
digitalWrite(DIG_1_2, !!(num & (0x01<<1)));
digitalWrite(DIG_1_3, !!(num & (0x01<<2)));
digitalWrite(DIG_1_4, !!(num & (0x01<<3)));
}
/**
* control digital screen 2
*
* @Author yimian
* @param int num #
* @return void
*/
void digital_show_2(int num){
digitalWrite(DIG_2_1, !!(num & (0x01<<0)));
digitalWrite(DIG_2_2, !!(num & (0x01<<1)));
digitalWrite(DIG_2_3, !!(num & (0x01<<2)));
digitalWrite(DIG_2_4, !!(num & (0x01<<3)));
}
};
#endif
#endif

Loading…
Cancel
Save