树莓派自定义“灯带函数”

来源 :电脑报 | 被引量 : 0次 | 上传用户:qnmdmn
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  眾所周知,函数是程序设计语言的“基石”,即“组织好的、可重复使用的、用来实现单一或相关功能的代码段”。Python本身提供了功能丰富的“内置函数”,可以在命令行模式中输入“dir (__builtins__)”命令进行查看,例如求绝对值函数、求最大值和最小值函数,还包括input输入和print输出函数等(如图1)。



  此时,可以直接在命令行交互模式下使用内置函数,比如输入“abs(-7)”来求解-7的绝对值,回车后就会返回数值7;输入“max(0,6,-99,28)”求解四个数中的最大值,就会返回数值28。另外,Python还支持用户根据自己的不同需求进行自定义函数操作,比如编写一个能够同时求解二数之和、之差的函数sum_sub():
  def sum_sub(a,b):
  return(a+b,a-b)
  输入“sum_sub(8,5)”进行测试,回车后就会返回两个结果:13和3(如图2)。



  在开源硬件编程中使用Python可以灵活地控制各种周边硬件,从而实现更为丰富的功能。我们在树莓派中使用Python进行函数的自定义编写,控制灯带模仿现实生活中十字路口的红绿灯,分别是单函数“带参”的红绿灯带和双函数“无参”的红绿灯带。
  1.准备工作
  将可编程ws281x灯带通过古德微扩展板的18号接口与树莓派连接,注意灯带的三根引线分别标注+5V、GND和Din,不要接反。
  在树莓派中通过Python编程控制灯带需要安装rpi_ws281x库模块,因此需要通过“Windows的远程桌面”连接树莓派。在控制终端命令行模式中输入命令:“sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel”,回车后等待进度条到达100%后会有“Successfully installed”的提示(如图3)。



  2.Python单函数“带参”控制红绿灯带
  (1)首先,以“ws”为别名导入rpi_ws281x库:“import rpi_ws281x as ws”,再导入time库中的sleep函数:“from time import sleep”;接着,设置灯带中激活的“灯珠”数量LED_COUNT值为60:“LED_COUNT = 60”,灯带接入的端口号LED_PIN是18号:“LED_PIN = 18”,并且创建灯带对象strip,实例化PixelStrip,参数为LED_COUNT和LED_PIN:“strip = ws.PixelStrip(LED_COUNT, LED_PIN)”,语句“strip.begin()”的作用是对灯带进行初始化。
  (2)接下来自定义“带参”(参数为color)的lights()函数:“def lights(color):”,注意后面有英文冒号。
  (3)建立四分支选择结构,特别要注意Python的“四空格”缩进。
  第一分支为“if color == 'red':”,即函数参数为“red”时,使用循环结构控制60个灯珠全部发红光,RGB值为(100,0,0);不要忘记对灯带进行刷新操作:“strip.show()”。
  第二和第三分支分别为“elif color == 'green':”和“elif color == 'yellow':”,即函数参数为“green”和“yellow”时,使用循环结构控制60个灯珠全部发绿光、黄光,RGB值分别为(0,100,0) 和(100,100,0);也要对灯带进行刷新操作:“strip.show()”。
  第四分支为“else:”,即函数参数为空字符串,控制60个灯珠全部熄灭,RGB值为(0,0,0)。
  (4)主程序是一个“while True:”循环结构,通过传递不同的参数对lights()函数进行调用。先传递“green”参数亮绿灯:“lights('green')”,持续4秒钟:“sleep(4)”;再建立执行三次的循环结构:“for i in range(3):”,传递参数为空字符串,关闭灯带:“lights(' ')”,0.1秒后再次亮起绿灯:“lights('green')”,持续0.1秒后传递“yellow”参数亮黄灯:“lights('yellow')”;持续2秒后传递“red”参数亮红灯:“lights('red')”,再持续5秒后结束本次循环;进入下一次循环:亮绿灯……
  (5)保存程序为test_lights11.py,在命令行窗口中输入命令“sudo python3 test_lights11.py”运行测试,一个灯带式的“红绿灯”开始工作起来,这就是Python单函数“带参”红绿灯带(如图4)。


  3.Python雙函数“无参”控制红绿灯带
  (1)第一部分库模块的导入和对灯带进行初始化的代码与刚才一致,直接复制和粘贴。整条灯带的60个灯珠编号为0-59,将其均分为四组:0-14、15-29、30-44和45-59,其中的0-14和30-44对应“十字路口”的X方向,而15-29和45-59则对应Y方向。
  (2)定义X方向上的x_lights()函数:“def x_lights():”:
  第一部分的“for i in range(15)”“亮绿灯”(0,100,0)代码,包括0-14、30-44两组灯珠,注意30-44的表示方法是“i+30”,也就是同时控制X方向马路正面和对面;不要忘记添加灯带刷新代码“strip.show()”,绿灯保持亮5秒:“sleep(5)”,省略了绿灯闪烁过程(可自行添加内循环来实现);
  第二部分“亮黄灯”(100,100,0)代码,复制粘贴后,只须改RGB颜色值即可,黄灯保持亮2秒:“sleep(2)”;
  第三部分“亮红灯”代码,也是粘贴操作,改RGB值为(100,0,0),注意最后不必使用sleep()控制红灯持续亮的时间。
  (3)定义Y方向上的y_lights()函数:“def y_lights():”:
  复制x_lights()函数粘贴为y_lights()函数,只修改三个循环结构中range()的参数为“15,30”即可,因为Y方向控制的是15-29、45-59两组灯珠,同样也是使用“i+30”来表示45-59。
  两个函数代码编写完毕,最后写主程序的“while True:”循环结构,直接调用x_lights()和y_lights()即可。
  保存程序为test_lights12.py,在命令行窗口中输入命令“sudo python3 test_lights12.py”运行测试,模拟十字路口的四个方向红绿灯工作过程:红灯停、绿灯行,黄灯亮了等一等……这就是Python双函数“无参”红绿灯带(如图5)。


其他文献
全球范围“一芯难求”,使硬件产品的价格水涨船高一路飙升。加密数字货币市场不断被炒热,矿卡需求量极度旺盛,显卡价格早已起飞。目前DDR4 8GB 2666Mbps模块的平均价格环比增长了25%,比业界预测的20%左右的涨幅还要大。按照TrendForce的最新预测数据,第二季度PC DRAM芯片上涨幅度可能达到23%~28%。不少网友戏称,显卡价格像是在抢钱,这波涨价直接把网瘾治好了。本以为不买显卡
期刊
在平日你都喜欢干什么打发时间呢?央视最近发布了一则数据,2020年中国人每天多了24分钟休闲时间。在休闲时间里,有38.28%的人在刷手机,排在手机娱乐前三位的是:刷短视频、打游戏和追剧观影。短视频无疑成了人们“杀时间”的第一利器。对此,本部门视频编辑西语深有感受,他“抱怨”短视频已见缝插针地深入其生活的点点滴滴,自己会在上班间隙刷,上厕所、坐公交时刷,吃饭的时候刷,甚至逗宠物猫时也关小声音抽空看
期刊
联想的小新Pro 16是近期大家讨论热烈的机型,16英寸2.5K屏,且有120Hz屏选项,共三个配置,目前看来更有吸引力的有两款:  一款是预约价4999元/正常价格5499元的5800H集显款,搭载的是2.5K/60Hz高色域屏;  另一款是5800H/GTX1650的独显版本,屏幕升级到2.5K/120Hz,预约价格5999元/正常价格6499元。  之前我们的测试已证明,在2.5K分辨率下,
期刊
手机游戏虽然发展了这么多年,但屏幕触控还是和十年前一样糟糕。对于二哥这类从小玩游戏手柄玩到大,对手感要求特别高的人来说,这事儿就特别难受。不过自从我发现了北通的这个神器之后,一切问题都解决了。误触屏幕按键最头痛  现在的游戏玩法越来越丰富,操作也就越来越复杂,小小的手机屏幕上排满了按钮,稍不注意就按错失误。没办法,总不能为了游戏,让厂家把屏幕做成凹凸不平吧……《王者荣耀》《和平精英》等竞技性强的游
期刊
随着Intel第11代酷睿处理器的上市,超频又成为玩家们热议的话题。由于第11代酷睿处理器开放了B560/H570主板的内存超频功能,主流玩家也能轻松使用高频内存和体验内存超频的乐趣,那么B560主板的内存超频能力如何呢?下面我们就用华硕TUF GAMING B560M-PLUS WIFI重炮手主板来试试。开放内存频率限制,B560也能玩高频  第11代酷睿在内存方面的改进较多,在新增了Gear2
期刊
“男人鼻毛多很man吗?”  “不,相反还会更恶心!”不夹毛,没有拉扯的感觉  很多男生天天刮胡子,却对茂盛的鼻毛视而不见,还觉得鼻毛长出鼻孔很有男人味。我们女生都会在背后吐槽“鼻毛长在外面”的人好吗!  在欧美国家,男士用蜜蜡将鼻毛拔得一干二净是非常普遍的现象。不过拔鼻毛真的很疼,用镊子拔过的男生应该懂,还有用剪刀、指甲钳剪的,很容易剪到肉。其实不外露的鼻毛都是好鼻毛,可以阻挡灰尘、细菌进入肺部
期刊
放养的海鸭吃得比我还好  北部湾位于中国南海西北部,是一个半封闭的港湾。东临中国的雷州半岛和海南岛,北临广西壮族自治区,西临越南。由于地理位置的特殊性,临岸的广西壮族自治区玉林、崇左、钦州、防城港、南宁、北海组成了北部湾经济特区。  北部湾生态纯净、资源丰富、水温20℃,空气湿度80%,还有一片红树林,所以有很多海豚、白鹭和海鸭,而海鸭就是今天我们要讲的主角。海鸭的食物有很多,包括海螺、海虾、昆虫
期刊
UPF50+高防晒指数  温度越来越高,衣服越穿越薄,是时候戴上冰爽防晒的冰袖清凉出行了。师姐前段时间出去玩就是沒注意防晒,手臂都晒黑了两个度!师姐对比了市面上的一堆防晒品牌,还是觉得蕉下最靠谱,他家的防晒伞有多好用我就不用说了吧。今天就给你们推荐他家这款防晒冰袖。  蕉下冰袖的防晒指数是UPF50+,已经是纺织品最高标准!经过专业防晒检测的,能阻隔99%紫外线,防晒不再是靠心理作用了哈哈。  而
期刊
夏天快到了,蚊子也开始冲业绩了。这瓶青草膏陪师姐从泰国到三亚,躲过了一波又一波蚊虫。每年推荐青草膏已经成为师姐的例行工作,今年的夏天来得有些早,所以这次也给你们安排好啦。打个广告,想入手其他好物的小可爱记得加师姐微信(微信号:yhmd0808)哦,同步更新福利群和朋友圈哈。青草膏更天然温和  夏天来了,短袖可以穿上了,这也意味着,蚊虫要出来了。不瞒大家,昨天睡前我已经被蚊子送了两个包了。夏天都还没
期刊
24 Entertainment作为中国的游戏工作室可能很多玩家并不熟悉,它是网易旗下新成立的游戏工作室,对动作游戏有着不浅的研发经验,作为团队领袖的关磊,就带领团队前身研发过《流星群侠传》(原《流星蝴蝶剑手游》)等不少武侠题材的游戏作品,所以他们在硬核、武侠、动作等元素领域可是有着不错的口碑。东方武侠  在2019年的TGA上就公布了《永劫无间》的首部预告片,其元素就包含东方背景、武侠动作、硬核
期刊