电子说
在本篇文章中,我们将学习如何使用Arduino和触摸传感器TTP223设计基于触摸的门锁系统。该门锁系统是用于开关电路的简单项目,即借助简单的触摸即可打开/关闭伺服电机。只需触摸一下即可将门锁定或解锁。我们将触摸传感器TTP223用作开关,并使用LCD来显示门锁的状态,以及使用LED来指示开/关状态。
该项目的应用领域是家庭和办公室,只需触摸即可打开和关闭门。将触摸传感器TTP223与Arduino连接用作解锁门的开关。
TTP223电容式触摸传感器
电容式触摸传感器模块基于专用TTP223触摸传感器IC。该模块提供了一个11 x 10.5mm的集成触摸感应区域,传感器范围约为5mm。当触发传感器时,板载LED将点亮。触发后,模块输出将从其空闲的低电平切换到高电平。通过焊接跳线允许将其工作模式重新配置为低电平有效或触发输出。
TTP223是1键触摸板检测器IC,适用于检测电容性元件的变化。它功耗非常低,工作电压仅为2.0V〜5.5V。快速模式下的响应时间最大约为60mS,低功耗模式下@ VDD = 3V的响应时间为220mS。灵敏度可以通过外部电容(0〜50pF)来调节。
TTP223电容式触摸传感器的工作原理
电容式屏幕不使用手指的压力来改变电流。取而代之的是,它们可以与任何带有电荷的物质一起使用-包括人体皮肤。
当手指敲击屏幕时,微小的电荷会转移到手指上,从而形成电路,在屏幕的该点产生电压降。该软件处理该电压降的位置并命令随后的动作。
所需的组件
● Arduino Uno开发板
● TTP223电容式触摸传感器
● 1602 LCD显示屏
● SG90伺服电机
● LED指示灯
● 面包板
● 连接线
连接电路图
将TTP223触摸传感器的信号引脚连接到Arduino数字引脚7。将伺服电机信号引脚连接到Arduino数字引脚3。通过330欧姆电阻将LED连接到Arduino数字引脚5。
如图所示,将LCD连接到Arduino的模拟引脚A0、A1、A2、A3、A4、A5。
项目工作过程
代码上传后,液晶显示屏将显示
Touch Based
Door Lock System
伺服电机将复位到原始位置。
如果触摸了触摸传感器,则液晶显示屏将显示:
Status: Unlocked
Touch to Lock
同时,伺服电机将旋转180度,LED点亮。
如果再次触摸触摸传感器,则液晶显示屏将显示:
Status: Locked
Touch to Unlock
同时,伺服电机将反向旋转180度,并且LED会熄灭。
源代码/程序
以下是使用Arduino和触摸传感器TTP223的基于触摸的门锁系统的代码。,编译并上传到Arduino UNO开发板。
#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
全部0条评论
快来发表一下你的评论吧 !