0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用树莓派多线程实现LED灯阵频闪

h1654155282.3538 来源:电子报 作者:h1654155268.1688 2021-06-06 15:38 次阅读

众所周知,“线程”指的是一组可以在程序中独立执行的计算机指令集合,引入“多线程”运行机制的根本目的是为了更好利用CPU资源。如果程序在运行过程中只有一个线程的话(单线程方式),那么下一个任务必须要等到上一个任务结束后才能进行,这是一种低效的“串行”流程;如果使用多线程,就可以在主线程执行任务的同时来“并行”执行其他的任务,不需要等待时间,从而极大提高了程序的运行效率。

【实验目的】

树莓派中通过古德微机器人平台编程,实现多线程控制LED灯阵彼此独立地运行,各个LED灯的闪亮频率均不同(“频闪”效果),验证计算机编程中多线程运行机制的高效性。

【实验器材及连接】

树莓派一块,古德微扩展板一块,红、绿、黄、蓝色LED灯各一支。

首先将古德微扩展板正确插入树莓派中,注意要四周均匀小心用力,然后将四支LED灯分别插入到扩展板的5号、6号、12号和16号插孔,注意LED灯的长脚为正极、短脚为负极,必须正确插入插孔上标注有“+”、“-”标记的对应处,最后将树莓派电源线连接好,通电启动系统(如图1所示)。

图1

【平台编程与程序运行调试】

1.登录古德微机器人平台

使用浏览器访问http://www.gdwrobot.cn,点击右上角的“登录”并输入自己的账号和密码,然后点击“设备控制”进入“积木”编程界面,再点击“连接设备”按钮出现五个连续的绿色对勾提示,表示连接成功(如图2所示)。

pYYBAGC8e6aAHr0mAAFQtgWIpa8513.png

图2

2.进行“积木”编程

“积木”编程非常简单,我们只需将对应的命令语句块从左侧“积木”区域拖至中央空白编程区进行组合即可。程序包括主程序和四个函数共两大部分,主程序是顺序执行的四个子线程调用语句块,操作方法是从左侧的“线程”处将“添加子线程,线程函数名为‘xxx’”拖入编程区,注意其中的线程函数名必须是英文名称。每个子线程就对应主程序待调用的一个函数,而每一个函数都是控制所对应的LED灯亮灭交替,通过设置不同的等待时间来实现不同的闪烁频率,以第一个LED5函数为例:

首先调用“控制5号小灯亮”命令语句,然后通过“等待0.1秒”命令语句让其保持通电的发光状态持续0.1秒;接着“控制5号小灯灭”,第二条“等待0.1秒”命令语句的作用是保持该LED的熄灭状态持续0.1秒。四个命令语句循环执行,最终实现的效果就是控制插在古德微扩展5号插孔的红色LED灯先亮0.1秒、再灭0.1秒,然后再亮0.1秒、灭0.1秒……即控制该LED灯以5Hz的频率(周期是两个0.1秒相加)进行“频闪”。其它三支LED灯的控制函数分别对应LED6、LED12和LED16,语句基本一致,惟一不同的是等待的时间分别设置为0.2秒、0.5秒和1秒(可自行设置,目的是进行对比观察),即分别实现2.5Hz、1Hz和0.5Hz频率亮、灭的“频闪”效果(如图3所示)。

poYBAGC8e6aASA8bAAFR3Ta-Zqg048.png

图3

3.程序的运行调试

程序编写完毕之后,点击“保存”按钮,将程序保存为“四支小灯多线程”,接着点击右上角的“运行”按钮进行程序的调试。此时,主程序就会“同时”调用四个函数进行多线程运行,每个子线程函数都会“自私”地按照自己的指令来控制LED灯闪烁,互不干扰,我们就会看到四支不同颜色的LED灯各自以各自的频率闪烁起来(如图4所示),这就是古德微树莓派多线程实现LED灯阵的“频闪”效果。

图4
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    108364
  • 树莓派
    +关注

    关注

    117

    文章

    1710

    浏览量

    105849
收藏 人收藏

    评论

    相关推荐

    #硬声创作季 树莓教程:14微课:古德微树莓多线程实现LED

    多线程树莓
    Mr_haohao
    发布于 :2022年10月02日 07:53:51

    树莓2控制一个LED

    ` 本帖最后由 348081236 于 2016-1-19 16:57 编辑 这个教程教你怎样用树莓控制一个LED。这是比较基础、简单、适合新手的。先从一个
    发表于 01-19 16:55

    关闭树莓电源LED

    在关闭树莓的电源指示和状态指示中,对关闭树莓指示
    发表于 12-28 08:18

    利用线程的互斥实现串口多线程收发数据

    利用线程的互斥实现串口多线程收发数据从而达到流水灯的效果。多线程串口编程主要分为三步,第一部分,连接串口及开发板,确定设备号;第二部分为串口
    发表于 01-07 08:08

    如何利用HAL库实现LED

    如何利用HAL库实现LED
    发表于 02-08 06:35

    LEDLED效应的区别

    LEDLED效应的区别LED
    发表于 11-18 13:47 2858次阅读

    LED的制作方法

    LED的制作方法 复杂的大厦也源于简单结构,现在我们就来试试从简单的
    发表于 04-20 11:12 6322次阅读
    <b class='flag-5'>LED</b><b class='flag-5'>频</b><b class='flag-5'>闪</b><b class='flag-5'>灯</b>的制作方法

    五路蓝牙智能无LED电源方案

    五路蓝牙智能无LED电源方案,五路蓝牙智能无LED
    发表于 07-26 14:31 60次下载

    led为什么有_led怎么解决_led测试方法

    本文介绍了什么是的工作原理,其次介绍了LED
    发表于 01-17 10:34 9.1w次阅读
    <b class='flag-5'>led</b><b class='flag-5'>灯</b>为什么有<b class='flag-5'>频</b><b class='flag-5'>闪</b>_<b class='flag-5'>led</b><b class='flag-5'>灯</b><b class='flag-5'>频</b><b class='flag-5'>闪</b>怎么解决_<b class='flag-5'>led</b><b class='flag-5'>灯</b><b class='flag-5'>频</b><b class='flag-5'>闪</b>测试方法

    LED警示密封性测试解决方案的介绍

    的:结构防水和材料防水。LED警示结构防水是在产品的各结构部件组合后再辅之以硅胶密封圈实现防水要求;
    发表于 01-29 14:58 1101次阅读

    关闭树莓电源LED,禁用wifi、蓝牙

    在关闭树莓的电源指示和状态指示中,对关闭树莓指示
    发表于 01-06 11:55 3次下载
    关闭<b class='flag-5'>树莓</b><b class='flag-5'>派</b>电源<b class='flag-5'>LED</b><b class='flag-5'>灯</b>,禁用wifi、蓝牙

    关闭树莓的电源指示(红)和状态指示(黄)

    添加一个硬件开、关机按键中,我已经讲过了利用/boot/config.txt文件来给树莓添加一个硬件的开关,如果想了解其中的原理,可以参考该文章。
    发表于 01-11 09:26 9次下载
    关闭<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的电源指示<b class='flag-5'>灯</b>(红)和状态指示<b class='flag-5'>灯</b>(黄)

    基于555定时器构建的LED电路

    在这个项目中,让我们使用流行的555定时器IC开发LED电路。
    的头像 发表于 01-25 15:17 7230次阅读
    基于555定时器构建的<b class='flag-5'>LED</b><b class='flag-5'>频</b><b class='flag-5'>闪</b><b class='flag-5'>灯</b>电路

    使用树莓GPIO口点亮双色LED

    上一篇文章向大家介绍树莓的硬件部分、安装操作系统及基础设置。这篇文章将介绍树莓的强大的开发功能口——GPIO,以及利用GPIO口点亮双色
    的头像 发表于 07-04 11:34 2539次阅读
    使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>GPIO口点亮双色<b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    基于树莓点亮RGB三基色LED

    上一篇实现树莓的第一个基础实验——点亮双色LED,并了解了树莓
    的头像 发表于 07-04 11:34 2228次阅读
    基于<b class='flag-5'>树莓</b><b class='flag-5'>派</b>点亮RGB三基色<b class='flag-5'>LED</b><b class='flag-5'>灯</b>