gada888 发表于 2019-10-31 11:51:41

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]
查看完整版本: MPR121和arduino的那点事