jinglixixi 发表于 2021-11-17 19:56

【安信可蓝牙开发板PB-02-Kit测评】点亮LED

<div class='showpostmsg'><p align="left" style="text-align:left">由于安信可蓝牙开发板是面向蓝牙应用的开发板,板载的外设资源相对比较少,只有2类,即:一类是RGB_LED,另一类则是2个独立的LED,其原理图见图1所示。</p>

<p> &nbsp;</p>

<p>图1 LED电路</p>

<p>&nbsp;</p>

<p>有了上面的原理图,就等于有了控制LED的引脚号。</p>

<p>不知为何,在例程中既然提供GPIO口的示例,就为啥不点亮一个LED给大家一点光亮呢?</p>

<p>既然没有,我们就自己去点亮吧,如果不过瘾,那就多点亮它几个!</p>

<p>1.点亮暖色灯</p>

<p>点亮暖色灯的主程序为:</p>

<pre>
<code class="language-cpp">int app_main(void)
{
    /* Initialize the operating system */
    osal_init_system();
    osal_pwrmgr_device( PWRMGR_BATTERY );
    hal_gpio_pin_init(0, 1);
    hal_gpio_write(0, 1);
    /* Start OSAL */
    osal_start_system(); // No Return from here
    return 0;
}</code></pre>

<p>程序下载后,其执行效果如图2所示。</p>

<p>图2点亮暖色灯</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>2. 点亮冷暖双灯</p>

<p>以点亮暖色灯为基础,点亮冷暖双灯程序为:</p>

<pre>
<code class="language-cpp">int app_main(void)
{
    /* Initialize the operating system */
    osal_init_system();
    osal_pwrmgr_device( PWRMGR_BATTERY );
    hal_gpio_pin_init(0, 1);
    hal_gpio_write(0, 1);
    hal_gpio_pin_init(P34, 1);
    hal_gpio_write(P34, 1);
    /* Start OSAL */
    osal_start_system(); // No Return from here
    return 0;
}</code></pre>

<p>程序下载后,其执行效果如图3所示。</p>

<p> &nbsp;</p>

<p>图3点亮冷暖双灯</p>

<p>&nbsp;</p>

<p>3. 闪烁效果</p>

<p>既然能点亮LED,那项目LED便也就不是什么问题了,通过延时处理就可实现LED闪烁的闪烁。LED闪烁的程序为:</p>

<pre>
<code class="language-cpp">int app_main(void)
{
      /* Initialize the operating system */
        osal_init_system();
        osal_pwrmgr_device( PWRMGR_BATTERY );
        hal_gpio_pin_init(P0, OEN);
        hal_gpio_write(P0, 1);
        hal_gpio_pin_init(P15, OEN);//R
        hal_gpio_write(P15, 1);
        hal_gpio_pin_init(P34, OEN);//B
        hal_gpio_write(P34, 1);
        while(1)
        {
             for(i=0;i&lt;1000;i++)
             for(j=0;j&lt;2000;j++);
             hal_gpio_write(P34, 1);
             for(i=0;i&lt;1000;i++)
             for(j=0;j&lt;2000;j++);
             hal_gpio_write(P34, 0);
        }
        /* Start OSAL */
       osal_start_system(); // No Return from here
        return 0;
}</code></pre>

<p>当然也可以将延时语句分离成独立的功能函数,其内容为:</p>

<pre>
<code class="language-cpp">void delay(int ms)
{
      int i,j;
      for(i=0;i&lt;ms;i++)
      for(j=0;j&lt;2000;j++);
}</code></pre>

<p>使用延时函数的主程序为:</p>

<pre>
<code class="language-cpp">int app_main(void)
{
        /* Initialize the operating system */
        osal_init_system();
        osal_pwrmgr_device( PWRMGR_BATTERY );
        hal_gpio_pin_init(P0, OEN);
        hal_gpio_write(P0, 1);
        hal_gpio_pin_init(P15, OEN);
        hal_gpio_write(P15, 1);
        hal_gpio_pin_init(P34, OEN);
        hal_gpio_write(P34, 1);
        while(1)
        {
            delay(1000);
              hal_gpio_write(P34, 1);
            delay(1000);
              hal_gpio_write(P34, 0);
        }
        /* Start OSAL */
       osal_start_system(); // No Return from here
        return 0;
}</code></pre>

<p>&nbsp;</p>

<p>4. 点亮全部LED</p>

<p>除了冷暖LED外,还板载了一个RGB_LED,点亮全部LED的程序为:</p>

<pre>
<code class="language-cpp">int app_main(void)
{
        /* Initialize the operating system */
        osal_init_system();
        osal_pwrmgr_device( PWRMGR_BATTERY );
        hal_gpio_pin_init(P0, OEN);
       hal_gpio_write(P0, 1);
        hal_gpio_pin_init(P34, OEN);
        hal_gpio_write(P34, 1);
        hal_gpio_pin_init(P23, OEN);
        hal_gpio_write(P23, 1);
        hal_gpio_pin_init(P18, OEN);
        hal_gpio_write(P18, 1);
        hal_gpio_pin_init(P15, OEN);
        hal_gpio_write(P15, 1);
        while(1)
        {
             delay(1000);
             hal_gpio_write(P34, 1);
             delay(1000);
             hal_gpio_write(P34, 0);
        }
        /* Start OSAL */
        osal_start_system(); // No Return from here
        return 0;
}</code></pre>

<p>程序下载后,其执行效果如图4所示。</p>

<p>图4点亮全部LED</p>

<p>&nbsp;</p>

<p>此外,通过扩展接口还可以点亮外挂的LED模块,其实现的效果如图5所示。</p>

<p>图5 点亮外挂LED模块</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2021-11-17 21:49

<p>控制智能光源很方便</p>

soso 发表于 2021-11-19 10:04

<p>虽然灯很小,但是颜色很炫。期待后续哈。</p>

jinglixixi 发表于 2021-11-19 10:38

soso 发表于 2021-11-19 10:04
虽然灯很小,但是颜色很炫。期待后续哈。

<p>感谢支持!!!</p>

ayay33 发表于 2021-12-21 16:17

<p>多谢多谢,用来控制灯光很好,还可以改成声控的</p>

炸天帮程序员 发表于 2022-6-21 12:05

牛啊,不过我的板子下载后为什么不亮
页: [1]
查看完整版本: 【安信可蓝牙开发板PB-02-Kit测评】点亮LED