From 7459f9bde17051b0a9941a1cc57bac834e31f6a6 Mon Sep 17 00:00:00 2001 From: "DESKTOP-PUHFO60\\dsx2016" Date: Fri, 23 Oct 2026 12:48:45 +0800 Subject: [PATCH] Support 3-pin button module (VCC/GND/OUT) with auto polarity. Sample idle level at boot; OUT on GPIO22, no internal pull fight. Co-authored-by: Cursor --- README.md | 34 +++++++++-------------- firmware/cyd/VERSION.txt | 6 ++-- firmware/cyd/firmware.bin | Bin 583648 -> 583760 bytes firmware/cyd/meta.json | 4 +-- firmware/export_from_build.ps1 | 2 +- include/button.h | 4 ++- include/pins.h | 2 +- src/button.cpp | 49 +++++++++++++++++++++++---------- src/ui.cpp | 9 +++--- 9 files changed, 62 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index b7a70cd..536d14c 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,30 @@ -# 轻触开关计数(CYD) +# 三脚按键模块计数(CYD) -触控 + LVGL 参考 `hw269test`。GPIO22 读 **轻触带帽开关**:每按一次,屏幕计数 +1。 +GPIO22 读三脚轻触按键模块:每按一次,屏幕计数 +1。 ## 硬件 | 项目 | 说明 | |------|------| | 板子 | CYD ESP32-2432S028R | -| 开关 | 轻触开关(带帽),瞬时闭合 | -| 引脚 | **GPIO22** | +| 模块 | 三脚轻触按键(VCC / GND / OUT) | +| 输出 | **GPIO22** | -### 接线(重要) +### 接线 -``` -GPIO22 ── 开关一脚 -GND ── 开关另一脚 -``` +| 模块 | CYD | +|------|-----| +| VCC / 3.3V | **3.3V** | +| GND | **GND** | +| OUT / S / DO | **GPIO22** | -- 不要接 3.3V / VCC -- **四脚轻触**:矩形四脚中,同侧两脚内部常通;要接 **对角** 或 **能通断的一对**,不要接已经常通的那一对 -- 固件内部上拉:松开=HIGH,按下=LOW +开机自动采空闲电平,反相视为按下(兼容「按下变高」或「按下变低」)。 -屏上会显示 `GPIO22: HIGH/LOW`:按下应变为 **LOW**;若一直 HIGH,多半是接线或脚对选错。 +屏上 `OUT HIGH/LOW` 与 `act=`:按下时 OUT 应变到 `act` 那一侧并 +1。 ## 操作 -- 按一下开关:计数 +1 +- 按一下:计数 +1(上电时请勿按住) - 触控 **Reset**:清零 ## 构建 @@ -33,10 +32,3 @@ GND ── 开关另一脚 ```bash pio run -e cyd -t upload ``` - -预编译: - -```powershell -cd firmware\cyd -.\flash.ps1 -``` diff --git a/firmware/cyd/VERSION.txt b/firmware/cyd/VERSION.txt index de9a100..a5b4b0e 100644 --- a/firmware/cyd/VERSION.txt +++ b/firmware/cyd/VERSION.txt @@ -1,8 +1,8 @@ name: CYD Button (cyd) -git: 2d1d49c +git: 280c5ea date: 2026-10-23 board: ESP32-2432S028R (ILI9341) -features: SoftSPI touch, LVGL, button SIG on GPIO22 count+1 +features: SoftSPI touch, LVGL, 3-pin button OUT on GPIO22 count+1 flash_size: 4MB offsets: 0x1000 bootloader.bin @@ -12,5 +12,5 @@ offsets: sha256: bootloader.bin 3D234A7471F67B013686DABD4DEE7C1FA915C9928463616A94BC9297ACF1ABF8 boot_app0.bin F94C5D786A7A8FAB06AC5D10E33BF37711A6697636DC037559EA19CC410A17F0 - firmware.bin B57118B1598F34B9737625C04E1EEB6C88395C639017288D69A6AB1BEC0C633C + firmware.bin BFCAD59431009CF5930B228CA7D6E3DE24C5FD2587690D131F770070EC8C604D partitions.bin 148B959CBFF1C38AA8E1D5C0BA9D612C54997B945E56A63F41223EEF650653A1 diff --git a/firmware/cyd/firmware.bin b/firmware/cyd/firmware.bin index 1a0721844b61d9bdb38e7afbd83b20c0def0eed9..2130329261a5d4688e4b4639a9fc265bf9946963 100644 GIT binary patch delta 57222 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 OZ!)et_d?Iy%Krn?Unk}O delta 57132 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⪼3$NcwdtKZor_U61oqIrlVk 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 ToLXePsP{g4%QnmPBIW-Ny*}EF diff --git a/firmware/cyd/meta.json b/firmware/cyd/meta.json index d609dc9..77819c6 100644 --- a/firmware/cyd/meta.json +++ b/firmware/cyd/meta.json @@ -1,7 +1,7 @@ { "boardId": "esp32-2432s028", "name": "CYD Button", - "summary": "Button on GPIO22: each press increments on-screen count", - "description": "SoftSPI touch + LVGL. SIG->GPIO22 INPUT_PULLUP. Press +1, touch Reset clears.", + "summary": "3-pin button module on GPIO22: each press increments count", + "description": "SoftSPI touch + LVGL. VCC/GND/OUT->GPIO22. Auto polarity. Press +1, touch Reset clears.", "tags": ["button", "gpio22", "touch", "lvgl", "counter"] } diff --git a/firmware/export_from_build.ps1 b/firmware/export_from_build.ps1 index a91959b..24244ee 100644 --- a/firmware/export_from_build.ps1 +++ b/firmware/export_from_build.ps1 @@ -41,7 +41,7 @@ $lines = @( "git: $git", "date: $date", "board: ESP32-2432S028R (ILI9341)", - "features: SoftSPI touch, LVGL, button SIG on GPIO22 count+1", + "features: SoftSPI touch, LVGL, 3-pin button OUT on GPIO22 count+1", "flash_size: 4MB", "offsets:", " 0x1000 bootloader.bin", diff --git a/include/button.h b/include/button.h index 7b596da..0ad43da 100644 --- a/include/button.h +++ b/include/button.h @@ -8,5 +8,7 @@ bool button_poll_press(); uint32_t button_count(); void button_reset_count(); bool button_is_down(); -/** 原始电平:1=HIGH,0=LOW(便于接线排查) */ +/** 原始电平:1=HIGH,0=LOW */ int button_raw_level(); +/** 按下时的有效电平:1=HIGH 有效,0=LOW 有效(开机按空闲电平自动判定) */ +int button_active_level(); diff --git a/include/pins.h b/include/pins.h index 35b9c4c..86af0f4 100644 --- a/include/pins.h +++ b/include/pins.h @@ -10,7 +10,7 @@ #define CYD_TOUCH_CLK 25 #define CYD_TOUCH_CS 33 -// 轻触开关:一脚 → GPIO22,另一脚 → GND(内部上拉,按下为 LOW) +// 三脚按键模块 OUT/S → GPIO22(VCC→3.3V,GND→GND) #define BTN_PIN 22 #define SCREEN_WIDTH 240 diff --git a/src/button.cpp b/src/button.cpp index 0678d5a..1cb5faa 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -3,27 +3,44 @@ #include -// 轻触开关:一端 → GPIO22,另一端 → GND(内部上拉,按下=LOW) +// 三脚按键模块:VCC→3.3V,GND→GND,OUT/S→GPIO22 +// 开机采样空闲电平,反相即为“按下”(兼容按下拉高 / 按下拉低两种模块) static uint32_t g_count = 0; static bool g_stable_down = false; -static int g_stable_raw = HIGH; +static int g_stable_raw = LOW; +static int g_active_level = HIGH; // 按下时期望电平 static uint32_t g_change_ms = 0; -static int g_pending_raw = HIGH; +static int g_pending_raw = LOW; static bool g_pending = false; -static constexpr uint32_t DEBOUNCE_MS = 25; +static constexpr uint32_t DEBOUNCE_MS = 30; + +static bool raw_is_down(int raw) { return raw == g_active_level; } void button_init() { - pinMode(BTN_PIN, INPUT_PULLUP); - delay(5); - g_count = 0; - g_stable_raw = digitalRead(BTN_PIN); - g_stable_down = (g_stable_raw == LOW); + // 模块自带上下拉,不要用内部上拉去顶它 + pinMode(BTN_PIN, INPUT); + delay(30); + + int high_n = 0; + for (int i = 0; i < 20; i++) { + if (digitalRead(BTN_PIN) == HIGH) { + high_n++; + } + delay(2); + } + const int idle = (high_n >= 10) ? HIGH : LOW; + g_active_level = (idle == HIGH) ? LOW : HIGH; + g_stable_raw = idle; + g_stable_down = false; g_pending = false; - g_pending_raw = g_stable_raw; + g_pending_raw = idle; g_change_ms = millis(); - Serial.printf("Button tactile GPIO%d pullup, idle=%s (wire other side to GND)\n", - BTN_PIN, g_stable_raw == HIGH ? "HIGH" : "LOW"); + g_count = 0; + + Serial.printf( + "Button module GPIO%d INPUT idle=%s active=%s (VCC/GND/OUT)\n", BTN_PIN, + idle == HIGH ? "HIGH" : "LOW", g_active_level == HIGH ? "HIGH" : "LOW"); } bool button_poll_press() { @@ -38,12 +55,12 @@ bool button_poll_press() { } else if ((now - g_change_ms) >= DEBOUNCE_MS) { g_stable_raw = g_pending_raw; g_pending = false; - const bool down = (g_stable_raw == LOW); + const bool down = raw_is_down(g_stable_raw); if (down && !g_stable_down) { g_stable_down = true; g_count++; - Serial.printf("Button press count=%lu raw=%d\n", (unsigned long)g_count, - g_stable_raw); + Serial.printf("Button press count=%lu raw=%s\n", (unsigned long)g_count, + g_stable_raw == HIGH ? "HIGH" : "LOW"); return true; } g_stable_down = down; @@ -65,3 +82,5 @@ void button_reset_count() { bool button_is_down() { return g_stable_down; } int button_raw_level() { return digitalRead(BTN_PIN); } + +int button_active_level() { return g_active_level; } diff --git a/src/ui.cpp b/src/ui.cpp index ddebe01..49dcc5d 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -42,9 +42,10 @@ void ui_refresh_count() { } if (lbl_raw) { const int lv = button_raw_level(); - lv_label_set_text_fmt(lbl_raw, "GPIO%d: %s", BTN_PIN, lv ? "HIGH" : "LOW"); + lv_label_set_text_fmt(lbl_raw, "OUT %s act=%s", lv ? "HIGH" : "LOW", + button_active_level() ? "HIGH" : "LOW"); lv_obj_set_style_text_color(lbl_raw, - lv_color_hex(lv ? COL_MUTED : 0x3DDC97), 0); + lv_color_hex(lv ? 0x3DDC97 : COL_MUTED), 0); } } @@ -68,7 +69,7 @@ void ui_create() { lv_obj_align(lbl_title, LV_ALIGN_TOP_MID, 0, 4); lbl_pin = lv_label_create(scr); - lv_label_set_text_fmt(lbl_pin, "IO%d <-> switch <-> GND", BTN_PIN); + lv_label_set_text_fmt(lbl_pin, "OUT->GPIO%d VCC 3.3V", BTN_PIN); lv_obj_set_style_text_color(lbl_pin, lv_color_hex(COL_MUTED), 0); lv_obj_set_style_text_font(lbl_pin, &lv_font_montserrat_14, 0); lv_obj_align(lbl_pin, LV_ALIGN_TOP_MID, 0, 36); @@ -92,7 +93,7 @@ void ui_create() { lv_obj_align(lbl_state, LV_ALIGN_TOP_MID, 0, 126); lbl_raw = lv_label_create(scr); - lv_label_set_text(lbl_raw, "GPIO22: HIGH"); + lv_label_set_text(lbl_raw, "OUT --"); lv_obj_set_style_text_color(lbl_raw, lv_color_hex(COL_MUTED), 0); lv_obj_set_style_text_font(lbl_raw, &lv_font_montserrat_14, 0); lv_obj_align(lbl_raw, LV_ALIGN_TOP_MID, 0, 152);