看板 Electronics 關於我們 聯絡資訊
我的開關設計很特別,當開關被按下不放時會模擬鍵盤送出某個特定按鍵訊號到電腦,類似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://www.ptt.cc/bbs/Electronics/M.1587551306.A.E37.html
MasterChang: 狀態機 04/22 19:54
yuleen123: 偵測訊號的上升緣, 先定義一個全域變數 old_state 用來 04/22 20:19
yuleen123: 儲存 2 號腳的狀態, 在 setup() 中讀取 2 號腳狀態初始 04/22 20:20
yuleen123: 化 old_state, 接著在 main() 中讀取新的 2 號腳狀態 04/22 20:20
yuleen123: new_state, 比較兩者, 如果 old_state && !new_state 04/22 20:21
yuleen123: 就送出鍵盤訊號, 最後在 main() 的尾端將 old_state 更 04/22 20:21
yuleen123: 新成 new_state 的值 04/22 20:21
yuleen123: 你的方式是 pull-down, 所以是偵測下降緣 04/22 20:23
mOuOm: 好喔,等等試試看 04/23 09:38
※ 編輯: mOuOm (101.10.61.111 臺灣), 04/24/2020 11:43:45
swich45314: 關鍵字 微動開關 彈跳反應 你按壓要有delay 05/15 08:39