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

电子说

1.2w人已加入

描述

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

【实验目的】

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

【实验器材及连接】

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

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

图1

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

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

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

树莓派

图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所示)。

树莓派

图3

3.程序的运行调试

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

图4
责任编辑人:CC

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分