“4*4 薄膜数字键盘”使用教程
本帖最后由 云天 于 2019-9-10 10:56 编辑参考屌丝王小明 |用OBLOQ物联网模块做一个防沉迷盒子的帖子。
可设置“密码”,操作相应引脚。
“4*4 薄膜数字键盘”,该键盘带有8P杜邦头,间距2.54mm。可插上排针,然后连接到Arduino,使用非常简单。键盘背面白色贴纸可揭去,能牢固粘贴于机箱表面。你可以用它输入数字参数等信息,特别是对于LCD模块,GSM/GPRS模块等需要参数输入的模块。薄膜防水耐用,可经受几万次按压。https://www.dfrobot.com.cn/images/upload/Image/201805021349333pf1km.png 内部连线图接线图#include <Arduino.h>
char adminPassword = "4869";//设置密码
char inputPassword = " ";//存放输入密码,位数为5,最后一位放置'/0'
unsigned char i = 0;
unsigned char KeyCodeMap = {
{0x31,0x32,0x33,0x41},//1、2、3、A
{0x34,0x35,0x36,0x42},//4、5、6、B
{0x37,0x38,0x39,0x43},//7、8、9、C
{0x2A,0x30,0x23,0x44}//*、0、#、D
};
unsigned char KeySta = {
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}
};
boolean matchFlag = 0;//比对标识
void pinmode()//引脚初始化
{
pinMode(2,INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
}
void scanKeyboard() {//扫描按键
char j=0;
digitalWrite(i+6,LOW);//引脚6,7,8,9设置低电平,按行扫描
for(j = 0; j < 4; j++) {
KeySta = digitalRead(j+2);
}
digitalWrite(i+6,HIGH);
i++;
if(i==4) {
i=0;
}
}
void checkKeySta() {
static unsigned char KeyStaPrevious = {
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}
};
char j = 0;
for(j = 0; j < 4; j++) {
if(KeyStaPrevious != KeySta){
if(KeyStaPrevious == 0){//当相应按键被按下
digitalWrite(10,HIGH);
delay(200);
digitalWrite(10,LOW);
KeyAction(i,j);
}
KeyStaPrevious=KeySta;
}
}
}
void KeyAction(char i,char j){
for(char k = 1;k<5;k++ ){//将输入的密码移位存储
inputPassword=inputPassword;
}
if(KeyCodeMap == 0x23){//以“#”号做为输入结束符
inputPassword='\0';
matchFlag = compare();
clearInput();
}
else{
inputPassword = KeyCodeMap;
}
}
boolean compare(){//输入的密码与设定密码比较
String a,b;
a=inputPassword;
b=adminPassword;
if(a==b){
return 1;
}
else {
return 0;
}
}
void clearInput(){//清空输入密码
for(char j = 0; j < 5; j++){
inputPassword = ' ';
}
}
void checkMatchFlag(){
if(matchFlag){//比对成功设置相应引脚
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
delay(2000);
digitalWrite(11,HIGH);
delay(3000);
digitalWrite(10,LOW);
matchFlag = 0;
}
}
void setup() {
pinmode();
}
void loop() {
scanKeyboard();//扫描键盘
checkKeySta();//记录按下的键码
checkMatchFlag();//密码比对
}
演示视频https://v.youku.com/v_show/id_XNDM1MjcyNzE0NA==.html?x&sharefrom=android&sharekey=1215bf724e1106e6af6d62ea099381092设置的密码为:4869
https://v.youku.com/v_show/id_XNDM1MjkwNTI5Mg==.html?spm=a2h0j.11185381.listitem_page1.5~A密码箱操作演示视频 可以学习学习 支持 感谢分享,我正需要这方面的内容
页:
[1]