張嘉宇 DFRobot課程設(shè)計(jì)工程師,編纂設(shè)計(jì)“Mind+Python編程入門(mén)系列課程”“Mind+Python編程進(jìn)階系列課程”“BXY高中信息技術(shù)教程”等系列課程,曾帶隊(duì)參加VEX機(jī)器人世界錦標(biāo)賽獲分區(qū)冠軍。
教學(xué)背景
在日常生活中,光線(xiàn)的強(qiáng)弱對(duì)人類(lèi)的情緒有著很大的影響。無(wú)論是積極還是消極的情緒,愈明亮的光線(xiàn)愈會(huì)讓這種情感加劇。也正因此,書(shū)房、廚房等一些具有實(shí)用功能的家居環(huán)境,往往會(huì)采用較強(qiáng)光線(xiàn)的燈光,這樣更能讓人集中精神,情緒飽滿(mǎn)地投入工作或家務(wù)。而臥室則適合較弱光線(xiàn)的燈光,給人一種溫馨舒適的感覺(jué),有助于放松身心。然而,僅憑主觀(guān)的感受很難精準(zhǔn)地判斷光線(xiàn)強(qiáng)弱,那如何才能獲悉環(huán)境光的大小,繼而判斷家庭中各個(gè)房間的燈光是否合理呢?本節(jié)課我們將利用行空板來(lái)制作一個(gè)捕光儀,以便更好地了解房間的環(huán)境光強(qiáng)度,適時(shí)做出調(diào)整。
教學(xué)目標(biāo)
1.認(rèn)識(shí)光線(xiàn)傳感器的特點(diǎn)及功能。
2.了解Pinpong庫(kù)的實(shí)現(xiàn)原理、設(shè)計(jì)理念、編程規(guī)范等。
3.學(xué)會(huì)使用Pinpong庫(kù)檢測(cè)光線(xiàn)值的方法。
4.掌握使用Unihiker庫(kù)顯示圖片、切換文字及圖片的方法。
教學(xué)重難點(diǎn)
教學(xué)重點(diǎn) 在Python環(huán)境下,使用Unihiker庫(kù)編寫(xiě)程序顯示并更新圖片和文字,使用Pinpong庫(kù)編寫(xiě)程序檢測(cè)環(huán)境的光線(xiàn)值。
教學(xué)難點(diǎn) 使用Pinpong庫(kù)編寫(xiě)程序檢測(cè)環(huán)境的光線(xiàn)值。
教學(xué)準(zhǔn)備
行空板、Type-C&Micro二合一USB線(xiàn)、Mind+編程軟件。
教學(xué)過(guò)程
一、情境導(dǎo)入
師:同學(xué)們,在我們的家中,廚房和臥室使用的燈具是不是往往光線(xiàn)強(qiáng)弱不一樣呢?大家知道這是為什么嗎?
學(xué)生思考、回答……
師:同學(xué)們說(shuō)得都很好,廚房常常選擇強(qiáng)光燈,這樣更能讓人集中精神投入家務(wù),臥室選擇弱光燈,給人一種溫馨舒適的感覺(jué),有助于放松身心。然而,我們僅憑主觀(guān)的感受很難精準(zhǔn)地判斷光線(xiàn)強(qiáng)弱,那如何才能獲悉環(huán)境光的強(qiáng)弱,繼而判斷家庭中各個(gè)房間的燈光是否合理呢?
學(xué)生思考并討論。
師:解決這個(gè)問(wèn)題的方法有很多,這節(jié)課上,讓我們利用行空板來(lái)制作一個(gè)捕光儀,更好地了解房間的環(huán)境光強(qiáng)度吧。
二、講授知識(shí)
教師先對(duì)理論知識(shí)進(jìn)行教授,為學(xué)生后期應(yīng)用開(kāi)發(fā)鋪墊知識(shí)基礎(chǔ)。
1.光線(xiàn)傳感器
光線(xiàn)傳感器是一種能夠?qū)⒐庑盘?hào)轉(zhuǎn)換成電信號(hào)的器件,可用于檢測(cè)光線(xiàn)值。行空板的光線(xiàn)傳感器是內(nèi)置在板子上的,如圖1,檢測(cè)時(shí)返回的是一個(gè)模擬量,數(shù)值范圍在0~4095,光線(xiàn)越亮數(shù)值越高,光線(xiàn)越暗數(shù)值越低。
2.Pinpong庫(kù)通用知識(shí)及功能
師:通過(guò)Mind+軟件,我們可以將行空板與計(jì)算機(jī)連接起來(lái),但如何才能使行空板上的元器件運(yùn)行起來(lái)呢?這里我們就需要使用Pinpong庫(kù)。
Pinpong庫(kù)是一套控制開(kāi)源硬件主控板的Python庫(kù),原理是給開(kāi)源硬件燒錄一個(gè)特定的固件,使開(kāi)源硬件可以通過(guò)串口與電腦通信,執(zhí)行各種命令。Pinpong庫(kù)的名稱(chēng)由“Pin”和“Pong”組成,“Pin”指引腳,“Pinpong”為“乒乓球”的諧音,指信號(hào)的往復(fù)。Pinpong庫(kù)的設(shè)計(jì),能讓開(kāi)發(fā)者在開(kāi)發(fā)過(guò)程中將重點(diǎn)放在程序功能的實(shí)現(xiàn),不被繁雜的硬件型號(hào)束縛。哪怕程序編寫(xiě)初期用其他板子開(kāi)發(fā),部署時(shí)改成了行空板,只要修改一下硬件的參數(shù)就能正常運(yùn)行,實(shí)現(xiàn)“一次編寫(xiě),處處運(yùn)行”。
師:行空板上的所有硬件都可以通過(guò)Pinpong庫(kù)來(lái)控制嗎?
學(xué)生思考、討論并回答。
師:事實(shí)上,整個(gè)行空板由一塊單板機(jī)和單片機(jī)系統(tǒng)組成。單片機(jī)系統(tǒng)類(lèi)似一塊Arduino,而單板機(jī)我們可以當(dāng)作一臺(tái)小電腦,無(wú)論是單片機(jī)上接的接口、傳感器等元器件,還是單板機(jī)上接的麥克風(fēng)、USB口等設(shè)備,都可以通過(guò)Python庫(kù)來(lái)控制。
使用Pinpong庫(kù)控制行空板時(shí),需要先初始化板子,而由于Pinpong庫(kù)的“pinpong.board”包中已經(jīng)提供了相應(yīng)的Board類(lèi),因此我們需要從中先導(dǎo)入這個(gè)模塊。同樣的,為了能夠控制行空板上各元器件,我們也需要導(dǎo)入“pinpong.extension.unihiker”模塊,并在初始化語(yǔ)句中輸入主控板型號(hào)和主控板端口號(hào),不輸入則進(jìn)行自動(dòng)識(shí)別。
初始化板子后,可通過(guò)Pinpong庫(kù)中的“l(fā)ight.read()”指令讀取光線(xiàn)值。其中,“l(fā)ight.read()”表示讀取光線(xiàn)值,是固定用法,可以用“Light”作為變量,存儲(chǔ)讀取到的光線(xiàn)值。
3.Unihiker庫(kù)GUI類(lèi)draw_image()方法顯示圖片
GUI類(lèi)中的draw_image()方法可以實(shí)現(xiàn)在行空板屏幕上顯示圖片,在編程時(shí),通過(guò)“對(duì)象.方法名()”的形式來(lái)實(shí)現(xiàn)功能,同時(shí),此方法會(huì)返回一個(gè)圖片對(duì)象,使用變量存儲(chǔ)起來(lái),方便后續(xù)進(jìn)行對(duì)象更新操作。
圖片一般按照寬高最小邊等比例縮放,可省略,若寬高參數(shù)都省略則保持原圖分辨率,這里我們可以使寬高和屏幕保持一致,如圖2。當(dāng)需要設(shè)定圖片的位置時(shí),也可通過(guò)固定x和y的值來(lái)確定圖片的橫縱坐標(biāo),位置為(0,0)時(shí)可省略。
4.Unihiker庫(kù)GUI類(lèi)通用知識(shí)及功能
行空板屏幕上顯示的所有元素對(duì)象可稱(chēng)為控件,如圖片、文字、表情、按鈕等??丶?duì)象在初次生成后是可以改變的,我們可以通過(guò)“對(duì)象.config()”的形式來(lái)實(shí)現(xiàn)。例如,我們先讓行空板顯示一張初始的背景圖“l(fā)ight-1.png”,并將它存儲(chǔ)到變量img(圖像控件)中,通過(guò)config更新控件對(duì)象的方式將背景圖換成“l(fā)ight-2.png”。再比如,我們先在(153,28)坐標(biāo)位顯示一行文字,內(nèi)容為“800”,并將它存儲(chǔ)到了變量value(文字控件)中,能通過(guò)config更新控件對(duì)象的方式將文字內(nèi)容換成“666”。
三、動(dòng)手實(shí)踐
師:接下來(lái),讓我們動(dòng)動(dòng)手,通過(guò)行空板板載的光線(xiàn)傳感器實(shí)時(shí)檢測(cè)光線(xiàn)值,將它顯示在屏幕上,同時(shí)將光線(xiàn)值均勻劃分為4個(gè)不同的等級(jí),并以此顯示不同亮度的小燈圖。
1.硬件搭建
學(xué)生通過(guò)USB連接線(xiàn)將行空板連接到計(jì)算機(jī),如圖3。
2.軟件配置
教師指導(dǎo)學(xué)生配置Mind+軟件,依次“啟動(dòng)軟件—?jiǎng)?chuàng)建與保存項(xiàng)目文件—?jiǎng)?chuàng)建與保存Python文件—導(dǎo)入圖片素材”,如圖4。
3.程序編寫(xiě)
教師講解各分功能段的程序代碼,包括導(dǎo)入所需功能庫(kù)、實(shí)例化GUI類(lèi)并在行空板屏幕上顯示背景圖和初始光線(xiàn)值、循環(huán)檢測(cè)光線(xiàn)值并更新數(shù)值顯示及圖片等。在設(shè)計(jì)循環(huán)檢測(cè)光線(xiàn)值并更新數(shù)值顯示功能段程序時(shí),為了使光線(xiàn)值能夠每隔一秒不間斷地被監(jiān)測(cè),并更新顯示在屏幕上,建議使用while語(yǔ)句。掃描二維碼可獲取完整代碼資料。
4.運(yùn)行程序
教師指導(dǎo)學(xué)生一起運(yùn)行程序,并從不同的角度給行空板光線(xiàn)傳感器打光。學(xué)生會(huì)發(fā)現(xiàn)屏幕上方的光線(xiàn)值每隔一定的時(shí)間就會(huì)變化,而小燈的亮度及進(jìn)度條的填充度也在相應(yīng)地改變。光線(xiàn)越強(qiáng),數(shù)值越大,小燈越亮,進(jìn)度條填充度也越高,如圖5。
四、拓展與提升
教師和學(xué)生討論,當(dāng)光線(xiàn)值過(guò)大(光線(xiàn)值>3072)或過(guò)小(光線(xiàn)值<1024)時(shí),應(yīng)如何編寫(xiě)程序,在行空板屏幕上顯示“光線(xiàn)值過(guò)大/過(guò)小”的文字提醒。
教學(xué)反思
本課通過(guò)設(shè)計(jì)制作捕光儀,讓學(xué)生學(xué)會(huì)觀(guān)察生活,發(fā)現(xiàn)生活中一些現(xiàn)象背后的原因和問(wèn)題,然后通過(guò)學(xué)習(xí)新的技術(shù)尋找解決問(wèn)題的方法。
在教學(xué)方法上,本節(jié)課多數(shù)教學(xué)環(huán)節(jié)都會(huì)通過(guò)提問(wèn)互動(dòng)的方式進(jìn)行,讓學(xué)生能夠充分思考。在項(xiàng)目實(shí)踐過(guò)程中,筆者將任務(wù)進(jìn)行拆解,讓學(xué)生在一個(gè)個(gè)小任務(wù)中逐步發(fā)現(xiàn)問(wèn)題和解決問(wèn)題,不僅鍛煉了學(xué)生的思維能力,同時(shí)也提升了綜合素養(yǎng)。
(本課件由DF創(chuàng)客社區(qū)推薦)