使用 MPR121 将(几乎)任何表面变成触摸按钮
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
MPR121是一款12针触摸传感器,利用IC的电容功能。
这个IC有2个库,我个人更喜欢使用裸导电的。
https://github.com/BareConductive/mpr121
该芯片有一个触发引脚,可让您知道其中一个引脚被触摸或释放,从而为您提供极好的响应时间,并为您提供使用中断而不是扫描循环中的状态的选项——如示例所示.唯一的缺点是IC的所有12个IO引脚只有一个触发引脚。I2C地址可以设置ADDR 是 I2C 地址选择引脚。默认情况下,对于 0x5A 的 I2C 地址,使用 100K 电阻将其下拉至地。您还可以将其连接到 0x5B 地址的 3Vo 引脚、地址 0x5C 的 SDA 引脚或地址 0x5D 的 SCL 此设置适用于 adafruit 板,一些克隆板具有不同的 I2C 地址集和默认值。如果您不知道适合您的电路板的 I2C 扫描仪,您可以使用 I2C 扫描仪。
连接电路板非常简单,如图所示。
请注意一件事 - 大多数分线板电源的额定电压为 3.3V,不要使用 5V 为其供电。数据电平电压怎么样——好吧,由于 i2c 硬件的性质,你不会用 arduino 的 5V 损坏 MPR121,但是如果你确实注意到读取它的问题,或者甚至在总线上找不到它——尝试一个逻辑2. 之间的电平转换器。
多年来,我用这个伟大的 IC 做了一些事情。我创造的第一件事是为我的孩子制作的游戏,顶部的字母连接到 2 个 MPR121,每次触摸都会触发我说这封信的 mp3 记录名字。
同时我还尝试了裸导电涂料 - 这很有趣,并且与 MPR121 配合使用效果很好。
代码
- 引脚 0/1 上的简单开/关 LED
引脚 0/1 上的简单开/关 LEDArduino
它显示了打开和关闭连接在引脚 3 上的 LED 的选项。使用 mpr121 的引脚 0 触摸打开,释放 1 时关闭。
#include#include #define numElectrodes 2#define LEDPIN 3void setup(){ Serial.begin (115200); Serial.println("系统启动"); pinMode(LEDPIN,输出); Wire.begin(); // 0x5C 是裸触摸板上的 MPR121 I2C 地址 if (!MPR121.begin(0x5A)) { Serial.println("error setting up MPR121"); switch (MPR121.getError()) { case NO_ERROR:Serial.println("无错误");休息; case ADDRESS_UNKNOWN:Serial.println("地址不正确");休息; case READBACK_FAIL:Serial.println("回读失败");休息; case OVERCURRENT_FLAG:Serial.println("REXT 引脚上的过电流");休息; case OUT_OF_RANGE:Serial.println("电极超出范围");休息; case NOT_INITED:Serial.println("未初始化");休息;默认值:Serial.println("未知错误");休息; } 而(1); } MPR121.setInterruptPin(4); MPR121.setTouchThreshold(40); MPR121.setReleaseThreshold(20); MPR121.updateTouchData();}void loop(){ if (MPR121.touchStatusChanged()) { MPR121.updateTouchData(); for (int i =0; i
示意图
制造工艺