mirror of
https://github.com/fsender/readguy.git
synced 2025-12-15 06:08:13 +08:00
ver 1.3.6 buttons driver update
This commit is contained in:
@@ -67,7 +67,7 @@ guy_button::guy_button() {
|
||||
//id = _nextID++;
|
||||
}
|
||||
|
||||
void guy_button::begin(uint8_t _pin, std_U8_function_U8 f, bool activeLow /* = true */) {
|
||||
void guy_button::begin(uint8_t _pin, std_U8_function_U8 f, bool activeLow/*=true*/) {
|
||||
//pin = attachTo;
|
||||
//id = _nextID++;
|
||||
_pressedState = activeLow ? LOW : HIGH;
|
||||
@@ -79,7 +79,7 @@ void guy_button::begin(uint8_t _pin, std_U8_function_U8 f, bool activeLow /* = t
|
||||
min_debounce =25; //去抖时间
|
||||
long_press_ms =300; //长按持续时间+双击识别间隔最大时间
|
||||
long_repeat_ms =200; //长按连按间隔时间
|
||||
multibtn =0;
|
||||
scanDT =1; // =1识别双击或三击, =0则不识别双击或三击等需要延时返回的情况
|
||||
lk=0;
|
||||
}
|
||||
bool guy_button::isPressedRaw() {
|
||||
@@ -144,7 +144,7 @@ void guy_button::loop() {
|
||||
longclick_detected = true;
|
||||
}
|
||||
// is the button released and the time has passed for multiple clicks?
|
||||
} else if (now - click_ms > (multibtn?min_debounce:long_press_ms)) {
|
||||
} else if (now - click_ms > (scanDT?long_press_ms:min_debounce)) {
|
||||
// was there a longclick?
|
||||
if (longclick_detected) {
|
||||
// was it part of a combination?
|
||||
@@ -157,17 +157,14 @@ void guy_button::loop() {
|
||||
|
||||
// determine the number of single clicks
|
||||
} else if (click_count > 0) {
|
||||
switch (click_count) {
|
||||
case 1:
|
||||
last_click_type = GUYBUTTON_single_click;
|
||||
break;
|
||||
case 2:
|
||||
last_click_type = GUYBUTTON_double_click;
|
||||
break;
|
||||
case 3:
|
||||
last_click_type = GUYBUTTON_triple_click;
|
||||
break;
|
||||
if(scanDT){
|
||||
switch (click_count) {
|
||||
case 1: last_click_type = GUYBUTTON_single_click; break;
|
||||
case 2: last_click_type = GUYBUTTON_double_click; break;
|
||||
case 3: last_click_type = GUYBUTTON_triple_click;
|
||||
}
|
||||
}
|
||||
else last_click_type = GUYBUTTON_single_click; //此时若click_count>1 视为抖动
|
||||
was_pressed = true;
|
||||
}
|
||||
// clean up
|
||||
|
||||
@@ -92,7 +92,7 @@ class guy_button{
|
||||
uint8_t prev_state;
|
||||
uint8_t click_count = 0;
|
||||
uint8_t _pressedState;
|
||||
uint8_t multibtn; //是否为多个按钮, 可自己设置
|
||||
uint8_t scanDT; //是否为多个按钮, 可自己设置
|
||||
uint8_t last_click_type = GUYBUTTON_empty;
|
||||
volatile uint8_t lk = 255;
|
||||
//int id;
|
||||
@@ -123,7 +123,7 @@ class guy_button{
|
||||
uint8_t getType() const { return last_click_type; }
|
||||
uint8_t read();
|
||||
void loop();
|
||||
void setMultiBtn(uint8_t btns) { multibtn = btns; }
|
||||
void enScanDT(uint8_t scan) { scanDT = scan; }
|
||||
/* void setMinDebounce(short n) { min_debounce =n;} //去抖时间
|
||||
void setLongPressMs(short n) { long_press_ms =n;} //长按持续时间+双击识别间隔最大时间
|
||||
void setLongRepeat(short n) { long_repeat_ms =n;} //长按连按间隔时间
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
//另外, 在提交新版本之前, 不要忘记在github上创建release, 否则Arduino IDE会读不到
|
||||
#define READGUY_V_MAJOR 1
|
||||
#define READGUY_V_MINOR 3
|
||||
#define READGUY_V_PATCH 5
|
||||
#define READGUY_V_PATCH 6
|
||||
#define READGUY_VERSION_VAL (READGUY_V_MAJOR*1000+READGUY_V_MINOR*100+READGUY_V_PATCH*10)
|
||||
#define READGUY_VERSION "1.3.5"
|
||||
#define READGUY_VERSION "1.3.6"
|
||||
|
||||
#ifdef ESP8266
|
||||
#define _READGUY_PLATFORM "ESP8266"
|
||||
|
||||
@@ -516,6 +516,7 @@ void ReadguyDriver::handlePinSetup(){
|
||||
#if defined(ESP8266)
|
||||
for(int i=2;i<12;i++){
|
||||
if(i>=6 && i<=8) continue;
|
||||
s += F("<br/>");
|
||||
#else
|
||||
for(int i=0;i<12;i++){
|
||||
s += F("<br/>");
|
||||
@@ -711,13 +712,13 @@ const PROGMEM char ReadguyDriver::verify_html[] =
|
||||
const PROGMEM char ReadguyDriver::verify2_html[] =
|
||||
"<br/><hr/>完成上述4个操作之后屏幕上将会展现出验证码,输入验证码即可完成硬件配置.<br/></p><form action=\"/fin"
|
||||
"al\" method=\"POST\"><input type=\'text\' name=\'t_verify\' maxlength=\"6";
|
||||
const PROGMEM char ReadguyDriver::verifybtn_html[3][200] = {
|
||||
"一个按键, 操作可能比较繁琐, 但功能还都可以的.<br/>"
|
||||
"点按: 下一个/向下翻页<br/>双击: 确定/选择<br/>三连击: 返回/切换输入法<br/>长按: 上一个/向上翻页",
|
||||
const PROGMEM char ReadguyDriver::verifybtn_html[3][224] = {
|
||||
"一个按键, 功能全保留, 操作可能比较繁琐.<br/>"
|
||||
"点按:下一个/向下翻页<br/>双击:确定/选择<br/>三连击:返回/退格<br/>长按半秒:上一个/向上翻页<br/>点按紧接着长按: 特殊操作",
|
||||
"两个按键, 操作可以满足需求.<br/>"
|
||||
"按键1点按: 下一个/向下翻页<br/>按键1长按: 上一个/向上翻页<br/>按键2点按: 确定/选择<br/>按键2长按: 返回/切换输入法",
|
||||
"三个按键, 操作非常流畅.<br/>"
|
||||
"按键1: 上一个/向上翻页<br/>按键2点按: 确定/选择<br/>按键2长按: 返回/切换输入法<br/>按键3: 下一个/向下翻页"
|
||||
"按键1点按:下一个/向下翻页<br/>按键1长按:上一个/向上翻页<br/>按键2点按:确定/选择<br/>按键2长按:返回/退格<br/>按住按键1点按2:特殊操作",
|
||||
"三个按键, 操作非常方便流畅.<br/>"
|
||||
"按键1:上一个/向上翻页<br/>按键2点按:确定/选择<br/>按键2长按: 返回/退格<br/>按键3:下一个/向下翻页<br/>双击点按2:切换输入法等特殊操作"
|
||||
};
|
||||
const PROGMEM char ReadguyDriver::final_html[] =
|
||||
"欢迎使用 readguy</title></head><body><h1>readguy ";
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @author FriendshipEnder (f_ender@163.com), Bilibili: FriendshipEnder
|
||||
* @brief readguy 基础功能源代码文件.
|
||||
* @version 1.0
|
||||
* @date 2023-09-21
|
||||
* @date created: 2023-09-21 last modify: 2024-03-11
|
||||
|
||||
* @attention
|
||||
* Copyright (c) 2022-2023 FriendshipEnder
|
||||
@@ -408,15 +408,15 @@ void ReadguyDriver::setButtonDriver(){
|
||||
btn_rd[0].setLongRepeatMode(1); //允许连按
|
||||
//}
|
||||
if(READGUY_buttons==2){
|
||||
btn_rd[0].setMultiBtn(1); //设置为多个按钮,不识别双击或三击
|
||||
btn_rd[0].enScanDT(0); //不识别双击或三击
|
||||
//btn_rd[0].setLongRepeatMode(1); //双按键 选择按键 设置为允许连按
|
||||
btn_rd[1].setMultiBtn(1); //设置为多个按钮,不识别双击或三击
|
||||
btn_rd[1].enScanDT(0); //不识别双击或三击
|
||||
btn_rd[1].setLongRepeatMode(0); //双按键 确定按键 设置为不允许连按
|
||||
}
|
||||
else if(READGUY_buttons==3){
|
||||
btn_rd[0].long_press_ms = 20; //不识别双击三击, 只有按一下或者长按, 并且开启连按
|
||||
//btn_rd[0].setLongRepeatMode(1);
|
||||
//btn_rd[1].setMultiBtn(1); //设置为多个按钮,不识别双击或三击 2024/2/25更新:需要支持连按适配拨轮
|
||||
btn_rd[1].enScanDT(0); //不识别双击或三击(默认) 2024/2/25更新:需要支持连按适配拨轮
|
||||
btn_rd[1].setLongRepeatMode(0); //三按键 确定按键 设置为不允许连按
|
||||
btn_rd[2].long_press_ms = 20; //不识别双击三击, 只有按一下或者长按, 并且开启连按
|
||||
btn_rd[2].setLongRepeatMode(1);
|
||||
@@ -434,7 +434,7 @@ void ReadguyDriver::setButtonDriver(){
|
||||
btn_rd[0].setLongPressMs(1); //不识别双击三击, 只有按一下或者长按, 并且开启连按
|
||||
btn_rd[0].begin(33,rd_btn_f);
|
||||
btn_rd[0].setLongRepeatMode(1);
|
||||
btn_rd[1].setMultiBtn(1); //设置为多个按钮,不识别双击或三击
|
||||
btn_rd[1].enScanDT(1); //设置为多个按钮,不识别双击或三击
|
||||
btn_rd[1].begin(32,rd_btn_f);
|
||||
btn_rd[1].setLongRepeatMode(0);
|
||||
btn_rd[2].setLongPressMs(1); //不识别双击三击, 只有按一下或者长按, 并且开启连按
|
||||
|
||||
@@ -283,6 +283,8 @@ class ReadguyDriver: public LGFX_Sprite{ // readguy 基础类
|
||||
uint8_t getBtn() { return (READGUY_cali==127)?getBtn_impl():0; }
|
||||
/// @brief [此函数已弃用 非常不建议使用] 根据按钮ID来检查按钮. 注意这里如果按下返回0, 没按下或者按钮无效返回1
|
||||
//uint8_t getBtn(int btnID){return btnID<getButtonsCount()?(!(btn_rd[btnID].isPressedRaw())):1;}
|
||||
|
||||
void setButtonSpecial(bool en = 1) { if(READGUY_buttons==3) btn_rd[1].enScanDT(en); }
|
||||
/** @brief 返回可用的文件系统. 当SD卡可用时, 返回SD卡. 否则根据情况返回最近的可用文件系统
|
||||
* @param initSD 2:总是重新初始化SD卡; 1:若SD卡不可用则初始化; 0:SD卡不可用则返回LittleFS. */
|
||||
fs::FS &guyFS(uint8_t initSD = 0);
|
||||
@@ -359,7 +361,7 @@ class ReadguyDriver: public LGFX_Sprite{ // readguy 基础类
|
||||
static const PROGMEM char index_cn_html16[];
|
||||
static const PROGMEM char verify_html[];
|
||||
static const PROGMEM char verify2_html[];
|
||||
static const PROGMEM char verifybtn_html[3][200];
|
||||
static const PROGMEM char verifybtn_html[3][224];
|
||||
static const PROGMEM char final_html[];
|
||||
static const PROGMEM char afterConfig_html[];
|
||||
static const PROGMEM char home_html[];
|
||||
|
||||
Reference in New Issue
Block a user