8039| 0
|
[项目] 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使用。 下面是连线图 代码编译通过 [mw_shl_code=applescript,true]/********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(); } [/mw_shl_code] lib.rar MP3.rar 视频晚分享 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed