2018年7月17日 星期二

模組介紹 : faya 觸碰滑鍵模組


學習目標 : 認識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


範例程式:
// 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本篇留言版

沒有留言:

張貼留言