Arduino程序设计(十三)触摸按键实验(TTP223)

触摸按键实验

  • 前言
  • 一、TTP223触摸按键模块
  • 二、触摸按键控制LED
  • 二、触摸按键状态检测


前言

  • 本文介绍触摸按键控制LED的原理及实验,主要内容有:
  • 1、介绍TTP223触摸按键模块;
  • 2、触摸按键控制LED;
  • 3、触摸按键状态检测。

一、TTP223触摸按键模块

  • 1、模块介绍:
  • 该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。常态下,模块输出低电平,模式为低功耗模式;当用手指触摸相应位置时,模块会输出高电平,模式切换为快速模式;当持续12秒没有触摸时,模式又切换为低功耗模式。可以将模块安装在非金属材料如塑料、玻璃的表面,另外将薄薄的纸片(非金属)覆盖在模块的表面,只要触摸的位置正确,即可做成隐藏在墙壁、桌面等地方的按键。该模块可以让你免除常规按压型按键的烦恼。
  • 2、模块特性:
    在这里插入图片描述
  • 3、模块参数:
    在这里插入图片描述

二、触摸按键控制LED

  • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

  • (2)触摸按键控制LED的电路图,如下图所示:
    在这里插入图片描述

  • (3)实现功能:触摸按键控制LED灯,触摸时,LED点亮,不触摸时,LED熄灭。

代码实现:

//TTP223电容式触摸按键实验
//触摸按键控制LED灯,触摸时,LED点亮,不触摸,LED熄灭
//机械按键需要消抖,触摸按键灵敏度高不需要消抖#define TOUCH 7
#define LED 13bool TOUCH_state = 0;void setup()
{pinMode(TOUCH, INPUT);pinMode(LED, OUTPUT);digitalWrite(LED, LOW);
}void loop()
{TOUCH_state = digitalRead(TOUCH);if (TOUCH_state == 1){digitalWrite(LED, HIGH);}else{digitalWrite(LED, LOW);}
}
  • (4)实现现象:

  • ① 不触摸时
    在这里插入图片描述

  • ② 触摸时
    在这里插入图片描述

注意:图中红色箭头位置为D13引脚对应的LED灯。

二、触摸按键状态检测

  • (1)本实验采用Arduino UNO R3开发板及自主搭建电路的方式,实现预设功能。

  • (2)触摸按键状态检测的电路图,如下图所示:
    在这里插入图片描述

  • (3)实现功能:

  • ① 触摸按键单击时,LED亮100ms后熄灭(闪烁一次),串口打印"singleclick";

  • ② 触摸按键双击时,LED亮300ms,熄灭300ms,然后,LED亮300ms,熄灭300ms(闪烁两次),串口打印"doubleclick";

  • ③ 触摸按键长按时,第一次长按,LED常亮,串口打印"longclick"和"start",第二次长按,LED熄灭,串口打印"longclick"和"end"。

  • (4)注意:编译代码前,需要下载安装OneButton库文件,并在程序中添加 #include <Arduino.h> 和 #include <OneButton.h> 两个头文件 。

//触摸按键单击、双击、长按的状态检测实验
/*实验现象:① 触摸按键单击时,LED亮100ms后熄灭(闪烁一次),串口打印"singleclick";② 触摸按键双击时,LED亮300ms,熄灭300ms,然后,LED亮300ms,熄灭300ms(闪烁两次),串口打印"doubleclick";③ 触摸按键长按时,第一次长按,LED常亮,串口打印"longclick"和"start",第二次长按,LED熄灭,串口打印"longclick"和"end"。*/#include <Arduino.h>
#include <OneButton.h>#define PIN_INPUT 7
#define PIN_LED 13OneButton button(PIN_INPUT, false);//单击
void click()
{Serial.println("singleclick");for (size_t i = 0; i < 2; i++){digitalWrite(PIN_LED, !digitalRead(PIN_LED));delay(100);}
}//双击
void doubleclick()
{Serial.println("doubleclick");for (size_t i = 0; i < 4; i++){digitalWrite(PIN_LED, !digitalRead(PIN_LED));delay(300);}
}//长按
void longclick()
{Serial.println("longclick");digitalWrite(PIN_LED, !digitalRead(PIN_LED));if (digitalRead(PIN_LED))Serial.println("start");elseSerial.println("end");
}void setup()
{Serial.begin(115200);//打开串口pinMode(PIN_LED, OUTPUT);//设置LED引脚为输出模式button.attachClick(click);//关联单击事件button.attachDoubleClick(doubleclick);//关联双击事件button.attachLongPressStart(longclick);//关联长按事件
}
void loop()
{button.tick();//按键扫描delay(10);
}
  • (5)实现现象(部分显示):
    在这里插入图片描述
  • 说明
  • 1、上图为第一次长按后,串口打印"longclick"和"start",同时D13对应的LED点亮;
  • 2、图中红色箭头对应的分别是串口打印界面和D13引脚连接的LED灯。

参考资料1: 【雕爷学编程】Arduino动手做(13)—TTP223B电容式触摸按键模块代码编程+仿真编程+图形编程的三合一测试
参考资料2: 「雕爷学编程」Arduino动手做(13)——触摸开关模块
参考资料3: Arduino程序设计(五)按键中断+按键状态检测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115063.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring学习笔记2 Spring的入门程序

Spring学习笔记1 启示录_biubiubiu0706的博客-CSDN博客 Spring官网地址:https://spring.io 进入github往下拉 用maven引入spring-context依赖 写spring的第一个程序 引入下面依赖,好比引入Spring的基本依赖 <dependency><groupId>org.springframework</groupId&…

不要再滥用可选链运算符(?.)啦!

可选链运算符(?.)&#xff0c;大家都很熟悉了&#xff0c;直接看个例子&#xff1a; const result obj?.a?.b?.c?.d 很简单例子&#xff0c;上面代码?前面的属性如果是空值&#xff08;null或undefined&#xff09;&#xff0c;则result值是undefined&#xff0c;反之…

【漏洞复现】广联达OA漏洞合集(信息泄露+SQL注入+文件上传)

文章目录 声明广联达OA存在信息泄露一、漏洞概述二、漏洞复现三、修复建议广联达Linkworks办公OA SQL注入漏洞后台文件上传漏洞一、产品简介二、漏洞概述三、复现环境四、修复建议 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工…

安装Anaconda与pytorch,在IDEA中配置环境进行编程

1.官网下载与自己python版本匹配的Anaconda(注意&#xff0c;要想成功安装pytorch&#xff0c;python版本也要对应pytorch的相关版本) Anaconda官网最新版本 与自己python版本不否请查找自己版本anaconda版本对应 清华大学镜像下载 2.安装时勾选添加环境变量或者手动添加&am…

2023上半年薪资报告出炉!人均月入过万?!

最近&#xff0c;大家都有听到经济回暖的消息吧&#xff1f;经过三年口罩大考之后&#xff0c;2023年上半年各行各业都迎来复苏&#xff0c;关于职场的话题讨论也不绝于耳。 现在就业环境如何&#xff1f;哪些行业更有前途&#xff1f;大家在求职时是选择一线城市还是回二、三…

深入探究序列化与反序列化:原理、应用和最佳实践

目录 什么是对象的序列化和反序列化序列化步骤反序列化步骤案例演示Java中哪些字段不能序列化序列化与反序列化的重要性序列化与反序列化的应用场景 什么是对象的序列化和反序列化 序列化&#xff08;Serialization&#xff09;是指将对象转化为字节流的过程&#xff0c;以便于…

干货 | 中国石化化工高端新材料价格体系模型构建

以下内容整理自2023年夏季学期大数据能力提升项目《大数据实践课》同学们所做的期末答辩汇报。 随着石化行业市场日趋饱和&#xff0c;市场竞争日益激烈&#xff0c;企业利润空间不断被压缩&#xff0c;大多数石化企业急需转型开拓新市场&#xff0c;化工原料价格的波动对于石化…

4、wireshark使用教程

文章目录 一、wireshark简介二、环境三、wireshark抓包三、wireshark过滤器使用 一、wireshark简介 Wireshark是使用最广泛的一款「开源抓包软件」&#xff0c;常用来检测网络问题、攻击溯源、或者分析底层通信机制。 Wireshark抓包原理&#xff1a; 单机情况&#xff1a;电脑…

ESP32主板-MoonESP32

产品简介 Moon-ESP32主板&#xff0c;一款以双核芯片ESP32-E为主芯片的主控板&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;低功耗&#xff0c;板载LED指示灯&#xff0c;引出所有IO端口&#xff0c;并提供多个I2C端口、SPI端口、串行端口&#xff0c;方便连接&#xff0c;…

基于PHP语言研发的抖音矩阵系统源代码开发部署技术文档分享

一、概述 本技术文档旨在介绍抖音SEO矩阵系统源代码的开发部署流程&#xff0c;以便开发者能够高效地开发、测试和部署基于PHP语言的开源系统。通过本文档的指引&#xff0c;您将能够掌握抖音SEO矩阵系统的开发环境和部署方案&#xff0c;从而快速地构建出稳定、可靠的短视频S…

输电线路故障诊断(Python代码,逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断)

效果视频&#xff1a;输电线路故障诊断&#xff08;Python代码&#xff0c;逻辑回归、决策树、随机森林、XGBoost和支持向量机五种不同方法诊断&#xff09;_哔哩哔哩_bilibili 项目文件 code.py装载的是英文版本&#xff0c;图上显示英文标签及坐标&#xff0c;Chinese.py装载…

【Unity】ShaderGraph应用(浮动气泡)

【Unity】ShaderGraph应用(浮动气泡) 实现效果 一、实现的方法 1.使用节点介绍 Position&#xff1a;获取模型的顶点坐标 Simple Noise:简单的噪声&#xff0c;用于计算顶点抖动 Fresnel Effect&#xff1a;菲涅耳效应&#xff0c;用于实现气泡效果 计算用节点 Add&…