戴夫来自 DesignSpark
你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
戴夫来自 DesignSpark
Thank you! Your feedback has been received.
戴夫来自 DesignSpark
There was a problem submitting your feedback, please try again later.
戴夫来自 DesignSpark
你觉得这篇文章怎么样?
(此文章與相關設計為FutureWard Tatung會員-陳一仁 所有)
有趣的電子接點訊號(分壓電路當啟動感應):
大部分按鈕是開關乾接點,初學者對學習基礎都是採用 pull-down的使用。
而Arduino 內件腳位有上拉的電阻20-50K 歐姆,因此也可使用此方式做接點訊號(INPUT_PULLUP)
- <https://www.arduino.cc/reference/en/language/variables/constants/constants/
- <https://www.arduino.cc/en/Tutorial/Button
- <https://www.arduino.cc/en/Tutorial/InputPullupSerial
兩種接線方式各有些優缺,而善用 INPUT_PULLUP有滿多可偷懶的應用。
- 少裝按鈕的電阻
- 內件程式修改快速
- 出錯率少
但切記這些應用用在 “正板” 或“正常複製”Arduino 才會有較穩定的效果,若採用海盜板的Ardino 有些漏了零件,在訊號在上拉時有些會異常不穩,建議要換腳位在嘗試。
以此案例(遊戲拍打機)就是利用上拉電組的程式來達成應用。同時 訊號利用分壓電路來達成轉降的電壓去提供給Arduino當訊號回饋。
材料:
- Arduino UNO
- USB線
- 電阻 470 歐*3
- 電阻7K 歐*3
- 電阻5K 歐*3
- 12V變壓器 2A
- 遊戲按鈕
- 強力彈簧
- 隱藏式12V燈泡
- led 燈
- 微動開關*3
- 20AWG 電線
熟悉自己的電子核心裝置
Arduino Pin 座的極限 40ma的電流驅動,比一般為控制器都來的大,但也未必是萬能,在預算有限遇到 12V、9V、5V或3.3V的電子裝置 許多電源需要整合在一起,而Arduino一般的電路啟動訊號都應用在5V 與3.3V裡,因此遇到 較大電壓時就要想辦法整合在一起。
當遇到12V燈或其餘裝高電壓需要整合的迴路時,如何只用一個12V變壓器來達成觸發訊號與電源發送。
有用的基礎電學“分壓電路”:
簡單意思說,如何將 12V的電壓變成 Arduino所需要的 5V觸發訊號。
Arduino的高位處發訊號大約是3.3V-5V,若超過太多或太低Arduino無法讀到訊號的變化。
而分壓電路的功用就是將所需要的電壓 5V回流到Arduio中。
以下提供簡單的試算表
分壓計算機(Voltage Divider Calculator)
<
利用此一迴路的知識我們來開始動手做以下的拍打訊號實作:
專案實作
此遊戲機分幾類進行:
- 實體回饋設計與測試
- 電子電路的設計與製作
- 現場螢幕遮蔽與對位(此案例不說明)
- 電腦畫面的製作(此案例不說明)
- PC訊號與電子訊號的串接(此案例不說明)
規則:
開瓶遊戲內容,3人比看看誰的拍打速度快,而快的那人會在電視畫面中顯示勝利。
實體回饋設計與測試
硬體設備的的找尋與製作
測試各種手感反應的回饋,此類遊戲按鈕大小接觸面積與現場壓克力按鈕需要接合因此需要找尋適當面積與大小來感受處感上的差異。
首先製作簡易支架來嘗試拍打受力的回饋感受,不能只憑感覺要真實的製作pototype才能貼近真實。
線路進量製作成可拆換的裝置,因為按鈕可能隨時會被打爆,且微動開關(micro switch)是耗材有壽命上的限制,因此製作快速接頭有其必要性。而下一步我們可以拆解設備的彈簧讓他的硬度變硬,此款遊戲機的原物料為了節省成本,因此採用較軟的彈簧,假如需要較高的回饋力與舉重力,會建議找相對應剛性高的彈簧去改裝,這樣就能延長現場使用壽命。
電子電路的設計與製作
如圖示是利用分壓電路的設計所製作的電路應用。黃色LED燈是觸發開關時所需要的迴路顯示器,因為來源電壓都是12V 所以我們必須接上470歐母的電阻避免LED燈損壞。由於Arduino設備需要接收5V的訊號才會偵測按鈕是否有被按壓感應,因此利用分壓電路將12V 拆解,參考下圖電路圖資訊。
電路圖參考
當分壓電路電路焊接完成時,我們可開啟Input pull-up的程式去測試。
/*
Input Pull-up Serial
*/
void setup() {
//start serial connection
Serial.begin(9600);
//configure pin 2 as an input and enable the internal pull-up resistor
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);
}
void loop() {
//read the pushbutton value into a variable
int sensorVal = digitalRead(2);
//print out the value of the pushbutton
Serial.println(sensorVal);
// Keep in mind the pull-up means the pushbutton's logic is inverted. It goes
// HIGH when it's open, and LOW when it's pressed. Turn on pin 13 when the
// button's pressed, and off when it's not:
if (sensorVal == HIGH) {
digitalWrite(13, LOW);
} else {
digitalWrite(13, HIGH);
}
}
|
其中因為感應方式是採用pull-up,當高電電壓5V通道 Arduino “pin2”位置,此刻會讀到訊號 low電位 因此將 low的訊號傳送到遠端的PC去做接收觸發開關。
將電路板封裝進盒裝,並放置現場:
※此電路保護盒非常好加工,且箱體空間大,價格上也非常便宜,同時小刀也能加工。
紀錄拍打狀態,與畫面的反應內容。
簡易影片測試畫面。
當按壓壓反應讀取到low時則會回傳訊號到 PC端,此刻畫面立刻反應在影像上。達到簡易的趣味互動遊戲效果,相關勝負判斷可在Arduino端製作或是在PC端製作。可用次數累加去計算,目前暫不敘述此內容。
後記:
若發生分壓電路不穩定的狀態會建議在收訊號的腳位接電晶體(NPN)當訊號緩衝,或是採用Realy做接點訊號的接收,此原因最大問題是電線長度過長(20M以上)且電流超出Arduino 可接收的值,有可能會燒毀Arduino,因此測試時要十分小心 :)