arduino中Keypad 库函数介绍

arduino中Keypad 库函数介绍原文:https://playground.arduino.cc/Code/Keypad/Creation构造函数:Keypad(makeKeymap(userKeymap),row[],col[],rows,cols)constbyterows=4;//fourrowsconstbytecols=3;//threecolumnscharkeys[rows][cols]={{‘1′,’2′,’3’},{‘4′,’5′,’6’},{‘

大家好,又见面了,我是你们的朋友全栈君。

原文:https://playground.arduino.cc/Code/Keypad/

  • Creation

    构造函数:

    1. Keypad(makeKeymap(userKeymap), row[], col[], rows, cols)
    const byte rows = 4; //four rows
    const byte cols = 3; //three columns
    char keys[rows][cols] = {
      {'1','2','3'},
      {'4','5','6'},
      {'7','8','9'},
      {'#','0','*'}
    };
    byte rowPins[rows] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
    byte colPins[cols] = {8, 7, 6}; //connect to the column pinouts of the keypad
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );
    

    实例化一个键盘对象,该对象使用引脚5、4、3、2作为行引脚,并使用8、7、6作为列引脚。
    该键盘有4行3列,产生12个键。


    Functions

    void begin(makeKeymap(userKeymap))

    初始化内部键盘映射使其等于userKeymap
    [请参见文件->示例->键盘->示例-> CustomKeypad ]

    char waitForKey()

    此功能将永远等待,直到有人按下某个键。**警告:**它会阻止所有其他代码,直到按下某个键为止。这意味着没有闪烁的LED,没有LCD屏幕更新,除了中断例程外什么也没有。

    char getKey()

    返回按下的键(如果有)。此功能是非阻塞的。

    KeyState getState()

    返回任何键的当前状态。
    四个状态为“空闲”,“已按下”,“已释放”和“保持”。

    boolean keyStateChanged()

    New in version 2.0: Let’s you know when the key has changed from one state to another. For example, instead of just testing for a valid key you can test for when a key was pressed.

    2.0版的新功能:让我们知道密钥何时从一种状态更改为另一种状态。例如,您不仅可以测试有效的按键,还可以测试按键的按下时间。

    setHoldTime(unsigned int time)

    Set the amount of milliseconds the user will have to hold a button until the HOLD state is triggered.

    设置用户必须按住按钮直到触发HOLD状态的毫秒数。

    setDebounceTime(unsigned int time)

    Set the amount of milliseconds the keypad will wait until it accepts a new keypress/keyEvent. This is the “time delay” debounce method.

    设置键盘将等待直到接受新的keypress / keyEvent的毫秒数。这是使用“时间延迟”防止抖动方法。

    addEventListener(keypadEvent)

    Trigger an event if the keypad is used. You can load an example in the Arduino IDE.
    [See File -> Examples -> Keypad -> Examples -> EventSerialKeypad] or see the KeypadEvent Example code.

    如果使用键盘,则触发事件。您可以在Arduino IDE中加载示例。
    [请参阅文件->示例->键盘->示例-> EventSerialKeypad ]或查看KeypadEvent示例代码。

    For Now

    Here’s the list of multi-keypress functions and the keylist definition. I will complete their descriptions this weekend.

    • Key key[LIST_MAX]
    • bool getKeys()
    • bool isPressed(char keyChar)
    • int findInList(char keyChar)

    Example

    #include <Keypad.h>

    const byte ROWS = 4; //four rows
    const byte COLS = 3; //three columns
    char keys[ROWS][COLS] = {

    {‘1’,‘2’,‘3’},
    {‘4’,‘5’,‘6’},
    {‘7’,‘8’,‘9’},
    {’#’,‘0’,’*’}
    };
    byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the keypad
    byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the keypad

    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

    void setup(){

    Serial.begin(9600);
    }

    void loop(){

    char key = keypad.getKey();

    if (key != NO_KEY){

    Serial.println(key);
    }
    }

    [Get Code]


    FAQ

    • How do I use multiple Keypads?

    Keypad is a class. Therefore to use multiple Keypad, you must create an instance for each of them. In the example above, the Keypad instance keypad) was bound to the digital pins 2, 3, 4, 5, 6, 7 and 8.

    To add a Keypad bound to digital pins 9, 10, 11, 12, 13, 14, 15 and 16, you could create the following instance keypad2:

    Keypad是一个类。因此,要使用多个键盘,必须为每个键盘创建一个实例。在上面的示例中,小键盘实例小键盘)已绑定到数字引脚2、3、4、5、6、7和8。

    要添加绑定到数字引脚9、10、11、12、13、14、15和16的键盘,可以创建以下实例keyboard2

    const byte ROWS2 = 4; //four rows
    const byte COLS2 = 4; //four columns
    char keys2[ROWS2][COLS2] = {
      {'.','a','d','1'},
      {'g','j','m','2'},
      {'p','t','w','3'},
      {'*',' ','#','4'}
    };
    byte rowPins2[ROWS2] = {12, 11, 10, 9}; //connect to the row pinouts of the keypad
    byte colPins2[COLS2] = {16, 15, 14, 13}; //connect to the column pinouts of the keypad
    
    Keypad keypad2 = Keypad( makeKeymap(keys2), rowPins2, colPins2, ROWS2, COLS2 );
    

    And now it’s just a matter of using whatever function is wanted on each keypad:

    现在,只需使用每个键盘上需要的任何功能即可:

    //update instances and possibly fire funcitons
    void loop(){
      char key1 = keypad.getKey();
      char key2 = keypad2.getKey();
    
      if (key1 != NO_KEY || key2 != NO_KEY){
        Serial.print("You pressed: ");
        Serial.print(key1 != NO_KEY ? key1 : "nothing on keypad");
    	Serial.print(" and ");
        Serial.print(key2 != NO_KEY ? key2 : "nothing on keypad2");
        Serial.println(".");
      }
    }
    
    • How do I use setDebounceTime(unsigned int time)?

    在Arduino中,按照File-> Examples-> Keypad-> Examples-> DynamicKeypad的主菜单进行操作。打开草图后,找到setup(),您将看到:

void setup(){ 
    
  Serial.begin(9600; 
  digitalWrite(ledPin,HIGH); //打开LED。
  keyboard.addEventListener(keypadEvent); //添加事件监听器。
  keyboard.setHoldTime(500; //默认值是1000mS 
  keyboard.setDebounceTime(250; //默认值为50mS 
}

这表明去抖时间将允许每250毫秒按一次键。如果在该时间范围内发生了多次按键操作(如按键弹起时会发生这种情况),那么这些多余的按键操作将被忽略。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134213.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ORACLE索引,索引的建立、修改、删除[通俗易懂]

    ORACLE索引,索引的建立、修改、删除[通俗易懂]一、简介      索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关二、语法2.1创建索引CREATEINDEXCREATE[unique]INDEX[user.]indexON[user.]table(column[AS

    2022年9月4日
    3
  • Js中sort()方法

    Js中sort()方法

    2021年9月5日
    79
  • java 代码生成器 generator

    java 代码生成器 generator文章目录写在前面1、mybatis-generator1.1、第一种:利用maven插件实现2、mybatis-plus-generator写在前面我们在java开发中,经常要建一些常用的包、类,他们都千篇一律,没什么技术含量,于是我们想到了用代码生成器去自动生成他们,例如mapper、dao、实体类。1、mybatis-generatormybatis-generator的运行过程:首先连接数据库,然后从数据库的表中读取字段,生成对应文件。1.1、第一种:利用maven插件实现整个过程你只需要

    2022年6月10日
    30
  • Idea激活码永久有效Idea2021.1.2激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2021.1.2激活码教程-持续更新,一步到位Idea激活码永久有效2021.1.2激活码教程-Windows版永久激活-持续更新,Idea激活码2021.1.2成功激活

    2022年6月17日
    67
  • 独立成分分析ICA系列2:概念、应用和估计原理.

    独立成分分析ICA系列2:概念、应用和估计原理.1.概念独立成分分析是从多元(多维)统计数据中寻找潜在因子或成分的一种方法.ICA与其它的方法重要的区别在于,它寻找满足统计独立和非高斯的成分。这里我们简要介绍ICA的基本概念、应用和估计原理。1.1 多元数据的线性表示统计数据处理及相关领域中的一个重要和需要长期研究的问题就是,寻找多元数据一个恰当的表示,使得人们可以获得给定数据的本质特征或者使得数据的结构

    2022年5月17日
    38
  • 前端面试题:vue响应式原理 Vdom diff

    前端面试题:vue响应式原理 Vdom diffvue的响应式原理,也算是面试中再常见不过的题目了,之前遇见这道题目只会说:利用的是Object.defineProperty进行的数据劫持,监听数据的变化,通知watcher进行的数据更新。总的来说这是没错的,但是只要面试官进一步的问,那一定是满脸的问号。昨天一天也是没有面试机会,所以就研究了一天这个东西,算是搞明白了(自我感觉),今天就把他来写成文章,希望大佬看到哪里不对给出指导,本文可能会有点长。上正文。现在最流行的框架非vue,react莫属,他们流行起来的原因,离不开响应式,因为它在做一些.

    2022年6月2日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号