在本文中,我们将学习如何使用 Arduino 构建基于触控的变色植物。当您触摸植物时,植物花瓶的颜色会自动改变。这是一个不错的室内装饰项目,也是初学者构建和学习一些有趣东西的小爱好项目。
现在,当我们说基于触摸的植物时,可能会出现一个常见问题,即电子电路如何通过植物检测到人类的触摸。如今,触摸感应设备无处不在。我们可以在智能手机和不同类型的电器中看到触摸屏。触摸传感器只是一个开关,当有人触摸触摸传感器时,传感器会关闭电子电路并允许电流流动。
触摸传感器类型
从手机到智能自动售货机,如今,我们可以在所有现代设备中找到触摸传感器。触摸传感器主要有两种类型,即 电阻式触摸式和电容式触摸式。类型名称本身就表明了操作方式和工作原理。
电阻式触摸传感器:顾名思义,电阻式触摸传感器的工作原理是基于导体的电阻。当人体发生触摸时,导体的电阻率会发生变化,也会产生电压变化,这种电压变化会被电路检测到,事情就会发生。
电容式触摸传感器:这是最常用的触摸传感器类型。这仅仅是因为我们可以一次执行多个触摸。电容式触摸传感器基于电容的变化工作,即当我们触摸传感器时,电路的电容发生变化,这将被检测为触摸。现在让我们详细讨论一下我们的电路。
如何检测植物的触摸?
我们厂的电路也是基于电容式触摸传感器。也就是说,我们将一根电线连接到我们的植物上,使其像电极一样,然后当我们触摸植物时,由于我们身体的存在,电容会发生变化,这将被我们的电路检测到。说到电路,我们需要一个微控制器来检测电容的变化并控制整个系统。在我们的例子中,微控制器是 Arduino。
制作我们的变色植物花瓶所需的材料
阿杜诺
共阴极RGB LED
1兆欧电阻(棕色、黑色、绿色)
连接线
有基地的植物
普通PCB
基于触摸的变色 Arduino Plant 电路图
该项目中使用的完整电路图如下所示。该电路是使用 Easy EDA 创建的,如您所见,它是一个非常简单的电路。
首先,在 Arduino 引脚 2 和引脚 4 之间连接一个兆欧电阻。然后将一根长线(铜)连接到引脚 4。这条线充当电极或触摸引线,然后将 RGB LED 公共接地连接到地,红色连接到Arduino的D5和D6的绿色,D7的蓝色,最后将电线连接到植物体上,就是这样。连接后我的硬件设置如下所示。
我已将 RGB LED 连接到一个普通的穿孔板上(如下图所示),最后将底座(玻璃)放在 PCB 上方。而已。
用于检测植物触摸并更改 LED 颜色的 Arduino 程序
此项目中使用的完整程序可在此页面底部找到。要检测植物的电容,我们需要使用电容传感器库。您可以从以下链接下载 Arduino 电容式传感器库。
下载 Arduino 电容式触摸传感器库
下载库并将其添加到您的 Arduino IDE 后,将该库包含到您的代码中。该库有助于读取 Arduino 引脚的电容。
#include <电容传感器.h>
我们已经在引脚 2 和 4 之间连接了电阻,因此我们需要测量引脚 4 中的电容,为此,定义引脚。
电容传感器 cs_2_4 = 电容传感器(2,4);
电容传感器切换微控制器引脚,即它将引脚发送到新状态,然后等待接收引脚更改为与发送引脚相同的状态。在设置部分,我为 LED 和传感器引线定义了不同的引脚。
pinMode(4,输入); pinMode(5,输出); pinMode(6,输出); pinMode(7,输出);
在循环部分借助数字读取,我们可以读取引脚 4 的状态,并将值存储在变量“r”中。
r = 数字读取(4); if (r == HIGH && p == LOW && millis() - time > debounce) { cnt++; 如果(状态 == 高) 状态 = 低; if(cnt == 1){ digitalWrite(5, HIGH); 数字写入(6,低); 数字写入(7,低); } if(cnt == 2){ digitalWrite(5, LOW); 数字写入(6,高); 数字写入(7,低); } if(cnt == 3){ digitalWrite(5, LOW); 数字写入(6,低); 数字写入(7,高); } if(cnt > 3){ cnt = 1; } p = r;
每次检测到触摸时,它都会增加计数,我根据增加的数字给出了不同的条件以不同的颜色点亮。
代码准备好后,只需将其上传到您的 Arduino 板并将 LED 放在您的花瓶下。在这里,我使用的是玻璃花瓶,一切准备就绪后,我的设置看起来像这样。
#include <电容传感器.h>
电容传感器 cs_2_4 = 电容传感器(2,4);// 引脚 2 和 4 之间有 1M 电阻,引脚 4 是传感器引脚,添加一根导线和
诠释cnt = 0;
整数 = 2;
诠释= 4;
诠释状态=高;
诠释r;
诠释 p = 低;
长时间 = 0;
长时间去抖 = 200;
无效设置()
{
pinMode(4,输入);
/* LED 输出 */
pinMode(5,输出);
pinMode(6,输出);
pinMode(7,输出);
}
无效循环()
{
r = 数字读取(4);
if (r == HIGH && p == LOW && millis() - time > debounce) {
cnt++;
如果(状态 == 高)
状态=低;
别的
时间=毫秒();
}
如果(cnt == 1){
数字写入(5,高);
数字写入(6,低);
数字写入(7,低);
}
如果(cnt == 2){
数字写入(5,低);
数字写入(6,高);
数字写入(7,低);
}
如果(cnt == 3){
数字写入(5,低);
数字写入(6,低);
数字写入(7,高);
}
如果(cnt > 3){
cnt = 1;
}
p = r;
}
全部0条评论
快来发表一下你的评论吧 !