基于TTP223触摸传感器IC和与Arduino连接的门锁系统

电子说

1.3w人已加入

描述

在本篇文章中,我们将学习如何使用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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分