大数跨境
0
0

Arduino-4*4矩阵键盘

Arduino-4*4矩阵键盘 沛华测控
2020-12-01
1

点击上方蓝字【沛华测控】订阅我们


沛华LabVIEW基础课程|第46讲

『LabVIEW+Arduino

4*4矩阵键盘


这期内容比较简单实用,我们将演示如何使用常见的4*4矩阵键盘控制RGB LED


请看视频


本期内容实现的效果:按“1”-“6”按键切换不同颜色的;按“A”键灭灯。


实物接线图

 实物接线图


这期内容用到的材料如下

1.4*4矩阵键盘

2.Arduino UNO开发板;

3.面包板及面包线若干;

4.数据线;

5.RGB LED;

6.电阻若干。

 4*4矩阵键盘接线示意图


4*4矩阵键盘&Arduino的接线分别为:

R1→DO9

R2→DO8

R3→DO7

R4→DO6

C1→DO5

C2→DO4

C3→DO3

C4→DO2


 4*4矩阵键盘原理图


RGB LED&Arduino的接线为:

R(红色引脚)→10;

G(绿色引脚)→11;

B(蓝色引脚12;


Arduino Code

向上滑动查看Arduino源代码


#include <Keypad.h> //引入Keypad.h函数库


const byte ROWS = 4; //定义矩阵键盘的行数:4行

const byte COLS = 4; //定义矩阵键盘的列数:4列


char keys[ROWS][COLS] = {

  {'1', '2', '3', 'A'},

  {'4', '5', '6', 'B'},

  {'7', '8', '9', 'C'},

  {'*', '0', '#', 'D'}

}; //这个数组确定用于行和列的引脚

byte rowPins[ROWS] = {9, 8, 7, 6}; //连接键盘的行引脚

byte colPins[COLS] = {5, 4, 3, 2}; //连接键盘的列引脚

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

byte ledPinR = 10;

byte ledPinG = 11;

byte ledPinB = 12;//定义RBG LED的引脚



boolean invert = true;//如果共阳极设置为true;共阴极则返回false

void setup() {


  Serial.begin(9600);

  for (int i = 9; i < 13; i++) {

    pinMode(i, OUTPUT);

    analogWrite(i, HIGH);

  }//允许上拉电阻

  keypad.addEventListener(keypadEvent);

}


void loop() {

  char key = keypad.getKey();


  if (key != NO_KEY) {

    Serial.println(key);//如果按键被按下,串口打印该按键所代表的字符

  }


}


void keypadEvent(KeypadEvent key) {

  switch (keypad.getState()) {

    case PRESSED:

      switch (key) {

        case '1':

          digitalWrite(ledPinR, !digitalRead(ledPinR));

          digitalWrite(ledPinG, 1);

          digitalWrite(ledPinB, 1);

          break;


        case '2':

          digitalWrite(ledPinR, 1);

          digitalWrite(ledPinG, !digitalRead(ledPinG));

          digitalWrite(ledPinB, 1);

          break;


        case '3':

          digitalWrite(ledPinR, 1);

          digitalWrite(ledPinG, 1);

          digitalWrite(ledPinB, !digitalRead(ledPinB));

          break;


        case '4':

          if (digitalRead(ledPinR)^digitalRead(ledPinG)) Off_All();


          digitalWrite(ledPinR, !digitalRead(ledPinR));

          digitalWrite(ledPinG, !digitalRead(ledPinG));

          digitalWrite(ledPinB, 1);


          break;

        case '5':

          if (digitalRead(ledPinR)^digitalRead(ledPinB)) Off_All();


          digitalWrite(ledPinR, !digitalRead(ledPinR));

          digitalWrite(ledPinG, 1);

          digitalWrite(ledPinB, !digitalRead(ledPinB));


          break;

        case '6':

          if (digitalRead(ledPinG)^digitalRead(ledPinB)) Off_All();


          digitalWrite(ledPinR, 1);

          digitalWrite(ledPinG, !digitalRead(ledPinG));

          digitalWrite(ledPinB, !digitalRead(ledPinB));

          break;


        case 'A':


          Off_All();


          break;

        default: break;

      }

      break;

    case RELEASED:

      switch (key) {


        default: break;

      }

      break;


  }

}


void Off_All()

{

  digitalWrite(ledPinR, 1);

  digitalWrite(ledPinG, 1);

  digitalWrite(ledPinB, 1);

}


以上就是今天的内容,老规矩:对本期内容感兴趣的小伙伴后台发送阿拉伯数字“46获取源码研究~


【往期精彩】
LabVIEW+Arduino之电磁炮
声控灯
★温控装置
自动逗猫棒
HMI基础入门教程(3)
LabVIEW+Arduino之RTC
4G模块
语言识别模块
Arduino简易温控装置
★温差发电
LabVIEW+Arduino之简单串口通信
LabVIEW Vision+Arduino之水平+垂直移动跟踪
★LabVIEW Vision 之 OCR
基于LabVIEW+Raspberry Pi 的麦克纳姆轮四驱小车




微信又双叒叕改版

为了不失联&获取最新最好玩的信息

记得星标&置顶我们公众号哟!


置顶方式


1.先点击蓝字&扫描二维码进去;

2.按右上方的【●●●】符号;

3.再点击【设为星标】就可以啦!!!


【声明】内容源于网络
0
0
沛华测控
这儿有好玩的LabVIEW基础教程!深圳市沛华测控有限公司/沛华电子科技有限公司是专注于系统设计、研发、软件硬件互相配合并提供整体方案的快速发展的高科技公司,也是NI公司在中国华南地区的合作伙伴。
内容 56
粉丝 0
沛华测控 这儿有好玩的LabVIEW基础教程!深圳市沛华测控有限公司/沛华电子科技有限公司是专注于系统设计、研发、软件硬件互相配合并提供整体方案的快速发展的高科技公司,也是NI公司在中国华南地区的合作伙伴。
总阅读26
粉丝0
内容56