作者mOuOm (mOuOm)
看板Electronics
标题[请益] arduino Leonardo 当开关使用
时间Wed Apr 22 18:28:24 2020
我的开关设计很特别,当开关被按下不放时会模拟键盘送出某个特定按键讯号到电脑,类似usb keyboard的方式,这个目前都没问题
我是用digitalread来读取2号数位针脚有没有接地的方式达成
但是想请教这边的大神,有没有方法可以在按下控制器按键时仅触发一次,但是在控制器弹起时不会送讯号到电脑,直到下次在被按压时才会再次触发,想来想去还是没有想到合适的方法,目前先用delay时间来控制
更新一下
後来用了其他写法来达成我的需求,目前运作没毛病,但偶尔在放开开关时会出现按压的情况
不确定是不是线路杂讯造成
我开关设置距离较远,目前用网路线加上微动开关连接pin2跟GND来当作开关
#include <Keyboard.h>
char ctrlKey = KEY_LEFT_GUI;
int count=0;
void setup() {
pinMode(2, INPUT_PULLUP);
Keyboard.begin();
Serial.begin(9600);
}
void loop() {
while (digitalRead(2) == LOW) {
if (count==0){
Keyboard.press('a');
Keyboard.releaseAll();
delay(10);
count++;
}
Serial.println(count);
}
count=0;
}
-----
Sent from JPTT on my Samsung SM-N9750.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.10.61.111 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1587551306.A.E37.html
1F:→ MasterChang: 状态机 04/22 19:54
2F:→ yuleen123: 侦测讯号的上升缘, 先定义一个全域变数 old_state 用来 04/22 20:19
3F:→ yuleen123: 储存 2 号脚的状态, 在 setup() 中读取 2 号脚状态初始 04/22 20:20
4F:→ yuleen123: 化 old_state, 接着在 main() 中读取新的 2 号脚状态 04/22 20:20
5F:→ yuleen123: new_state, 比较两者, 如果 old_state && !new_state 04/22 20:21
6F:→ yuleen123: 就送出键盘讯号, 最後在 main() 的尾端将 old_state 更 04/22 20:21
7F:→ yuleen123: 新成 new_state 的值 04/22 20:21
8F:→ yuleen123: 你的方式是 pull-down, 所以是侦测下降缘 04/22 20:23
9F:→ mOuOm: 好喔,等等试试看 04/23 09:38
※ 编辑: mOuOm (101.10.61.111 台湾), 04/24/2020 11:43:45
10F:→ swich45314: 关键字 微动开关 弹跳反应 你按压要有delay 05/15 08:39