物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

这篇具有很好参考价值的文章主要介绍了物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言

二、实践与代码

        1.电亮LED1

        2.熄灭LED1

        3.翻转LED电平

        4.LED1与LED2交替闪烁

        5.LED1呼吸灯

三、程序代码


一、前言

        本篇内容属于新大陆物联网Lora模块开发,使用给定的Lora基础例程,并在其基础上开发完成,并可为其他版本的Lora学习提供思路。

二、实践与代码

        1.电亮LED1

        物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

        2.熄灭LED1

 物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

        3.翻转LED电平

物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

        4.LED1与LED2交替闪烁

        在其为我们提供的led_light.c文件中,定义了关于闪烁的方法:

#define HELF_SECOND 50
uint16_t helfSecondCnt = 0;
bool isLed1Lighted = true;
bool isHelfSecondLedBlinkEnable = false;
void blinkPerHelfSecond() {
    if (!isHelfSecondLedBlinkEnable)
        return;

    helfSecondCnt ++;
    if (helfSecondCnt > HELF_SECOND) {
        helfSecondCnt = 0;
        isLed1Lighted = !isLed1Lighted;
    }

    if (isLed1Lighted) {
        GpioWrite( &Led1, 0 );
        GpioWrite( &Led2, 1 );
    }
    else {
        GpioWrite( &Led1, 1 );
        GpioWrite( &Led2, 0 );
    }
}

void startLedBlink() {
    isHelfSecondLedBlinkEnable = true;
    GpioWrite( &Led1, 1 );
    GpioWrite( &Led2, 1 );
}

void stopLedBlink() {
    isHelfSecondLedBlinkEnable = false;
    GpioWrite( &Led1, 1 );
    GpioWrite( &Led2, 1 );
}

        通过对上述的代码分析,我们可以得知,如果我们想开启闪烁,我们首先先需要调用startLedBlink()函数,随后我们需要在主函数中一直调用blinkPerHelfSecond(),即可实现闪烁效果。

        由代码可知,当blinkPerHelfSecond()函数调用50次后,LED将会翻转电平,因此我们只需要控制调用的间隔时间,即可完成固定时间闪烁。

物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

        上述代码,通过每10ms调用一次blinkPerHelfSecond()函数,实现了每0.5s交替闪烁的效果。

        5.LED1呼吸灯

         同样是在led_light.c中,也定义了关于呼吸灯的方法:

#define LED_ILLUMINATION_LEVEL 8
#define LED_LEVEL_TIMER				LED_ILLUMINATION_LEVEL/2
#define DEVIDE_VALUE 16

uint8_t levelCount = LED_ILLUMINATION_LEVEL;
uint8_t led_levet_timer = LED_LEVEL_TIMER;
uint8_t devideCount = DEVIDE_VALUE;
uint8_t level = 1;
uint8_t timeTic = 0;
bool isUprise = true;
bool isLed1BreathEnable = false;
bool isLed2BreathEnable = false;

void setBreathLedArg(uint8_t levelCnt, uint8_t levelUpDevide){
	levelCount = levelCnt;
	led_levet_timer = levelCount/2;
	devideCount = levelUpDevide;
}

void resetLedPwm() {
    timeTic = 0;
    if (isLed1BreathEnable)
        GpioWrite( &Led1, 0 );
    if (isLed2BreathEnable)
        GpioWrite( &Led2, 0 );
}

void pwmLevelUp() {
    static unsigned long led_level_tick = 0;
    led_level_tick++;
    if (led_level_tick > led_levet_timer) {
        led_level_tick = 0;
        if (isUprise)
            level++;
        else
            level--;
        if (level > levelCount) {
            level = levelCount;
            isUprise = false;
        } else if (level == 0) {
            isUprise = true;
        }
    }
}

void pwm() {
    timeTic++;
    if (timeTic > level) {
        if (isLed1BreathEnable)
            GpioWrite( &Led1, 1 );
        if (isLed2BreathEnable)
            GpioWrite( &Led2, 1 );
    }
    if (timeTic > levelCount) {
        resetLedPwm();
    }
}

uint8_t timeDevice = 0;
void breathLed() {
    timeDevice++;
    if (timeDevice >= devideCount) {
        timeDevice = 0;
        pwmLevelUp();
    }
    pwm();
}

void switchLed1Breath() {
    isLed1BreathEnable = !isLed1BreathEnable;
}

void switchLed2Breath() {
    isLed2BreathEnable = !isLed2BreathEnable;
}

void startLedBreath() {
    isLed1BreathEnable = true;
    isLed2BreathEnable = true;
    GpioWrite( &Led1, 1 );
    GpioWrite( &Led2, 1 );
}

void stopLedBreath() {
    isLed1BreathEnable = false;
    isLed2BreathEnable = false;
    GpioWrite( &Led1, 1 );
    GpioWrite( &Led2, 1 );
}

        根据上面代码,我们可知使用setBreathLedArg()函数进行初始化,其第一个参数为亮度的分级,建议为100,第二个为亮度等级变化的调用次数,推荐为50,随后使用startLedBreath()开启呼吸灯,然后只需要在主程序内一直调用breathLed()函数。switchLed1Breath函数可以与startLedBreath()用法相似,可以单独开启某个呼吸灯的呼吸标志位。

物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯文章来源地址https://www.toymoban.com/news/detail-486459.html

三、程序代码

/**
 * Main application entry point.
 */
int main( void )//任务4
{
    Init();
		startLedBlink();
    while( 1 )
    {
			HAL_Delay(10);
			blinkPerHelfSecond();
    }
}

int main( void )//任务5
{
    Init();
		setBreathLedArg(100,50);
		switchLed1Breath();
    while( 1 )
    {
			breathLed();
    }
}

到了这里,关于物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32通过串口控制LED闪烁或者呼吸效果

    目录 STM32通过串口控制LED闪烁或者呼吸效果 1、准备工作 2、思路分析 3、实际操作 4、小结 1.首先我们需要准备32的最小系统板或者开发板。 2.准备一个LED灯(如果使用板子上的灯来实现则不需要,下面我是使用最小系统板上的LED灯来实现)。 3.若干杜邦线。 4.软件方面的准备

    2024年02月08日
    浏览(44)
  • 用STM32单击按键实现LED闪烁和双击按键实现LED呼吸灯效果

    在嵌入式系统中,按键和LED是最常见的外设之一。本文将介绍如何使用STM32微控制器实现按键的单击和双击检测,并通过控制LED的闪烁和呼吸灯效果来呈现按键的触发效果。 第一部分:硬件准备 准备一块STM32开发板,如STM32F103C8T6。 连接一个按键到开发板上的GPIO引脚,并通过

    2024年02月05日
    浏览(82)
  • FPGA——HLS入门-LED闪烁仿真

    HLS就是高综合(High level Synthesis)的缩写,通过HLS,我们可以将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言。 这个术语是行为和电子系统的结合:是一门技术,也是一门科学,它把设计意图抽象化,抽象视图可以自动地将人类设计者的努力付诸现实。最终生成的设

    2024年02月11日
    浏览(50)
  • 学习笔记|基于Delay实现的LED闪烁|模块化编程|SOS求救灯光|STC32G单片机视频开发教程(冲哥)|第六集(下):实现LED闪烁

    在模块化编程里,函数使用分为如下三步: 返回值 函数名称( 入口参数 ) { 函数要执行的功能 } @返回值:没有返回值就是void @函数名称:避开(IDE中标蓝),不重复,非特殊字符随便取 @入口参数:类型+名称,多个参数“,”分开,空就写void 返回值 函数名称( 入口参

    2024年02月12日
    浏览(50)
  • 物联网国赛LORA模块开发教程(通用库)——LoRa点对点通信

            LoRa点对点通信与控制实现效果,本次实验主要对Lora点对点通信进行实验,发送端采集光照值显示到oled屏并发送至节点端进行控制,当光照值低于100 lx 时点亮Led2灯,反之熄灭。 LoRa点对点通信与控制实现效果 1、本次LoRa点对点实验用到的库    在main.c文件中添加

    2024年04月26日
    浏览(52)
  • 【嵌入式系统应用开发】FPGA——HLS入门实践之led灯闪烁

    HLS(High Level Synthesis) :一款高层次综合工具。 能够将 C/C++ 或者 system C 等高级语言转化为 RTL (底层硬件描述语言)电路,降低开发时间。 提供了常见的库(例如图像处理相关的 OpenCv 库和其 它的数学库)。 可以创建IP并通过例化或者使用 BlockDesign 的方式应用到项目中。 转化原

    2024年02月05日
    浏览(67)
  • stm32开关控制led灯泡(附Proteus电路图)

     说明:我的灯泡工作电压2V,电流设置为10um,注意了不是10毫安时微安啊,要不然电流太小亮不起来的。 2:我用的开关不是按钮button而是switch, 3:PB0,PB1默认都是低电平,采用了PULLDOWN模式,如果设置为其他模式就会一直亮。 4 这里采用了while();这样的循环,保证了引脚位置的

    2024年02月11日
    浏览(46)
  • [4]PCB设计实验|LPWAN物联网系统解决方案 |LoRa模块/LoRa网关/云平台/LoRa应用案例|9:30~10:00

    目录 1.LPWAN物联网系统解决方案                             LoRa模块/LoRa网关/云平台/LoRa应用案例 2.LoRaWAN网络部署情况 LoRaWAN网络架构 3.基于LPWAN技术的无线通信端到端解决方案  LoRa低功耗广域网智能终端 CY-LRW-102开关控制器 CY-LRB-101开关检测器 4.LoRa无线模块 4.1规格 4.2Lo

    2024年02月08日
    浏览(45)
  • [005] [蓝桥杯物联网] LoRa模块通信原理概述与API使用方法

    MCU型号: STM32L071KBU SDK:HAL库 工具:CubeMX + MDK LoRa ( Long Range , 远距离)模块收发器型号为 SX1278 ,可以完成 点对点 的数据通信功能,属于 半双工 通信,其原理图与引脚描述如下图所示: ▲ Lora模块原理图 ▲ Lora模块引脚描述 Lora竞赛板中引出了以下引脚: PA5~7:一般配置为

    2023年04月16日
    浏览(41)
  • 初识FreeRTOS入门,对FreeRTOS简介、任务调度、内存管理、通信机制以及IO操作,控制两个led不同频率闪烁

    当代嵌入式系统的开发越来越复杂,实时性要求也越来越高。为了满足这些需求,开发者需要使用实时操作系统(RTOS),其中一个流行的选择是FreeRTOS(Free Real-Time Operating System)。本篇博客将详细介绍FreeRTOS的特性、任务调度、内存管理、通信机制以及一些示例代码。 FreeR

    2024年02月14日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包