在本篇文章中,我們將學(xué)習(xí)如何使用Arduino和觸摸傳感器TTP223設(shè)計(jì)基于觸摸的門(mén)鎖系統(tǒng)。該門(mén)鎖系統(tǒng)是用于開(kāi)關(guān)電路的簡(jiǎn)單項(xiàng)目,即借助簡(jiǎn)單的觸摸即可打開(kāi)/關(guān)閉伺服電機(jī)。只需觸摸一下即可將門(mén)鎖定或解鎖。我們將觸摸傳感器TTP223用作開(kāi)關(guān),并使用LCD來(lái)顯示門(mén)鎖的狀態(tài),以及使用LED來(lái)指示開(kāi)/關(guān)狀態(tài)。
該項(xiàng)目的應(yīng)用領(lǐng)域是家庭和辦公室,只需觸摸即可打開(kāi)和關(guān)閉門(mén)。將觸摸傳感器TTP223與Arduino連接用作解鎖門(mén)的開(kāi)關(guān)。
TTP223電容式觸摸傳感器
電容式觸摸傳感器模塊基于專(zhuān)用TTP223觸摸傳感器IC。該模塊提供了一個(gè)11 x 10.5mm的集成觸摸感應(yīng)區(qū)域,傳感器范圍約為5mm。當(dāng)觸發(fā)傳感器時(shí),板載LED將點(diǎn)亮。觸發(fā)后,模塊輸出將從其空閑的低電平切換到高電平。通過(guò)焊接跳線允許將其工作模式重新配置為低電平有效或觸發(fā)輸出。
TTP223是1鍵觸摸板檢測(cè)器IC,適用于檢測(cè)電容性元件的變化。它功耗非常低,工作電壓僅為2.0V?5.5V。快速模式下的響應(yīng)時(shí)間最大約為60mS,低功耗模式下@ VDD = 3V的響應(yīng)時(shí)間為220mS。靈敏度可以通過(guò)外部電容(0?50pF)來(lái)調(diào)節(jié)。
TTP223電容式觸摸傳感器的工作原理
電容式屏幕不使用手指的壓力來(lái)改變電流。取而代之的是,它們可以與任何帶有電荷的物質(zhì)一起使用-包括人體皮膚。
當(dāng)手指敲擊屏幕時(shí),微小的電荷會(huì)轉(zhuǎn)移到手指上,從而形成電路,在屏幕的該點(diǎn)產(chǎn)生電壓降。該軟件處理該電壓降的位置并命令隨后的動(dòng)作。
所需的組件
● Arduino Uno開(kāi)發(fā)板
● TTP223電容式觸摸傳感器
● 1602 LCD顯示屏
● SG90伺服電機(jī)
● LED指示燈
● 面包板
● 連接線
連接電路圖
將TTP223觸摸傳感器的信號(hào)引腳連接到Arduino數(shù)字引腳7。將伺服電機(jī)信號(hào)引腳連接到Arduino數(shù)字引腳3。通過(guò)330歐姆電阻將LED連接到Arduino數(shù)字引腳5。
如圖所示,將LCD連接到Arduino的模擬引腳A0、A1、A2、A3、A4、A5。
項(xiàng)目工作過(guò)程
代碼上傳后,液晶顯示屏將顯示
Touch Based
Door Lock System
伺服電機(jī)將復(fù)位到原始位置。
如果觸摸了觸摸傳感器,則液晶顯示屏將顯示:
Status: Unlocked
Touch to Lock
同時(shí),伺服電機(jī)將旋轉(zhuǎn)180度,LED點(diǎn)亮。
如果再次觸摸觸摸傳感器,則液晶顯示屏將顯示:
Status: Locked
Touch to Unlock
同時(shí),伺服電機(jī)將反向旋轉(zhuǎn)180度,并且LED會(huì)熄滅。
源代碼/程序
以下是使用Arduino和觸摸傳感器TTP223的基于觸摸的門(mén)鎖系統(tǒng)的代碼。,編譯并上傳到Arduino UNO開(kāi)發(fā)板。
#include
#include
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
const int servoPin = 3; // Servo pin
const int touchPin = 7; // Pushtouch pin
int ledPin = 5;
int touchState = 0;
int directionState = 0;
Servo myservo;
int pos = 0;
void setup() {
lcd.begin(16,2);
lcd.print(" Touch Based");
lcd.setCursor(0, 1);
lcd.print("Door Lock System");
myservo.attach(3);
pinMode(touchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop(){
touchState = digitalRead(touchPin);
if (directionState == 0){
if (touchState == HIGH) {
directionState = 1;
for(pos = 0; pos < 180; pos += 1)
digitalWrite(ledPin,1);
lcd.clear();
lcd.print("Status: Unlocked");
lcd.setCursor(0, 1);
lcd.print("Touch to Lock");
{
myservo.write(pos);
delay(15); // waits 15ms to reach the position
}
}
} else if (directionState == 1) {
if (touchState == HIGH) {
directionState = 0;
for (pos = 180; pos>=1; pos -=1)
digitalWrite(ledPin,0);
lcd.clear();
lcd.print("Status: Locked");
lcd.setCursor(0, 1);
lcd.print("Touch to Unlock");
{
myservo.write(pos);
delay(15);
}
}
}
}
編輯:hfy
-
觸摸傳感器
+關(guān)注
關(guān)注
0文章
122瀏覽量
23064
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論