在环境监控设备研发中,如何实现LED一种或多种模式?
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在环境监控设备研发中,如何实现LED一种或多种模式?相关的知识,希望对你有一定的参考价值。
近期,笔者在跟进我公司的资产监控设备的研发工作。我们的环境监控设备具有温湿度感知、GPS定位、GPRS无线传输、光感感知等多种功能。可以应用在农业温室大棚环境监测、养殖业环境监测、老人儿童生活环境监测等不同的环境之中。
可满足用户对环境状态的实时监测,免去了人工监测的繁琐步骤。降低人力使用成本,实现数据传输的时效性、精准性。
我们的环境监控设备中,配有LED显示灯,可以实现产品不同状态的提示。一般来说,产品中的LED显示灯都会有不同的模式,以满足产品不同状态的显示需求。那么如何实现LED一种或多种模式呢?相信很多产品研发人员都需要用到,一起来看看吧!
一种多种LED不同模式的实现方式
LED模式设置,通过第一个入口参数决定设置哪个LED,第二个入口参数设置该LED设置的模式,比如,ON/OFF/Blink;
void SetLEDMode(Led_List_t LEDx,Led_Mode_t mode)
{
LED_Components[LEDx].LED = LEDx;
LED_Components[LEDx].mode = mode;
}
运行LED并响应上面设置的模式
void LED_Task(void)
{
uint8_t i;
for(i=0;i<LED_NUM;i++)
{
LED_Components[i].RunTime++;
switch(LED_Components[i].mode)
{
default:
case OFF:
GPIO_SetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
LED_Components[i].RunTime=0;
break;
case ON:
GPIO_ResetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
LED_Components[i].RunTime=0;
break;
case Working:
if(LED_Components[i].RunTime<500)
{
GPIO_ResetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
}
else
GPIO_SetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
if(LED_Components[i].RunTime>1000)
LED_Components[i].RunTime = 0;
break;
case Blink:
if(LED_Components[i].RunTime<200)
{
GPIO_ResetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
}
else
GPIO_SetBits(LED_PinList[i].GPIOx,LED_PinList[i].Pin);
if(LED_Components[i].RunTime>400)
LED_Components[i].RunTime = 0;
break;
}
}
}
相比较于单个LED控制,方面操作,使代码看起来更简洁。能更有效的调用函数去执行不同的状态。
以上是关于在环境监控设备研发中,如何实现LED一种或多种模式?的主要内容,如果未能解决你的问题,请参考以下文章
在货物监控设备研发工作中,如何向Stm32 flash写入数据
Azure 表:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息