风筝
发表于: 2020-4-12 19:23:15 | 显示全部楼层

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

●    面包板

●    连接线


连接电路图

Circuit-Diagram-2.jpg

将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会熄灭。

1-5.jpg


源代码/程序

以下是使用Arduino和触摸传感器TTP223的基于触摸的门锁系统的代码。复制代码,编译并上传到Arduino UNO开发板。

  1. #include <Servo.h>
  2. #include<LiquidCrystal.h>
  3. LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
  4. const int servoPin = 3; // Servo pin
  5. const int touchPin = 7; // Pushtouch pin
  6. int ledPin = 5;
  7. int touchState = 0;
  8. int directionState = 0;
  9. Servo myservo;
  10. int pos = 0;

  11. void setup() {
  12. lcd.begin(16,2);
  13. lcd.print(" Touch Based");
  14. lcd.setCursor(0, 1);
  15. lcd.print("Door Lock System");
  16. myservo.attach(3);
  17. pinMode(touchPin, INPUT);
  18. pinMode(ledPin, OUTPUT);
  19. }

  20. void loop(){
  21. touchState = digitalRead(touchPin);
  22. if (directionState == 0){
  23. if (touchState == HIGH) {
  24. directionState = 1;
  25. for(pos = 0; pos < 180; pos += 1)
  26. digitalWrite(ledPin,1);
  27. lcd.clear();
  28. lcd.print("Status: Unlocked");
  29. lcd.setCursor(0, 1);
  30. lcd.print("Touch to Lock");
  31. {
  32. myservo.write(pos);
  33. delay(15); // waits 15ms to reach the position
  34. }
  35. }

  36. } else if (directionState == 1) {
  37. if (touchState == HIGH) {
  38. directionState = 0;

  39. for (pos = 180; pos>=1; pos -=1)
  40. digitalWrite(ledPin,0);
  41. lcd.clear();
  42. lcd.print("Status: Locked");
  43. lcd.setCursor(0, 1);
  44. lcd.print("Touch to Unlock");
  45. {
  46. myservo.write(pos);
  47. delay(15);
  48. }
  49. }
  50. }
  51. }
复制代码

跳转到指定楼层
jiangkun
发表于: 2020-6-1 16:04:07 | 显示全部楼层

请问这个仿真软件是什么呀
回复

使用道具 举报

风筝
发表于: 2020-6-1 20:58:42 | 显示全部楼层

jiangkun 发表于 2020-6-1 16:04
请问这个仿真软件是什么呀

是指的画图软件么 Frizing
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-8 00:43 , Processed in 0.039595 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表