【說明】
這個模組(KY-036)當手指靠近或按觸時,會感應到並傳送出訊號(DO Pin 腳),此特性可用來當作觸控開關,並可調整模組上的電組旋鈕來調整觸控距離的敏感度。
DO腳位:為感測器數位的輸出腳位,其值未接觸為 1(HIGH),接觸為 0 (LOW)。
AO腳位:為感測器類比的輸出腳位,其值範圍0 ~1023,未接觸為 < 512 DO為1,接觸為> 512(DO為0)。
【零件表】
| No. | 零件名稱 | 數量 |
| 1 | 觸控模組 (KY-036) | 1 |
| 2 | LED (綠) | 1 |
【零件接腳】
| No. | 零件接腳 | UNO R3 / NANO 接腳 |
| 1 | KY-036-AO | A 5 |
| 2 | KY-036-GND | GND |
| 3 | KY-036-Vcc | Vcc |
| 4 | KY-036-DO | D 3 |
| 5 | LED-長腳 | D 13 |
【按線圖】

【程式碼-使用 DO 的值】
/* 金屬觸控模組(KY-036)
* 當金屬或手指等導體按觸時,會感應到並傳送出訊號(DO Pin 腳及 AO Pin 腳),
* 此特性可用來當作觸控開關,並可調整模組上的電組旋鈕來調整觸控距離的敏感度。
* DO 腳位:為感測器數位的輸出腳位,其值接觸為 1(HIGH),未接觸為 0 (LOW)。
* AO 腳位:為感測器類比的輸出腳位,其值範圍0 ~1023,
* 接觸時其值 < 512 ,未接觸時其值 > 512
* 以下範例為使用 DO 的值來開啟或關閉 LED 。
*/
int LedPin = 13; // 定義 Led 腳位
int DO_Pin = 3; // 定義觸控開關數位輸出(Digital Output)腳位
int DO_Val = 0; // 儲存觸控開關感測數位輸出(Digital Output)的值
long low_count = 0;
void setup()
{
pinMode(LedPin, OUTPUT) ; // 設定 Led 腳位為輸出模式
pinMode(DO_Pin, INPUT) ; // 設定觸控開關感測腳位為輸入模式
Serial.begin(9600); // 開啟序列輸出
}
void loop()
{
DO_Val = digitalRead(DO_Pin); // 讀取 DO 腳位的值
// 當手接觸時重設 low_count 值為 0
// 否則累計達 10 次以上表示持續未接觸
if (DO_Val == 1) low_count = 0;
else low_count ++;
if (DO_Val == 0 && low_count > 10) {
digitalWrite(LedPin, LOW); // 持續未接觸時關閉 LED
Serial.println(LOW); // 輸出 LOW 的結果
}
else {
digitalWrite(LedPin, HIGH); // 有接觸時開啟 LED
Serial.println(HIGH); // 輸出 HIGH 的結果
}
delay(25); // LED 燈持續開啟或關閉
}
[/code]
【程式碼-使用 AO 的值】
/* 金屬觸控模組(KY-036)
* 當金屬或手指等導體按觸時,會感應到並傳送出訊號(DO Pin 腳及 AO Pin 腳),
* 此特性可用來當作觸控開關,並可調整模組上的電組旋鈕來調整觸控距離的敏感度。
* DO 腳位:為感測器數位的輸出腳位,其值接觸為 1(HIGH),未接觸為 0 (LOW)。
* AO 腳位:為感測器類比的輸出腳位,其值範圍0 ~1023,
* 接觸時其值 < 512 ,未接觸時其值 > 512
* 以下範例為使用 AO 的值來開啟或關閉 LED 。
*/
int LedPin = 13; // 定義 Led 腳位
int AO_Pin = A5; // 定義觸控開關類比輸出(Analog Output)腳位
int AO_Val = 0; // 儲存觸控開關感測類比輸出(Analog Output)的值
long low_count = 0;
void setup()
{
pinMode(LedPin, OUTPUT); // 設定 Led 腳位為輸出模式
Serial.begin(9600); // 開啟序列輸出
}
void loop()
{
AO_Val = analogRead(AO_Pin); // 讀取 AO 腳位的值
// 當手接觸時重設 low_count 值為 0
// 否則累計達 10 次以上表示持續未接觸
if (AO_Val < 512) low_count = 0;
else low_count ++;
if (AO_Val > 512 && low_count > 10) {
digitalWrite(LedPin, LOW); // 持續未接觸時關閉 LED
Serial.println(LOW); // 輸出 LOW 的結果
}
else {
digitalWrite(LedPin, HIGH); // 有接觸時開啟 LED
Serial.println(HIGH); // 輸出 HIGH 的結果
}
delay(25); // LED 燈持續開啟或關閉
}



