按键触发遥控
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亮灯时不正常。感觉像是有串扰。还请大神指正问题。
按键闪灯实际效果图后续会发视频
存在的问题:k2和k3按键控制led2和led3完全正常显示没有问题;k1和k4按键分别控制led1和led4亮灯时不正常。感觉像是有串扰。还请大神指正问题。
作者: 董晓晓, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-4028471.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论