此系列文章在於分享使用浤鉅科技的ePy系列的教學
1.支持按鍵A, 重置鍵RST
2.藍牙BLE5.0可以做為程式下載或藍牙控制用
3.可外接RGB彩色燈, 最多64顆, 可以做出文字, 圖形顯示, 情境燈等
4.支持單色LED, 紅色R/綠色G/黃色Y, 可以做燈光明亮控制
5.支持UART x2, I2C x3, SPI x1,方便來與各種感測器及設備來做連接及控制
6.支持4路PWM, 可以用來控制馬達速度,
7.支持USB 隨插即用及U-Disk,並可以直接儲存資料在EPY-Lite
8.電池插座
在任何一個瀏覽器上輸入https://www.easy-py.net/,即可進入編成實驗室,我們將會在此編輯撰寫程式碼,並做燒錄上傳的動作。如果還未了解PyCode環境的使用者,可以觀看其他文章「PyCode環境介紹」,裡面有詳細的說明。
我們使用8X8 RGB LED燈板做簡單的示範吧
首先,將ePy-Lite開發板與8X8 RGB LED連接,注意防呆接頭的方向,切記不要硬插。
我是用USB cable來與電腦連線
請使用microUSB線連接電腦與ePy-Lite。當連線ePy-Lite之後,板子上的電源燈將會點亮,燈號為綠色。
我們可以從積木區域點選「主機板」→「LED燈」,選擇積木讓燈板左上角第一顆燈點亮,完成積木後點選執行進行燒錄。
一般來說程式語言的順序都是從0開始,但為了學生操作方便,積木會以第1個開始計算。
我們來製作單一顆燈的跑馬燈模式,測試一下燈板上每個LED是否可以正常點亮,並練習基本的運算思維
結果會如下方影片。
接下來我們試著做出不同的變化:
偷看解答:
但這樣做是不是比較麻煩?因為要貼上八個小迴圈,感覺上式畫蛇添足對吧!
所以我們要使用運算思維來改變程式語言的寫法,以達到縮短程式碼,提高效率的方式。
運算思維分成四個步驟:
拆解 (decomposition):將問題拆解成較易處理的小問題。
規律辨識(pattern recognition):檢視拆解後的問題,是否存在規律或趨勢。
抽象化(abstraction):找出產生規律的規則。
演算法 (algorithm):設計逐步執行的指令解決問題。
開始吧!
剛才我已經把跑馬燈的問題給先拆解開來,形成八個小迴圈
將每個迴圈拉出來一一比較
我們會發現它可以分成兩個模式,一個是遞增的模式,另一個是遞減的模式。
接下來我們從拆解後的兩個部分試圖找到其中規律,
遞增:每個部份的開頭分別是1、17、33和49開始,所以剛好都是16的倍數餘1。
遞減:每個部分的開頭分別是9、28、41和57開始,所以剛好都是16的倍數餘9。
選擇16的原因是以來回算1趟,一趟會使用兩排LED燈。
抽象化
對我來說抽象化的意思就是從模式中找到規則,而我是透過數學運算建立規則
遞增的部分很簡單,只需要重複8次,每次+1即可。但遞減必須從最尾端開始,
以第二排為例,LED的順序是從16遞減至9,所以9要先加上7後再進行遞減,以此類推。
把需要顯示的燈號、等待時間與遞增(減)填入
我們先跑一次測試,我在最後一加上顯示變數i是為了我要確定最後i的數值是多少。
果不其然回到8,原因是我從16累減了8次,最後自然會回到8,這樣我們無法跑下一輪。
所以我新增一個運算,在每次遞減完之後,刻意加上9讓他回到下一排LED
演算法
演算法就是將事物的前因後果排出順序並讓其重複執行,我們要思考共有8排,來回一趟為一組,所以共有四次迴圈:先進行遞增,再進行遞減,因為我的運算已經測試過是正確的,所以直接加上4次迴圈就可以了。
跑完整個8X8面板之後,為了要讓它不停重複執行,所以我加上一個while True
完整程式碼如下
OK,打完收工
下一個專題我們就要思考如何將基礎的跑馬燈變化!