作者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/m.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