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

    文章

    1547

    浏览量

    107011
  • 树莓派
    +关注

    关注

    113

    文章

    1634

    浏览量

    104649
收藏 人收藏

    评论

    相关推荐

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

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

    请教利用树莓制作六足机器人的问题

    本人新手,最近在准备制作一个六足机器人,如果利用舵机控制器+遥控手柄套件的话,可以很容易就实现简单的功能。为了能让六足机器人实现更加复杂的功能,我想利用arduino+
    发表于 11-10 15:33

    树莓2控制一个LED

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

    检测LED效应的方法

    LED指的是两个概念  一是:即电光源光通量波动的深度,波动深度越大,
    发表于 05-05 17:28

    为什么我的树莓ATC

    我买了两个树莓派发现插卡通电后发现有一个正常,ATC 正常,另外一个板ATC长亮,不,不知道是不是板坏了。请朋友帮忙分析一下,谢谢!
    发表于 07-16 05:39

    LED灯具测试PST

    到33kHz间或者≥40kHz;而LED的光输出频率f应≥120H。根据12.4节,对于所有标识可调光的,应在报告中提供一下参数:-
    发表于 08-07 09:52

    如何利用树莓实现物联网?

    如何利用树莓实现物联网?
    发表于 10-19 06:58

    如何利用树莓实现智能小车的四轮驱动?

    如何利用树莓实现智能小车的四轮驱动?
    发表于 10-19 09:36

    关闭树莓电源LED

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

    树莓的电源指示只要加电就是一直亮的怎么关掉

    添加一个硬件开、关机按键中,我已经讲过了利用/boot/config.txt文件来给树莓添加一个硬件的开关,如果想了解其中的原理,可以参考该文章。
    发表于 12-31 07:56

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

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

    如何利用HAL库实现LED

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

    玩转OpenHarmony智能家居:如何实现树莓“碰一碰”设备控制

    应用与设备之间接续慢、传输难的问题,实现一碰拉起应用,为用户带来无缝切换的流畅体验。二、“碰一碰”设备控制场景(1)使用效果当树莓开发板靠近小熊派开发板,树莓
    发表于 12-27 11:34

    多线程与聊天室程序的创建

    多线程程序的编写,多线程应用中容易出现的问题。互斥对象的讲解,如何采用互斥对象来实现多线程的同步。如何利用命名互斥对象保证应用程序只有一个实
    发表于 05-16 15:22 0次下载

    SpringBoot实现多线程

    SpringBoot实现多线程
    的头像 发表于 01-12 16:59 1281次阅读
    SpringBoot<b class='flag-5'>实现</b><b class='flag-5'>多线程</b>