本學期開設Arduino創意電子應用課程,課程旨在結合電子系統設計、開源硬體、圖形化編程等相關知識,從生活情境出發,設置問題和任務,讓學生動手搭建設計智能控制系統,培養工程思維和動手能力;學生可以利用Arduino開源硬體、電子執行部件、傳感器設計控制系統,再利用圖形化編程實現各作品的功能。
課程會根據具體內容選擇採用協作-探究、項目式學習、任務驅動、CDIO等多種教學模式,以小組合作的形式開展,引導學生積極主動建構自身關於電子應用方面的知識體系,以及組織學生以小組為單位製作創意作品,體驗作品從「構思」、「設計」、「實現」,再到「運行」的全過程,注重培養學生動手解決實際問題、團隊合作、創新創造等能力。
在本節課前,我們已經上過三次課啦,來回顧一下我們上過的主要內容吧。
第四節課我們的主題是「Arduino也有生命」,具體情境任務是做一個呼吸燈,即讓LED燈像人的呼吸一樣有節奏,逐漸變亮,再逐漸變暗,再逐漸變亮,以此循環往復。
那麼問題就來了:我們前面學的都只是控制LED燈的亮與滅兩種狀態,該如何控制LED燈具體的亮度(比如讓LED燈暗一點)呢?對此我們逐一開展了三個任務學習。
請大家連接一個點亮LED燈的線路,先讓這個燈持續點亮,觀察並記住其亮度;再把線路改成閃爍LED燈的程序。(這個任務主要是為了讓大家快速回顧一下前面的學習內容)
請大家將閃爍LED燈的程序稍作修改,再看看結果如何。(已知數字輸出只能輸出「高」、「低」兩種狀態,那我們能不能通過改變延時時間的方法來控制LED燈具體的亮度?)
在這個學習環節中,我們藉助導學案開展小組合作學習,各位同學在組內都充當各自重要的角色——測試者、記錄者,或分享者。
經過各組的實驗數據分析,我們可以得知實驗結果為:
(1)沒有閃爍得更快,而是看起來像持續地點亮;
(2)亮度比直接點亮LED燈的要低一點。
根據結果(1)我們認識到,當延時的時間越短,LED燈其實是會閃爍得越快的,但快到一定程度的時候,我們肉眼已經察覺不出它的閃爍,看起來像持續地點亮,這是因為我們人眼視覺暫留的原因。
結果結果(2)我們可知,理論上,我們可以通過這種方法來使LED燈變得暗一些。
但是我們有更簡便的方法。對此我們來學習一個新的知識——PWM(脈衝寬度調製)。
脈衝寬度調製是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。
我們可以做如下理解:
1. 脈衝:斷續出現的電壓或電流。
2. 脈衝波:就是以衝擊形式產生的信號波形。比如:心電圖上的脈搏跳動的波形。
要學會脈衝寬度調製需要看懂以下這張圖:因為脈衝是斷續出現的電壓或電流,那麼像紅框裡面所示,一個高電平一個低電平是一個周期,在一個周期裡面,如果高電平佔到整個周期的80%,那我們說它的佔空比是80%;同理,如果高電平佔到整個周期的50%或者20%,那它的佔空比就是80%或者20%。
在這三個PWM波中,第一個的高電平在整個周期中佔的時間多一些,所以它的LED的亮度會高一些;同理,第三個 LED的亮度會低一些。
又因為人眼的視覺暫留的特性,我們都看不出LED的快速閃爍,看到的是LED持續點亮。
同學們也在導學案中做了學習筆記,那麼我們控制LED燈的亮度的方法這就找到了:給LED燈輸出對應脈衝波。
那麼如何給LED燈輸出對應脈衝波呢?這裡我們就進一步學習了Arduino板。
分別上傳以下程序到Arduino板,觀察LED燈的亮度變化。
同學們經過實驗發現,模擬輸出的值越高時,LED燈就會越亮。
但如果想要更亮,並不是可以賦值為500、1000甚至更大的哦,我們最大只能輸入255,因為模擬輸出的取值範圍為:0-255.
了解完這些內容,我們就可以開啟我們今日的最終學習任務啦:做一個呼吸燈(燈像人的呼吸一樣,逐漸變亮,再逐漸變暗。)
各組同學都完成了,有些小組還在任務的基礎上加設了自己的小設計。
下課了絕大部分學生仍然選擇留下來繼續學習。