學習目標 : 認識faya 觸碰滑鍵模組的功能及使用方式
學習時間 : 40mins
示範模組 : (1) faya brickNano
(2) faya 蜂鳴器模組
(2) faya 觸碰滑鍵模組
工具 : 樂高積木底板 (相容)
====================功能介紹====================
faya觸碰滑鍵模組透過電路板上兩兩一組的角形波浪銅箔,利用人體手指的阻抗,透過分壓產生HIGH(開) / LOW(關) 的功能,因此可將每對銅箔當成一個開關,模組上設計了八組的開關供使用。
- 當手指接觸兩片銅箔時,輸出埠Px產生HIGH
- 當手指離開兩片銅箔時,輸出埠Px產生LOW
8組開關由左至右分別命名為P7~P0,訊號的輸出位於右方標示P0~P7的排母,當模組通電,並按P0~P7壓銅箔時,上方的LED燈會亮起,用以提醒手指確實按壓了開關,開關與LED的關係如下:
P7 = 綠 ; P6 = 橘 ; P5 = 藍 ; P4 = 紅 ; P3 = 綠 ; P2 = 橘 ; P1 = 藍 ; P0 = 紅 ;
====================原理知識====================
以下解釋提供給有需要知道背後原理的人,首先看一下電路圖:
圖中擁有八組相同的電路,這邊僅針對第8組(P7)介紹,R15/R16兩電阻位於該組銅箔的正上方,代號U8的pad代表模組上的兩片銅箔,由於銅箔是分開的,電路平時呈開路狀態,沒有電流流到輸出點,此時輸出為LOW。
接下來做個小實驗,將三用電錶的檔位調到20M歐姆檔,把+/-探針輕輕碰觸食指表面,量測手指的阻抗,如下圖所示:
筆者的量測值約2.5M Ohm,人的身體阻抗會根據體內含水量/流汗/體脂肪/血流狀態/量測面積/距離等等因素影響,有的人皮膚比較乾燥,量到的阻值就會比較高,有的人皮膚容易冒汗,量到的阻值就比較低,一般範圍大約在1M Ohm 到5M Ohm之間,我們先假設手指的阻值是2.5M Ohm,當手指碰觸模組上的銅箔時,根據分壓定理:
輸出電壓 V_OUT = 5V x (100K+10M) / (100K+2.5M+10M) = 4V
Arduino 的數位腳位只要偵測到3V以上就判定是LOGIC HIGH,因此當手指頭碰觸銅箔時,輸出OUT為HIGH。
最後我們利用反向器,將輸出轉為LOW電位,讓該組LED導通發光。
綜合以上,當手指碰觸銅箔時,輸出會呈現HIGH電位,且該銅箔上方的LED會點亮。
====================範例實作====================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1) 當手指壓著觸碰滑鍵模組上的任一組銅箔時,蜂鳴器發出相對音頻,由右至左分別為DO-RE-MI-FA-SO-LA-SI-DO。
接線:
(1) 電源線連接
如下圖所示,連接的說明請看這篇文章 或簡易版
(2) 訊號線連接
Arduino_5 ===> 觸碰滑鍵_P0
Arduino_6 ===> 觸碰滑鍵_P1
Arduino_7 ===> 觸碰滑鍵_P2
Arduino_8 ===> 觸碰滑鍵_P3
Arduino_9 ===> 觸碰滑鍵_P4
Arduino_10 ===> 觸碰滑鍵_P5
Arduino_11 ===> 觸碰滑鍵_P6
Arduino_12 ===> 觸碰滑鍵_P7
Arduino_13 ===> 蜂鳴器_BZ
範例程式:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 2018/7/16 | |
// Faya-Nugget Sample Code (touch_slider_1C.ino) | |
// 單元: 模組介紹 - 觸控滑鍵模組 | |
// 網址: https://fayalab.blogspot.com/2018/07/touchSlider.html | |
// 目標: (1) 當手指壓著觸控滑鍵模組上的任一組銅箔時,蜂鳴器發出相對音頻, | |
// 由右至左分別為DO-RE-MI-FA-SO-LA-SI-DO。 | |
// Wire : Arduino ==> faya Module | |
// D5 ==> P0 (觸控滑鍵) | |
// D6 ==> P1 (觸控滑鍵) | |
// D7 ==> P2 (觸控滑鍵) | |
// D8 ==> P3 (觸控滑鍵) | |
// D9 ==> P4 (觸控滑鍵) | |
// D10 ==> P5 (觸控滑鍵) | |
// D11 ==> P6 (觸控滑鍵) | |
// D12 ==> P7 (觸控滑鍵) | |
// D13 ==> BZ (蜂鳴器) | |
#include "pitches.h" //引入 pitches.h 標頭檔 | |
#define Buzzer_pin 13 //蜂鳴器連接至第13隻腳 | |
int notes[] = { | |
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5 // notes[]陣列存放 Do Re, Mi, Fa, So, La, Si, Do' 音頻 | |
}; | |
void setup() | |
{ | |
pinMode(Buzzer_pin,OUTPUT); // 設定 D13為輸出腳 | |
for(int i=5; i<=12; i++) // 設定 D5~D12為輸入腳 | |
{ | |
pinMode(i, INPUT); | |
} | |
} | |
void loop() { | |
for (int thisKey = 5; thisKey <= 12; thisKey++) { // 輪流讀取Arduino D5~D12狀態 | |
int keyReading = digitalRead(thisKey); | |
if (keyReading == HIGH) { // 當偵測到按下按鍵時 | |
tone(Buzzer_pin, notes[12-thisKey], 20); // 撥放相對應的音頻 | |
} | |
} | |
} |
備注:
- L35~36 : 利用迴圈依序讀取並判斷Arduino D5~D12的腳位狀態
- L38 : 利用tone函式撥放相對的音頻,此音頻存放在notes[]陣列中,其數值定義在includes.h中
範例結果:
討論:
(1) 影片中可發現我們利用觸碰滑鍵模組配合蜂鳴器模組,組出一台迷你的電子琴了,注意到 有些人的皮膚比較乾燥,使用這個模組時,因為指頭阻抗很高,造成碰觸開關無法正常運作,此時只要將手指頭呵呵氣,用水氣讓手指的阻抗下降,就能達到觸控的效果了!
(2) 觸碰滑鍵的特色功能在利用手滑的動作,透過程式適當的判斷,無論向左滑或向右滑時,都可以有相對應的控制功能,日常生活中也常用到此控制功能,例如音量的調整、燈光的明暗,大家可以自行試試看。
====================================
fayalab 粉絲團
FB本篇留言版
沒有留言:
張貼留言