You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
1.6 KiB

/**
* switch Functions
*
* @category digital-clock
* @package switch.h
* @copyright Copyright (c) 2019 IoTcat (https://iotcat.me)
* @license GNU General Public License 2.0
* @version 0.0.1
*/
#ifndef _SWITCH_H
#define _SWITCH_H
#include "ovo.h"
#ifndef SWI_OFF
#define SWI_OFF 3
#endif
#ifndef SWI_RESET
#define SWI_RESET 4
#endif
class Switch{
public:
Switch(unsigned short pin = 3, bool type = HIGH){
this->_pin = pin;
this->_type = type;
this->_isPressed = false;
this->_status = true;
}
void core(){
check_status();
}
bool getStatus(){
return _status;
}
void changeStatus(int state){
if(state == 15){
this->_status = true;
return;
}
this->_status = !(this->_status);
}
bool isPressed(){
return _isPressed;
}
private:
unsigned short _pin;
bool _type;
bool _isPressed;
bool _status;
void set_isPressed(){
if(digitalRead(this->_pin) == this->_type){
this->_isPressed = true;
}else{
this->_isPressed = false;
}
}
void check_status(){
static bool s_fIsPressed = false;
set_isPressed();
// 检测开关键松开动作
if(this->_isPressed != s_fIsPressed /*&& this->_isPressed != _type*/){
this->_status = !(this->_status);
delay(600);
}
}
};
/**
* switch setup
*
* @Author yimian
* @param void
* @return void
*/
void switch_ini(){
pinMode(SWI_OFF, INPUT);
pinMode(SWI_RESET, INPUT);
}
#endif