|
在本篇文章中,我们将学习如何使用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 <Servo.h>
- #include<LiquidCrystal.h>
- 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);
- }
- }
- }
- }
复制代码
|