MPR121和arduino的那点事
先说主题,就是做一个触控互动玩具。3D打印部分未列出,不在这次展示中。选择的主控是arduino,主要模块是mpr121
MPR121芯片可以处理多达12个独立的触摸板。MPR121只支持I2C,几乎可以用任何微控制器实现。您可以使用ADDR引脚选择4个地址中的一个,一个I2C 2线总线上共有48个电容触摸板。使用该芯片比使用模拟输入进行电容式感应要容易得多:它可以处理所有的滤波器,并且可以配置为更多/更少的灵敏度。MPR121-12通道独立电容式触摸电路板实物截图:
主控我用的是arduino lilypad
DFPlayer mini和128M SD卡一个
8偶小喇叭一只
因为mpr121的VCC是要求输入3.3V,而arduino lilypad VCC是输出5V,因此需要一个level shifter。把5V转为3.3V。给mpr121使用。
下面是连线图
代码编译通过
/********made by gada888***China Cool Man****2019-10-31****/
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
#include <MPR121.h>
#define nums 2
void setup () {
Serial.begin (9600);
mp3_set_serial (Serial);
delay(1);
mp3_set_volume (20); // Volume 0 ~ 30
MPR121.begin(0x5a); // MPR121 touch address 0x5a
MPR121.setInterruptPin(4);
MPR121.setTouchThreshold(40);
MPR121.setReleaseThreshold(15);
MPR121.updateTouchData();
}
void loop () {
if (MPR121.touchStatusChanged()) {
MPR121.updateTouchData();
if (MPR121.isNewTouch(0))
mp3_play (1);
if (MPR121.isNewTouch(1))
mp3_play (2);
}
DeMPR121();
}
void DeMPR121() {
MPR121.updateBaselineData();
MPR121.updateFilteredData();
Serial.print("Count: ");
for (int i = 0; i < 2; i++) {
Serial.print(MPR121.getBaselineData(i) - MPR121.getFilteredData(i), DEC);
if (i < 2) Serial.print(" ");
}
Serial.println();
}
视频晚分享
页:
[1]