Fermion: 10位AD按键板

简介

10位AD按键板可以帮你非常容易的驱动DFPlayer PRODFPlayer Mini语音录放模块,不必再用繁琐的代码和寻找各种阻值的电阻。10位AD按键板还附带20个精美的按键帽,手感舒适,集成在应用中也非常漂亮。通过两边的焊盘,也可以接自己喜欢的按键,扩展性极强。同时10位AD按键板可以作为主控的AD按键输入,通过一个模拟口就可以扩展出10个按键。

应用场景

技术规格

引脚说明

按键 串联电阻 按键 串联电阻
K0 0R K1 3K
K2 6.2K K3 9.1K
K4 15K K5 24K
K6 33K K7 51K
K8 100K K9 220K

原理图

使用教程

⚠注意:用来驱动驱动DFPlayer PRO、DFPlayer Mini、语音录放模块时,按键板请不要接VCC,因为这些模块内部已经上拉了22K

准备

接线图

样例代码1 - 读取数据

按下按键,串口打印相应的值。

#define ADPIN A0      //读取引脚

void setup() {
  Serial.begin(115200);
}

void loop() {
  // read the value from the sensor:
  Serial.println(analogRead(ADPIN));
  delay(10);
}

结果

DFR0792result1

样例代码2 - 读取按键

按下按键,串口打印相应的按键值。

#define RESOLUTION 10   //ADC分辨率
#define MAXVALUE pow(2,RESOLUTION)  //分辨率对应的值
#define PRECISION 10   //允许误差
#define ADPIN A0      //读取引脚

uint32_t ADKeyVal[10] = {0};   //按键对应的键值
uint32_t ADCKeyIn = 0;


void setup() {
  Serial.begin(115200);
  ADKeybegin();
}

void loop() {
  ADCKeyIn = analogRead(ADPIN);
  if(ADCKeyIn < (MAXVALUE-PRECISION)){
    Serial.print("K = ");
    Serial.println(getKey());
  }
  delay(10);
}


void ADKeybegin(){
  float RESValue[10] = {0, 3, 6.2, 9.1, 15, 24, 33, 51, 100, 220};  //电阻阻值
  for(uint8_t i = 0; i < 10; i++){
    ADKeyVal[i] = RESValue[i]/(RESValue[i]+22)*MAXVALUE;
  }
}

int8_t getKey(){
  for(uint8_t i = 0; i < 10;i++){
    if(ADCKeyIn > ADKeyVal[i]){
      if((ADCKeyIn - ADKeyVal[i]) < PRECISION){
        return i;
      }
    } else{
      if((ADKeyVal[i] - ADCKeyIn) < PRECISION){
        return i;
      }
    }
  }
  return -1;
}

结果

DFR0792result2

DFPlayer PRO接线

按键 串联电阻 点击 长按
K0 0R 暂停&播放
K1 3K 上一曲 音量+
K2 6.2K 下一曲 音量-
K3 9.1K 播放模式切换
K4 15K 快进10S
K5 24K 暂停&播放 下一曲
K6 33K 音量- 音量-
K7 51K 音量+ 音量+
K8 100K 快退10S
K9 220K 播放第一首,音量设置为10

DFPlayer Mini接线

语音录放模块接线

按键 串联电阻 点击 长按
K0 0R 暂停&播放
K1 3K 上一曲 音量+
K2 6.2K 下一曲 音量-
K3 9.1K 播放模式切换
K4 15K REC
K5 24K PLAY
K6 33K 音量- 音量-
K7 51K 音量+ 音量+
K8 100K 工作模式切换
K9 220K 删除当前播放文件

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接