Arduino觸摸傳感器教程(Touch Sensor)

【Arduino觸摸傳感器教程 Touch Sensor with Arduino Tutorial】?

什么是觸摸傳感器touch sensor?
觸摸傳感器的英文是touch sensor。 它有如下特點:
a) 可用來代替?zhèn)鹘y(tǒng)按鍵。
b) 提供了一個觸摸感應區(qū)域。當未被觸碰時,傳感器的信號引腳,signal pin,會輸出低電平。當可導電物體,比如手指,觸摸該區(qū)域時,信號引腳會輸出高電平。
c) 具有體積小、功耗低、方便使用、和穩(wěn)定性好的特點。
d) 傳感器有3個引腳:
????-?GND接地;
????- VCC接五V電源;
????- SIG代表SIGNAL信號,用以連接開發(fā)板的數(shù)字模擬口。
觸摸傳感器的工作原理?
觸摸傳感器的工作原理就像一個開關,當觸摸傳感器表面有接觸、觸摸或壓力時,它就會閉合電路,讓電流流過。當觸點松開時,傳感器的內部電路會斷開,電流會停止流動。
材料清單
- 觸摸傳感器 x1
- 面包板 x1
- 面包線 x7 (黑線x3, 紅線x2, 黃線x1, 橘線x1): 顏色不重要,但有助于理解教程
- LED 燈 x1
- 220歐姆電阻 x1
- Arduino Uno 開發(fā)板 x1
- UBS接線 x1
-? 裝有Arduino IDE的電腦 x1
電路圖

接線細節(jié)

代碼
const int SENSOR_PIN = 3; ? // 傳感器的信號引腳連接到開發(fā)板模擬口3
const int LED_PIN = 7; ? ? // LED燈的長腿連接到開發(fā)板模擬口7
int last_state = LOW; ? ? ?// 之前的傳感器信號狀態(tài),默認是低電平,沒被觸碰
int current_state; ? ? ? ?// 現(xiàn)在的傳感器信號狀態(tài)
bool light_on = false; ? // 燈光的狀態(tài),默認是false, 關燈狀態(tài)
void setup() {
? Serial.begin(9600); ? ? ? ? ?// 設置串口通信為 9600 位/秒
? pinMode(SENSOR_PIN, INPUT); // 設置模擬口3為輸入模式
}
void loop() {
? current_state = digitalRead(SENSOR_PIN); //讀入傳感器的電平狀態(tài)
//**假如之前的信號狀態(tài)是低,現(xiàn)在的信號狀態(tài)是高,代表傳感器的被觸碰到了
? if(last_state == LOW && current_state == HIGH){?
? ? Serial.println("touch detected by sensor"); //打印信號
? ? if (light_on == false) { ????????????????//假如現(xiàn)在是關燈狀態(tài)
? ? ? digitalWrite(LED_PIN, HIGH); //打開LED燈
? ? ? light_on = true;????????????????????????//設置燈的狀態(tài)為開
? ? } else {????????????????????????????????????? ?//假如現(xiàn)在是開燈狀態(tài)
? ? ? digitalWrite(LED_PIN, LOW);?//關掉LED燈
? ? ? light_on = false;?????????????????????//設置燈的狀態(tài)為關
? ? }
? }
? last_state = current_state; ?// 把當前的信號狀態(tài)賦值給之前的信號狀態(tài),開始另一個循環(huán)
}
**前面介紹過,傳感器沒被觸碰時,它是低電平狀態(tài),被觸碰時是高電平。如果我們只依據(jù)現(xiàn)在的狀態(tài)等于高電平作為觸碰的判斷條件,可能會產生一些問題,比如我們按住傳感器的時間過長,可能會被判斷為多次觸碰。因此,我們需要兩個條件,傳感器之前的狀態(tài)是低,和現(xiàn)在的狀態(tài)是高,來判斷它是否剛被觸碰了一次。
如何上傳代碼?
a) 點擊Arduino圖標, 打開編程IDE。一個Sketch會跳出來。
b) 點擊文件(F) >>?新建項目, 打開一個新的Sketch。
c) 復制并粘貼上面的代碼進IDE。
d) 點擊工具 >> 開發(fā)板 >>?Arduino AVR Boards >>?選擇你現(xiàn)在用的開發(fā)板。
e) 點擊工具 >> 選擇端口。(端口不一定是6,由電腦分配。)
f) 點擊打勾圖標檢查代碼。
g) 如果IDE沒有報錯,點擊右箭頭圖標上傳代碼。
h) 點擊工具 >> 打開串口監(jiān)視器, 看傳感器被觸碰時是否有正確的信息打印出來。
const 的應用
const 可以用來限定一個變量,不讓它被改變。如果強行改變這個變量,IDE會報錯。使用const在一定程度上可以提高程序的安全性和可靠性。

參考資料:
Arduino Touch Sensor:?https://arduinogetstarted.com/tutorials/arduino-touch-sensor?
Touch Sensor Working and Its Applications:?https://www.elprocus.com/touch-sensor-working-and-its-appplications/#:~:text=Working%20Principle%20of%20Touch%20Sensor,act%20as%20an%20open%20switch.
小熊圖片:由微軟Bing生成
電路圖:用virtual Breadboard制作
音樂:The Wild and the Free, provided by Storyblocks
十年種木,一年種谷,都付兒童。老夫惟有,醒來明月,醉后清風。