yuan910715 / 3keys

一个CH552制作的三键小键盘 CV工程师键盘
45 stars 14 forks source link

大佬,我代码有点不懂,指导一下,谢谢 #9

Closed Mr-ShiYi closed 10 months ago

Mr-ShiYi commented 11 months ago

请问,按键判断条件代码我有点不懂,能不能跟我解释一下,就是if的判断条件不是很懂,我试着代进去,还是,有一点弯没转过来 图片是示例里来的, 微信截图_20231021193150

Mr-ShiYi commented 11 months ago

@yuan910715 有空就帮我指导一下,谢谢

yuan910715 commented 10 months ago

就是判断按键按下或弹起状态有没有改变

Mr-ShiYi commented 10 months ago

我知道是判断按键状态,我不理解的是判断条件,又用取反又用不等于,有点容易搞混,最开始定义buttonpressprev=假是按下还是释放,按下为0还是1,我代0和1进去,还是没有解出来,你能解释解释判断条件怎么执行的吗,谢谢

yuan910715 commented 10 months ago

bool button1PressPrev = false; button1PressPrev在loop外定义 值为false 表示key1默认状态为弹起状态。 此变量用于标识按键上次改变后的状态。

bool button1Press = !digitalRead(BUTTON1_PIN); button1Press表示key1当前状态 弹起为false 按下为true ,digitalRead读取按键1的引脚值(HIGH或LOW (1/0) )由于硬件上key1的键盘轴连接对应引脚和GND 且引脚配置了内部上拉 参考setup()中:pinMode(BUTTON1_PIN, INPUT_PULLUP); 所以digitalRead读取此引脚 当键盘轴弹起状态为HIGH(1-true) , 按下为LOW(0-false) 取反后,键盘弹起为false 按下为true

if里就是用key1上次改变后的状态button1PressPrev和当前状态button1Press判断 不等于时表明状态发生改变。

Mr-ShiYi commented 10 months ago

就是布尔值button1PressPrev = false是一个记录按键上一次状态 比如button1PressPrev = false,按下按钮当前状态取反为ture,两者不相等,执行if,将当前状态赋予button1PressPrev = false变为ture

yuan910715 commented 10 months ago

是的 就是这意思

Mr-ShiYi commented 10 months ago

谢谢,懂了,还有就是,我想加键的话,代码按照上面示例加就行是吧,相当于固定输出,不能自定义按键

yuan910715 commented 10 months ago

是的

Mr-ShiYi commented 10 months ago

好的,谢谢指导