在环境监控设备研发中,如何实现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 属性以获取更多信息

Vue CLI中善用--mode实现多种打包环境

Android获取设备分辨率的新方法 DisplayMetrics

在进行资产监测设备研发时,如何完成stop模式的功耗要求

将Kong插件配置为仅触发一种或多种方法?