综合案例2.0-矩阵键盘信息输入上传-串口显示屏
最新案例教程点击下方链接跳转,CSDN已停止更新
点
击
跳
转
案例说明
矩阵键盘输入信息显示在串口显示屏上。按确定键可以将输入信息上传云端。
1、应用场景
1,产品型号入库,手动输入产品信息。
2,智能设备密码输入,远程开锁。
3,远程设备遥控器。
2、M320矩阵引脚说明
● 矩阵式结构的键盘显然比直接法要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。
● 开发板KEYIN1~KEYIN5是输入口,作为列线
● 开发板KEYOUT0~KEYOUT3是输出口作为行线
● 总共组成19个键的矩阵键盘(其中KEYIN5与KEYOUT3键值不存在),键值如下表所示。
- 键盘引脚返回键值表
3、接线说明
①确定矩阵键盘线序,案例使用的这款键盘线序比较乱。
注:需要根据返回的键值确定键盘引脚。
②案例连线图
- 矩阵键盘的具体线序需要自己测试,根据返回的键值确定。
搭建云平台环境
1.添加设备
登录things cloud云平台,创建一个项目。
创建新设备
填写设备名,点击创建
记录以下信息用于MQTT连接。
#==========================================================
#填入MQTT信息
AccessToken = "**********"
ProjectKey = "**********"
mqttaddr = "**********"
clientId = "**********" #自己定义
serverport = '**********'
#==========================================================
2.创建设备类型
创建设备类型相当于阿里云产品创建。
填好信息后点击创建。
在设备类型中添加设备
3.功能定义(创建物模型)
添加属性
标识符需与代码中的一致,属性类型根据功能进行选择。
代码
1.更改MQTT信息
#==========================================================
#填入MQTT信息
AccessToken = "**********"
ProjectKey = "**********"
mqttaddr = "**********"
clientId = "**********" #自己定义
serverport = **********
#==========================================================
main.py
# -*- coding: UTF-8 -*-
import utime as time
import yun_network
import yun_mqtt
from driver import KeyPad
import utime as time
from driver import UART
def UART_send(data):
writeBuf0=bytearray(data)
uart0.write(writeBuf0)
#usrFun参数为list数据类型,list[0]: 对应键值;list[1] :按键状态:按下为1,松开为2
def userfun(l_list):
if l_list[1] == 1 :
if l_list[0]!=0 :
if l_list[0] ==23:
key =str(1)
if l_list[0] ==4:
key =str(2)
if l_list[0] ==22:
key =str(3)
if l_list[0] ==7:
key =str(4)
if l_list[0] ==11:
key =str(5)
if l_list[0] ==20:
key =str(6)
if l_list[0] ==10:
key =str(7)
if l_list[0] ==27:
key =str(8)
if l_list[0] ==19:
key =str(9)
if l_list[0] ==6:
key ='s'
return_data(key)
totle = ''
totle_data='0'
def return_data(data):
global totle,totle_data,show_state
if data!='s':
totle +=data
print(totle)
else:
totle_data = totle
totle=''
show_state = True
def main():
global show_state,totle,totle_data
keypad=KeyPad()
keypad.init()
keypad.set_callback(userfun)
ret = yun_network.connect_network()
print("ret:",ret)
if ret == True:
yun_mqtt.mqtt_connect()
else:
print('network-connection failed')
totle1=''
while True:
if totle1!=totle:
UART_send("DIR(1);DC32(0,100,%s,15);\r\n"%('input: '+totle))
totle1=totle
if show_state:
try :
time.sleep_ms(30)
UART_send("DIR(1);CLR(0);\r\n")
print('send up')
yun_mqtt.update('updata',totle_data)
totle_data='0'
except:
print('false......')
show_state = False
time.sleep_ms(60)
if __name__ == '__main__':
show_state = False
uart0=UART()
uart0.open("serial1")
time.sleep_ms(1000)
UART_send("CLR(0);DIR(1);\r\n")
main()
测试
- 按键盘输入数字,显示屏上会显示相应的数字。
串口工具打印log如下:
按下确定键数据上传至云端。