999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

樹(shù)莓派自定義“燈帶函數(shù)”

2021-07-07 05:58:35牟曉東
電腦報(bào) 2021年17期

牟曉東

眾所周知,函數(shù)是程序設(shè)計(jì)語(yǔ)言的“基石”,即“組織好的、可重復(fù)使用的、用來(lái)實(shí)現(xiàn)單一或相關(guān)功能的代碼段”。Python本身提供了功能豐富的“內(nèi)置函數(shù)”,可以在命令行模式中輸入“dir (__builtins__)”命令進(jìn)行查看,例如求絕對(duì)值函數(shù)、求最大值和最小值函數(shù),還包括input輸入和print輸出函數(shù)等(如圖1)。

此時(shí),可以直接在命令行交互模式下使用內(nèi)置函數(shù),比如輸入“abs(-7)”來(lái)求解-7的絕對(duì)值,回車后就會(huì)返回?cái)?shù)值7;輸入“max(0,6,-99,28)”求解四個(gè)數(shù)中的最大值,就會(huì)返回?cái)?shù)值28。另外,Python還支持用戶根據(jù)自己的不同需求進(jìn)行自定義函數(shù)操作,比如編寫一個(gè)能夠同時(shí)求解二數(shù)之和、之差的函數(shù)sum_sub():

def sum_sub(a,b):

return(a+b,a-b)

輸入“sum_sub(8,5)”進(jìn)行測(cè)試,回車后就會(huì)返回兩個(gè)結(jié)果:13和3(如圖2)。

在開(kāi)源硬件編程中使用Python可以靈活地控制各種周邊硬件,從而實(shí)現(xiàn)更為豐富的功能。我們?cè)跇?shù)莓派中使用Python進(jìn)行函數(shù)的自定義編寫,控制燈帶模仿現(xiàn)實(shí)生活中十字路口的紅綠燈,分別是單函數(shù)“帶參”的紅綠燈帶和雙函數(shù)“無(wú)參”的紅綠燈帶。

1.準(zhǔn)備工作

將可編程ws281x燈帶通過(guò)古德微擴(kuò)展板的18號(hào)接口與樹(shù)莓派連接,注意燈帶的三根引線分別標(biāo)注+5V、GND和Din,不要接反。

在樹(shù)莓派中通過(guò)Python編程控制燈帶需要安裝rpi_ws281x庫(kù)模塊,因此需要通過(guò)“Windows的遠(yuǎn)程桌面”連接樹(shù)莓派。在控制終端命令行模式中輸入命令:“sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel”,回車后等待進(jìn)度條到達(dá)100%后會(huì)有“Successfully installed”的提示(如圖3)。

2.Python單函數(shù)“帶參”控制紅綠燈帶

(1)首先,以“ws”為別名導(dǎo)入rpi_ws281x庫(kù):“import rpi_ws281x as ws”,再導(dǎo)入time庫(kù)中的sleep函數(shù):“from time import sleep”;接著,設(shè)置燈帶中激活的“燈珠”數(shù)量LED_COUNT值為60:“LED_COUNT = 60”,燈帶接入的端口號(hào)LED_PIN是18號(hào):“LED_PIN = 18”,并且創(chuàng)建燈帶對(duì)象strip,實(shí)例化PixelStrip,參數(shù)為L(zhǎng)ED_COUNT和LED_PIN:“strip = ws.PixelStrip(LED_COUNT, LED_PIN)”,語(yǔ)句“strip.begin()”的作用是對(duì)燈帶進(jìn)行初始化。

(2)接下來(lái)自定義“帶參”(參數(shù)為color)的lights()函數(shù):“def lights(color):”,注意后面有英文冒號(hào)。

(3)建立四分支選擇結(jié)構(gòu),特別要注意Python的“四空格”縮進(jìn)。

第一分支為“if color == 'red':”,即函數(shù)參數(shù)為“red”時(shí),使用循環(huán)結(jié)構(gòu)控制60個(gè)燈珠全部發(fā)紅光,RGB值為(100,0,0);不要忘記對(duì)燈帶進(jìn)行刷新操作:“strip.show()”。

第二和第三分支分別為“elif color == 'green':”和“elif color == 'yellow':”,即函數(shù)參數(shù)為“green”和“yellow”時(shí),使用循環(huán)結(jié)構(gòu)控制60個(gè)燈珠全部發(fā)綠光、黃光,RGB值分別為(0,100,0) 和(100,100,0);也要對(duì)燈帶進(jìn)行刷新操作:“strip.show()”。

第四分支為“else:”,即函數(shù)參數(shù)為空字符串,控制60個(gè)燈珠全部熄滅,RGB值為(0,0,0)。

(4)主程序是一個(gè)“while True:”循環(huán)結(jié)構(gòu),通過(guò)傳遞不同的參數(shù)對(duì)lights()函數(shù)進(jìn)行調(diào)用。先傳遞“green”參數(shù)亮綠燈:“l(fā)ights('green')”,持續(xù)4秒鐘:“sleep(4)”;再建立執(zhí)行三次的循環(huán)結(jié)構(gòu):“for i in range(3):”,傳遞參數(shù)為空字符串,關(guān)閉燈帶:“l(fā)ights(' ')”,0.1秒后再次亮起綠燈:“l(fā)ights('green')”,持續(xù)0.1秒后傳遞“yellow”參數(shù)亮黃燈:“l(fā)ights('yellow')”;持續(xù)2秒后傳遞“red”參數(shù)亮紅燈:“l(fā)ights('red')”,再持續(xù)5秒后結(jié)束本次循環(huán);進(jìn)入下一次循環(huán):亮綠燈……

(5)保存程序?yàn)閠est_lights11.py,在命令行窗口中輸入命令“sudo python3 test_lights11.py”運(yùn)行測(cè)試,一個(gè)燈帶式的“紅綠燈”開(kāi)始工作起來(lái),這就是Python單函數(shù)“帶參”紅綠燈帶(如圖4)。

3.Python雙函數(shù)“無(wú)參”控制紅綠燈帶

(1)第一部分庫(kù)模塊的導(dǎo)入和對(duì)燈帶進(jìn)行初始化的代碼與剛才一致,直接復(fù)制和粘貼。整條燈帶的60個(gè)燈珠編號(hào)為0-59,將其均分為四組:0-14、15-29、30-44和45-59,其中的0-14和30-44對(duì)應(yīng)“十字路口”的X方向,而15-29和45-59則對(duì)應(yīng)Y方向。

(2)定義X方向上的x_lights()函數(shù):“def x_lights():”:

第一部分的“for i in range(15)”“亮綠燈”(0,100,0)代碼,包括0-14、30-44兩組燈珠,注意30-44的表示方法是“i+30”,也就是同時(shí)控制X方向馬路正面和對(duì)面;不要忘記添加燈帶刷新代碼“strip.show()”,綠燈保持亮5秒:“sleep(5)”,省略了綠燈閃爍過(guò)程(可自行添加內(nèi)循環(huán)來(lái)實(shí)現(xiàn));

第二部分“亮黃燈”(100,100,0)代碼,復(fù)制粘貼后,只須改RGB顏色值即可,黃燈保持亮2秒:“sleep(2)”;

第三部分“亮紅燈”代碼,也是粘貼操作,改RGB值為(100,0,0),注意最后不必使用sleep()控制紅燈持續(xù)亮的時(shí)間。

(3)定義Y方向上的y_lights()函數(shù):“def y_lights():”:

復(fù)制x_lights()函數(shù)粘貼為y_lights()函數(shù),只修改三個(gè)循環(huán)結(jié)構(gòu)中range()的參數(shù)為“15,30”即可,因?yàn)閅方向控制的是15-29、45-59兩組燈珠,同樣也是使用“i+30”來(lái)表示45-59。

兩個(gè)函數(shù)代碼編寫完畢,最后寫主程序的“while True:”循環(huán)結(jié)構(gòu),直接調(diào)用x_lights()和y_lights()即可。

保存程序?yàn)閠est_lights12.py,在命令行窗口中輸入命令“sudo python3 test_lights12.py”運(yùn)行測(cè)試,模擬十字路口的四個(gè)方向紅綠燈工作過(guò)程:紅燈停、綠燈行,黃燈亮了等一等……這就是Python雙函數(shù)“無(wú)參”紅綠燈帶(如圖5)。

主站蜘蛛池模板: 久久精品亚洲中文字幕乱码| 99资源在线| 欧美精品亚洲日韩a| 日韩在线视频网站| 亚洲人成网站观看在线观看| 国产91麻豆免费观看| 精品无码专区亚洲| 国产不卡网| 国产亚洲精品97在线观看| 国产成人欧美| 91麻豆久久久| 亚洲天堂区| 国产精品成人久久| 福利在线一区| 香蕉精品在线| 亚洲欧洲一区二区三区| 日韩福利视频导航| 亚洲视频四区| 内射人妻无套中出无码| 亚洲高清无码精品| 呦系列视频一区二区三区| 人妻中文久热无码丝袜| 亚洲另类国产欧美一区二区| 欧美影院久久| 欧美69视频在线| 亚洲国产综合精品一区| 亚洲色成人www在线观看| 91久久青青草原精品国产| 伊人久综合| 国内a级毛片| 亚洲精品大秀视频| 91麻豆精品国产91久久久久| 欧美成在线视频| 日本免费福利视频| 无码人妻免费| 狠狠v日韩v欧美v| 国产白浆在线观看| 亚洲欧美另类久久久精品播放的| 亚洲综合在线网| 亚洲无线观看| 国产福利拍拍拍| 丁香六月综合网| 国产激爽爽爽大片在线观看| 国产呦精品一区二区三区下载| 国产黄色免费看| 中文字幕色站| 无码网站免费观看| 欧洲熟妇精品视频| 亚洲三级视频在线观看| 国产福利2021最新在线观看| 又粗又大又爽又紧免费视频| 一级毛片免费播放视频| 欧美精品亚洲精品日韩专区| 久久免费精品琪琪| 九九热视频精品在线| 99精品这里只有精品高清视频| 国产在线视频二区| 日韩精品专区免费无码aⅴ| 国产女同自拍视频| 国产屁屁影院| 狠狠干综合| 欧美日韩资源| 国产成a人片在线播放| 二级特黄绝大片免费视频大片| 亚洲精品另类| 亚洲国产精品日韩欧美一区| 黄色网站不卡无码| 亚洲美女久久| 亚洲综合极品香蕉久久网| 欧美日韩高清在线| 91精品人妻互换| 伊人AV天堂| 日韩成人在线网站| 激情午夜婷婷| 成人在线观看不卡| 国产成人精品一区二区免费看京| 成人在线观看不卡| 九色在线观看视频| 91激情视频| 亚洲毛片一级带毛片基地| 97超级碰碰碰碰精品| 国产精品一区二区无码免费看片|