【雕爷学编程】Arduino动手做(13)---TTP223B电容式触摸模块之通过串口监视器检测电容触摸键的状态与控制继电器

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验十三:TTP223 触摸按键模块 自锁 点动 电容式 开关 单路改造SUNLEPHANT

在这里插入图片描述
TTP223B电容触摸按键模块几个实验
一、实验环境
1、实验所需硬件清单——
Arduino Uno开发板 X1
杜邦线 若干(备了10条)
LED发光二极管(蓝色)X1
220欧姆限流电阻(1/8W)x1
低电平触发单路5V继电器模块X1
TTP223B电容触摸按键模块(四种)X4
Proto Shield 原型扩展板(带mini面包板)X1
按键开关模块(下拉电阻与上拉电阻款各1只)X2

在这里插入图片描述

五、实验七:电容触摸键按下继电器吸合(LED亮),再按下释放(LED灭)
1、实验七参考开源代码(Arduino):

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验七:电容触摸按下继电器吸合(LED亮),再按下释放(LED灭)接线:D13板载LED灯触摸模块    UnoVCC        VccGND        GNDSIG         D2继电器模块   UnoVCC        VccGND        GNDIN         D8
*/// 引脚定义
int LED = 13;
int Relay = 8;//继电器接D8
int Touch_Sensor = 2;//触摸模块接D2
int condition = 0;//记录传感器的状态,标识它是否被触摸
int state = 0; //记录LED和继电器的状态,开启或关闭void setup() {pinMode(LED, OUTPUT);//触摸传感器是输入,继电器和LED引脚是输出pinMode(Relay, OUTPUT);pinMode(Touch_Sensor, INPUT);
}void loop() {condition = digitalRead(2); // 触摸传感器在触摸时将逻辑0更改为1//digitalRead()函数读取该值,并且将值存储在变量condition中。if (condition == 1) {delay(500); // 使用去抖动延迟500毫秒,用于确认单点触摸if (condition == 1) {state = ~state; //更改开关的状态(自锁反转)digitalWrite(LED, state);digitalWrite(Relay, state);}}
}

2、实验场景图
在这里插入图片描述

3、实验八开源仿真编程(Linkboy V4.2)

在这里插入图片描述
4、实验九开源图形编程(Mind+、编玩边学)

在这里插入图片描述
六、实验十:通过串口监视器检测电容触摸键的状态
1、实验十参考开源代码(Arduino):

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验十:通过串口监视器检测电容触摸键的状态接线:触摸模块    UnoVCC        VccGND        GNDSIG         D2
*/#define TOUCH_SIG 2//获取状态
boolean get_touch() 
{boolean touch_stat = 0;touch_stat = digitalRead(TOUCH_SIG); //读入状态return touch_stat;
}void setup() 
{pinMode(TOUCH_SIG, INPUT); //设置2号端口为输入模式Serial.begin(115200);
}void loop(){boolean touch_stat;Serial.print("\nrunning\nTouch Stat - ");touch_stat = get_touch();Serial.print(touch_stat);//串口打印触摸按键状态值delay(1000);//延时1000毫秒
}

2、实验十的串口反馈情况

在这里插入图片描述
七、实验十一:Arduino CapacitiveSensor电容式触摸传感器(软件实现)
1、安装需的CapacitiveSensor库
(1)打开IDE,下拉点开管理库

在这里插入图片描述
(2)在搜索栏中搜索CapacitiveSensor

在这里插入图片描述
(3)安装好是这样

在这里插入图片描述
2、实验十一参考开源代码(Arduino):

/*【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)实验十一:Arduino CapacitiveSensor电容式触摸传感器安装库:IDE-工具-管理库-搜索CapacitiveSensor-安装接线:引脚2和4之间接1-10M电阻,在引脚8上连接杜邦线(触摸端)
*/#include <CapacitiveSensor.h> //调用函数库
CapacitiveSensor cs_2_4 = CapacitiveSensor(2, 4); //设置发射脚和接收脚
//引脚2和4之间的1-10M电阻,在引脚4上连接杜邦线(触摸端)
unsigned long csSum;void setup() {Serial.begin(9600);
}void loop() {CSread();
}void CSread() {long cs = cs_2_4.capacitiveSensor(120); //a: 传感器分辨率设置为120if (cs > 100) { //b: 任意数csSum += cs;Serial.println(cs);if (csSum >= 3600) //c: 此值是阈值,高值表示触发时间更长{Serial.print("Trigger: ");//串口输出触发数值Serial.println(csSum);if (csSum > 0) {csSum = 0;  //重置}cs_2_4.reset_CS_AutoCal(); //停止读取}}else {csSum = 0; //读数错误导致超时}
}

3、实验串口输出

在这里插入图片描述

4、实验场景图
在这里插入图片描述

5、实验说明——
Arduino除了接受数字端口的数字信号,唯一能检测的模拟物理量就是电压。任何模拟传感器的检测值几乎都要通过相关电路转化成电压值,再输入 arduino的模拟端口进行模数转换。电容值就需要相对更复杂和昂贵的电路转化为电压值,才能被Arduino检测,而对很多物理过程的检测,都可以很方便可靠地通过来检测电容值来实现,其中最常用的地方就是触摸传感器。风靡一时的MaKey MaKey就是个例子。这里通过CapacitiveSensor库,使用一个大电阻、一段导线和二个端口,不需要其他元器件的电容触摸触发方法。这个方法的思路是,首先把一个数字端口设成低电位,并打开arduino的内部上拉电阻,开始计算这个端口到达高电位所需要的时间。而这个时间与此端口的对地电容值有关,电容越大,时间越长。在硬件上只需要在一个端口上连一根导线即可。用手指触摸这段导线的裸露端,就会导致电容变化,arduino可以通过上述方法检测这个变化。如果要增加灵敏度,可以在导线上连一片锡箔。为防止你手上有强静电击穿芯片,可以在锡箔上盖一薄层绝缘纸。

6、CapacitiveSensor库包含三个主要方法和一些实用程序方法——
(1)CapacitiveSensor CapacitiveSensor(byte sendPin, byte receivePin)
CapacitiveSensor创建库的实例(请注意大写字母,这与下面的方法不同)

(2)long capacitiveSensorRaw(byte samples)
CapacitySensorRaw需要一个参数sample,并以任意单位返回一个包含绝对电容的长整数。可以使用samples参数来增加返回的分辨率,但要以降低性能为代价。返回的值不会在样本数量上取平均值,并且会报告总值。如果电容值超过CS_Timeout_Millis的值(以毫秒为单位),则CapacitySensorRaw将返回-2。CS_Timeout_Millis的默认值是2000毫秒(2秒)。

(3)long capacitiveSensor(byte samples)
CapacitySensor需要一个参数,对其进行采样,并以任意单位返回包含加法(感测)电容的长整数。CapacitySensor会跟踪最低的基线(未检测到)电容,并从检测到的电容中减去该值,因此在未检测到的情况下应报告一个较低的值。以CS_Autocal_Millis确定的间隔重新校准基线值。默认值为200000毫秒(20秒)。可以通过使用set_CS_AutocaL_Millis()方法将CS_Autocal_Millis设置为较高的值来关闭此重新校准。

(4)void set_CS_Timeout_Millis(unsigned long timeout_millis)
set_CS_Timeout_Millis方法可用于设置CS_Timeout_Millis值,该值确定如果接收(检测)引脚未能在与发送引脚相同的方向上切换,则该方法将花费多长时间。超时是必需的,因为除非提供超时,否则while循环将锁定草图。CS_Timeout_Millis的默认值为2000毫秒(2秒)。

(5)void reset_CS_AutoCal()
reset_CS_AutoCal可用于强制立即校准电容传感器功能。

(6)void set_CS_AutocaL_Millis(unsigned long autoCal_millis)
set_CS_AutocaL_Millis(unsigned long autoCal_millis)方法可用于设置电容传感器功能的超时间隔。通过使用set_CS_AutocaL_Millis将CS_AutocaL_Millis设置为“ 0xFFFFFFFF”,可以关闭重新校准。

7、实验场景图

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(12)---霍尔磁场传感器模块5

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

企业中商业智能BI,常见的工具和技术

商业智能&#xff08;Business Intelligence&#xff0c;简称BI&#xff09;数据可视化是通过使用图表、图形和其他可视化工具来呈现和解释商业数据的过程。它旨在帮助组织更好地理解和分析他们的数据&#xff0c;从而做出更明智的商业决策。 常见的商业智能数据可视化工具和技…

Zip压缩包有密码,如何删除?

Zip压缩包设置设置了密码&#xff0c;想要删除密码&#xff0c;除了将压缩包解压出来之后再将文件压缩为不带密码的压缩文件以外&#xff0c;还有一种删除密码的方法。设置方法如下&#xff1a; 右键点击zip文件&#xff0c;找到打开方式&#xff0c;以Windows资源管理器方式打…

Django笔记之数据库函数之日期函数

日期函数主要介绍两个大类&#xff0c;Extract() 和 Trunc() Extract() 函数作用是提取日期&#xff0c;比如我们可以提取一个日期字段的年份&#xff0c;月份&#xff0c;日等数据 Trunc() 的作用则是截取&#xff0c;比如 2022-06-18 12:12:12&#xff0c;我们可以根据需求…

SCAU操作系统知识点之(八)虚拟内存

1、虚拟地址概念&#xff0c;实地址概念 实存储器&#xff08;实存&#xff09;&#xff1a;内存 虚存储器&#xff08;虚存&#xff09;&#xff1a;磁盘 虚拟地址&#xff1a;在虚拟内存中分配给某一位置的地址&#xff0c;它使得该位置可被访问&#xff0c;就好像是主内的一…

【JavaWeb】使用聚合数据短信API发送短信

一、准备工作 聚合数据 首先在聚合数据官网中进行注册 然后申请短信API服务&#xff0c;初次使用赠送5次 申请成功之后&#xff0c;AppKey特别重要&#xff0c;不要让别人知道&#xff0c;然后再点击模板 点击模板&#xff0c;填写模板内容&#xff0c;要申请通过&#xff0c…

收藏!2023国内外高质量短信平台一览

众所周知&#xff0c; 短信群发是一种快速、高效、低成本的营销手段&#xff0c;包括但不限于以下作用&#xff1a; 1、传递重要信息&#xff1a;短信群发可以快速传递企业、品牌、产品的信息&#xff0c;通过短信内容向潜在客户、用户、合作伙伴等发送最新的产品信息、活动信…

【新晋开源项目】聚合短信工具 Sms-Aggregation 加入 Dromara 开源社区

原创 wind dromara开源组织 2023-04-10 08:38 发表于四川 sms-aggregation 聚合短信发送工具 作者介绍 名称&#xff1a;wind dromara 开源组织成员&#xff0c;dromara/sms_aggregation 作者 java高级开发工程师&#xff0c;拥有丰富实战经验 个人空间&#xff1a;https:…

聚合短信API,手机验证登录

今天在项目中遇到了一个需要手机验证登录的需求&#xff0c;在这里简单的记录一下。聚合短信API&#xff0c;手机验证登录 首先需要在聚合平台里面进行公司资质认真 飞机票&#xff1a;https://www.juhe.cn/docs/api/id/54 认证成功后 点击我的接口 继续 进行短信模板审核 通…

用ChatGPT和六顶帽思考法帮助自己更好地决策和解决问题

当我们在解决复杂问题时&#xff0c;我们常常陷入单一视角的状态。创造性思维领域的先驱爱德华德博诺&#xff0c;提出了六顶帽思考法[1]&#xff0c;这意味着我们可以从六个不同的视角来思考一个问题&#xff0c;以实现高水平决策和解决问题。 每一顶“帽子”代表不同的视角。…

发现一个相当好的食物热量计算器!

厄&#xff0c;这两天没怎么吃东西&#xff0c;感觉瘦了些。特意去网上找了一个食物热量计算器&#xff0c;把自己吃的那点儿放进去算了一下&#xff0c;哇&#xff0c;远远低于每天实际消耗的热量&#xff01; 我琢磨着&#xff0c;怎么把这东西给下载下来用呢&#xff1f;

计算每日摄入量

1.每周减重 自重*0.7% 2.蛋白质量 每磅*&#xff08;0.8 ~1&#xff09; 3.坚持计划&#xff0c;多负荷训练 参考&#xff1a;https://zhuanlan.zhihu.com/p/44725585 每日总消耗量&#xff08;TDEE&#xff09;&#xff1a;由三个因素构成 1.摄食生热效应&#xff1a; …

每天坚持慢跑30分钟,一个月身体会有什么变化?

如果我告诉你身材不会有什么大变化&#xff0c;你是不是会绝望&#xff1f;但这是事实&#xff01; 保持坚持跑步习惯的人有两种&#xff1a; 第1种是纯粹热爱跑步&#xff0c;追求身体的长久健康&#xff0c;活力保持。 第2种是为了减肥&#xff0c;回归匀称标准的身材。 …

企业微信加密消息体_企业微信和个人微信有什么区别?个人微信可以接收企业微信消息吗?...

对于微信大家一定不陌生&#xff0c;它是当代集社交&#xff0c;支付等多种功能于一体的软件&#xff0c;使用人群多&#xff0c;范围广&#xff0c;但是现在随着公司业务的交流发展&#xff0c;越来越多人开始使用企业微信&#xff0c;那么你知道企业微信与个人微信有什么不同…

[NLP]LLM 训练时GPU显存耗用量估计

以LLM中最常见的Adam fp16混合精度训练为例&#xff0c;分析其显存占用有以下四个部分&#xff1a; GPT-2含有1.5B个参数&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB显存, 但是模型状态实际上需要耗费1.5B*1624GB. 比如说有一个模型参数量是1M&#xff0c;在…

power law

power law 中文有的叫幂率&#xff0c; 有的叫长尾理论。 一张图可以说明其思想&#xff1a; 再想power law和2:8原则是不是有一些相似。懒得算了&#xff0c;这两个都是形式化的描述&#xff0c;具体数字没有太大意义。 很奇妙的一点是&#xff0c;这个世界其实有时候就是这…

【Linux】进程信号之信号的处理

进程信号 三 一、信号的处理时机二、内核态与用户态1、内核态与用户态的转化2、重谈进程地址空间 三、信号的处理1、一般信号的处理流程2、捕捉信号的处理流程3、信号捕捉函数sigaction 一、信号的处理时机 在前面我们讲过信号产生和保存以后&#xff0c;我们知道进程对于产生…

power related

android的wake_lock介绍 拒绝Wakelock提高续航!安卓省电优化攻略 http://www.cnblogs.com/GnagWang/ ??who

2020-5-5

问题 D: 洁净无瑕 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 小X是一位富豪&#xff0c;酷爱收藏宝石。 在他的收藏柜中&#xff0c;从左到右依次摆放着各种形态不一的钻石。为了评价一颗钻石的美观程度&#xff0c;小X为每颗钻石赋予了一个洁净度ai。 小X…

day-5

1、模块 定义&#xff1a;模块&#xff0c;用一砣代码实现了某个功能的代码集合。 本质就是.py结尾的python文件&#xff08;变量&#xff0c;函数&#xff0c;类&#xff0c;逻辑&#xff09; 例&#xff1a;test.py 模块名&#xff1a;test类似于函数式…