原创 【灵动微电子 L0136 温控器/遥控器应用】按键控制遥控器实现,按键功能、遥控功能、串口功能、亮灯功能等

2023-1-8 20:35 1183 6 6 分类: MCU/ 嵌入式

按键触发遥控

1:下载资料,不多讲参考论坛里帖子

2:安装keil驱动,不多讲参考论坛里帖子

MindMotion.MM32L0130_DFP.0.0.2.pack

3:环境搭建,不多讲参考论坛里帖子

 

按键触发遥控

方便用户使用,傻瓜操作

应用举例:遥控装置需要在机体里面时,而机器有人操控的情况下使用按键控制会方便很多

还是以亮灯来指示功能,功能可以自定义

 

4个按键,每个按键循环控制3钟功能。举例如下

按键1:每三次按下一循环,循环功能分别为控制电机1正转、电机1停止、电机1反转,分别用灯1亮、灯1灭、灯1闪烁来代表且指示功能已在执行。

按键2:每三次按下一循环,循环功能分别为控制电机2正转、电机2停止、电机2反转,分别用灯2亮、灯2灭、灯2闪烁来代表且指示功能已在执行。

按键3:每三次按下一循环,循环功能分别为获取电机1信息、获取电机2信息、获取设备信息,分别用灯3亮、灯3灭、灯3闪烁来代表且指示功能已在执行。

按键4:每2次按下一循环,循环功能分别为给遥控端上电、给被遥控端上电、给被遥控端断电,分别用灯4亮、灯4闪、灯4灭来代表且指示功能已在执行。

功能实现:

1:按键检测及控制指令通过IRM发送

/// @}

uint8_t Num_key=0;

uint8_t key[4]={0};

uint8_t keyInfo=0;

void key_detect(void)

{

uint8_t t;

uint8_t i;

t = KEY_Scan(0);

if(t!=Num_key)//同一个按键只记录一次按下

{

if(t!=0)

{

Num_key = t;

printf("\r\n第 %d 号按键已按下 \r\n",t);

//按键信息记录

for(i=0;i<4;i++)

{

if(Num_key==i+1)

{

key++;

if(key>3)

{

key=0;

}

keyInfo = (key[3]<<6)|(key[2]<<4)|(key[1]<<2)|(key[0]);

}

}

//

printf("按键触发:第 %d 号指令已发送到IRM \r\n",keyInfo);

Output_Byte(UART1, keyInfo);

}

else//按键已弹起,恢复初始状态

{

Num_key = 0;

}

}

2 :IRM控制指令接收

void IRM_Rec(void)

{

u8 getbyte;

if(gUartRxSta == 1)

{

gUartRxSta = 0;

command=gUartRxByte;

printf("\r\n 控制指令已通过IRM接收到 \r\n");

}

}

3:指令执行

void execution_cmd(void)

{

uint8_t i,led,temp;

led=command;

printf("收到灯控值 %d \r\n",led);

for(i=0;i<4;i++)

{

temp=led&0x03;

printf("收到灯%d控值 %d \r\n",i+1,temp);

if(i==0)

{

if(temp==0)LED1_OFF();

if(temp==1)LED1_TOGGLE();

if(temp==2)LED1_ON();

}

if(i==1)

{

if(temp==0)LED2_OFF();

if(temp==1)LED2_TOGGLE();

if(temp==2)LED2_ON();

}

if(i==2)

{

if(temp==0)LED3_OFF();

if(temp==1)LED3_TOGGLE();

if(temp==2)LED3_ON();

}

if(i==3)

{

if(temp==0)LED1_OFF();

if(temp==1)LED1_TOGGLE();

if(temp==2)LED1_ON();

}

//

led=led>>2;

}

}

4:执行输出,1-4按键依次按下4次执行结果如下:

[2023-01-08 20:20:01.584]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:02.519]# RECV ASCII>

 

第 1 号按键已按下

按键触发:第 1 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:02.581]# RECV ASCII>

收到灯控值 1

收到灯1控值 1

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:03.585]# RECV ASCII>

收到灯控值 1

收到灯1控值 1

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:03.738]# RECV ASCII>

 

第 1 号按键已按下

按键触发:第 2 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:04.576]# RECV ASCII>

收到灯控值 2

收到灯1控值 2

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:05.567]# RECV ASCII>

 

第 1 号按键已按下

按键触发:第 3 号指令已发送到IRM

 

控制指令已通过IRM接收到

收到灯控值 3

收到灯1控值 3

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:06.571]# RECV ASCII>

收到灯控值 3

收到灯1控值 3

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:07.158]# RECV ASCII>

 

第 1 号按键已按下

按键触发:第 0 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:07.574]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:08.579]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:09.572]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:10.502]# RECV ASCII>

 

第 2 号按键已按下

按键触发:第 4 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:10.563]# RECV ASCII>

收到灯控值 4

收到灯1控值 0

收到灯2控值 1

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:11.569]# RECV ASCII>

收到灯控值 4

收到灯1控值 0

收到灯2控值 1

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:12.034]# RECV ASCII>

 

第 2 号按键已按下

按键触发:第 8 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:12.562]# RECV ASCII>

收到灯控值 8

收到灯1控值 0

收到灯2控值 2

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:13.492]# RECV ASCII>

 

第 2 号按键已按下

按键触发:第 12 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:13.570]# RECV ASCII>

收到灯控值 12

收到灯1控值 0

收到灯2控值 3

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:14.562]# RECV ASCII>

收到灯控值 12

收到灯1控值 0

收到灯2控值 3

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:14.905]# RECV ASCII>

 

第 2 号按键已按下

按键触发:第 0 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:15.554]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:16.560]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:17.147]# RECV ASCII>

 

第 3 号按键已按下

按键触发:第 16 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:17.547]# RECV ASCII>

收到灯控值 16

收到灯1控值 0

收到灯2控值 0

收到灯3控值 1

收到灯4控值 0

 

[2023-01-08 20:20:18.554]# RECV ASCII>

收到灯控值 16

收到灯1控值 0

收到灯2控值 0

收到灯3控值 1

收到灯4控值 0

 

[2023-01-08 20:20:18.847]# RECV ASCII>

 

第 3 号按键已按下

按键触发:第 32 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:19.543]# RECV ASCII>

收到灯控值 32

收到灯1控值 0

收到灯2控值 0

收到灯3控值 2

收到灯4控值 0

 

[2023-01-08 20:20:20.242]# RECV ASCII>

 

第 3 号按键已按下

按键触发:第 48 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:20.551]# RECV ASCII>

收到灯控值 48

收到灯1控值 0

收到灯2控值 0

收到灯3控值 3

收到灯4控值 0

 

[2023-01-08 20:20:21.585]# RECV ASCII>

收到灯控值 48

收到灯1控值 0

收到灯2控值 0

收到灯3控值 3

收到灯4控值 0

 

第 3 号按键已按下

按键触发:第 0 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:22.549]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:23.539]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:23.771]# RECV ASCII>

 

第 4 号按键已按下

按键触发:第 64 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:24.545]# RECV ASCII>

收到灯控值 64

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 1

 

[2023-01-08 20:20:25.178]# RECV ASCII>

 

第 4 号按键已按下

按键触发:第 128 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:25.536]# RECV ASCII>

收到灯控值 128

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 2

 

[2023-01-08 20:20:26.522]# RECV ASCII>

收到灯控值 128

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 2

 

[2023-01-08 20:20:26.662]# RECV ASCII>

 

第 4 号按键已按下

按键触发:第 192 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:27.528]# RECV ASCII>

收到灯控值 192

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 3

 

[2023-01-08 20:20:28.213]# RECV ASCII>

 

第 4 号按键已按下

按键触发:第 0 号指令已发送到IRM

 

控制指令已通过IRM接收到

 

[2023-01-08 20:20:28.538]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

 

[2023-01-08 20:20:29.523]# RECV ASCII>

收到灯控值 0

收到灯1控值 0

收到灯2控值 0

收到灯3控值 0

收到灯4控值 0

按键闪灯实际效果图后续会发视频

存在的问题:k2和k3按键控制led2和led3完全正常显示没有问题;k1和k4按键分别控制led1和led4亮灯时不正常。感觉像是有串扰。还请大神指正问题。

 

 

 

 

 

按键闪灯实际效果图后续会发视频

存在的问题:k2k3按键控制led2led3完全正常显示没有问题;k1k4按键分别控制led1led4亮灯时不正常。感觉像是有串扰。还请大神指正问题。

作者: 董晓晓, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4028471.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条