ADKeyboard模拟按键模块

概述

ADKeyboard模块让你使用1路模拟口即可读取5个按键的状态,为Arduino节约IO口。 配合Arduino传感器扩展板可以完成使用多个按钮进行互动的作品。

技术规格

引脚输出图

链接示意图

示例代码


    //ADKeyboard Module
    //Developed by DFRobot.com
    //Last modified 30/11/2011
    //Version 1.0
    int adc_key_val[5] ={600,650, 700,  800, 900 };
    int NUM_KEYS = 5;
    int adc_key_in;
    int key=-1;
    int oldkey=-1;
    void setup()
    {
      pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat
      Serial.begin(9600); // 9600 bps
    }
    void loop()
    {
      adc_key_in = analogRead(0);    // read the value from the sensor
      digitalWrite(13,LOW);
      key = get_key(adc_key_in);  // convert into key press

      if (key != oldkey)   // if keypress is detected
       {
        delay(50);  // wait for debounce time
        adc_key_in = analogRead(0);    // read the value from the sensor
        key = get_key(adc_key_in);    // convert into key press
        if (key != oldkey)
        {
          oldkey = key;
          if (key >=0){
            digitalWrite(13,HIGH);
            switch(key)
            {
               case 0:Serial.println("S1 OK");
                      break;
               case 1:Serial.println("S2 OK");
                      break;
               case 2:Serial.println("S3 OK");
                      break;
               case 3:Serial.println("S4 OK");
                      break;
               case 4:Serial.println("S5 OK");
                      break;
            }
          }
        }
      }
     delay(100);
    }
    // Convert ADC value to key number
    int get_key(unsigned int input)
    {
        int k;
        for (k = 0; k < NUM_KEYS; k++)
        {
          if (input < adc_key_val[k])
         {
                return k;
            }
       }
           if (k >= NUM_KEYS)k = -1;  // No valid key pressed
           return k;
    }

Mind+(基于Scratch3.0)图形化编程

1、下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装

2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程

3、“扩展”中选择“主控板”中的“Arduino Uno”。 详细教程:Mind+基础wiki教程-加载扩展库流程

4、进行编程,程序如下图:

5、菜单“连接设备”,“上传到设备”

编程原则: 根据每个按钮按下显示的模拟值差值区间进行判断,可以取中值。 例如S1按下串口输出580,S2按下串口输出620,则取中间值600,即小于600就认为是S1按下了,大于600则认为是S2按下了。 以此类推S3 S4 S5的模拟值区间。

效果

打开串口监视器,按下不同的按钮输出对应的编号

<File:nextredirectltr.png>购买 ADKeyboard 模拟5按键模块(SKU: DFR0075)