[LinkIt 7697開發板教學]PWM類比模擬控制-Blocklyduino圖形化開發環境

本文要介紹聯發科技實驗室推出的Blocklyduino圖形化開發環境搭配LinkIt 7697開發板製作的小型電路專題。您可由此比較與一般Arduino IDE的類C語法的異同。

作者/攝影   曾吉弘
時間   3小時
成本  LinkIt 7697開發板
難度   * * *
材料表
  • 個人電腦
  • LinkIt 7697 開發板

 

Blocklyduino簡介

        Blocklyduino是由聯發科技實驗室所開發,是根據Google Blockly搭配LinkIt 7697 開發板的圖形化開發環境。說是搭配LinkIt 7697,但其實轉成Arduino code之後,要燒到別片Arduino當然也可以。差別就在於一些特殊的函式庫。這樣的兩階段開發可以兼顧初學者與進階玩家。初學者只要拉拉方塊就能完成許多應用,進階玩家則可進一步轉成Arduino類C語言之後做到更多功能,不會受限於積木指令本身的功能限制,反而可以快速驗證想法是否可行。

 

阿吉補充(阿不整篇都是我寫的嗎?):說真的聯發科技實驗室真的…與眾不同。除了開發板之外,還有一個免費的MCS雲服務,現在又出一個Blocklyduino來降低使用者門檻。也許就是因為這樣才樂得一直寫書。不是做一片可以上網的板子,就是物聯網的player

 

6月於台北市日新國小暨台北市自造教育示範中心已經舉辦了第一梯物聯網種子教師研習,就是使用LinkIt 7697喔,請參考我們上課的投影片

[slideshare id=77042099&doc=random-170618074003]

 

硬體線路

請將Linkit 7697插上麵包板,並如以下示意圖將LED正負極接到P9與GND腳位。

 

7697支援PWM的腳位相當多,供電得當的話可以做出8-servo的四足機械獸。請參考本圖:MTK pinout (來源: https://docs.labs.mediatek.com/)

接下來將使用Blocklyduino 與 Arduino 類C語言來比較,使用LED呼吸燈範例。

Blocklyduino程式碼

本程式中用到了變數i,請先由Blocklyduino左側的變數中找到第一個指令,預設變數名稱為item,點選下拉式選單即可改名。

另外在本指令的左側”整數”點選下拉式選單可以看到目前Blocklyduino支援的資料型態,雖然是給小朋友或初學者用的開發環境,定義上可不馬虎呢。(對比:App Inventor只把資料型態分為數字、文字與布林)。

請對邏輯的”或”點擊滑鼠右鍵,選擇”多行輸入”,就會從原本的一個橫列改為多個橫列,這樣在畫面擷圖或製作學習單上會比較方便喔。

7697程式碼

這是Arduino IDE的基本範例。使用analogWrite()指令去控制腳位的PWM狀態,藉此來模擬類比輸出的效果。Arduino與相容開發板在此通常都是把0~1之間再劃分成256格,意即2的8次方。其他高檔一點的開發板可能可到2的10次方或更高的解析度。

 

if判斷式去檢查亮度是否達到上下限值,如果brightness變數值等於255,就將fadeamount x -1,下ㄧ次進迴圈執行 brightness += fadeamount 就會變成 255 + (-5),這樣LED就會慢慢變暗了。一路當 brightness 降到0時,fadeamount 又再次乘以-1,負負得正,LED就慢慢變亮囉。

 

在此我們特意把Arduino IDE 與 BlocklyDuino的變數命名方式一致,您可以比較看看彼此異同。

路徑:File/Example/Basic/Fade

[pastacode lang=”java” manual=”int%20brightness%20%3D%200%3B%09%2F%2F%E6%9C%AC%E8%AE%8A%E6%95%B8%E6%9C%83%E5%9C%A80~255%E4%B9%8B%E9%96%93%E8%AE%8A%E5%8C%96%EF%BC%8C%E7%94%A8%E6%96%BC%E6%8E%A7%E5%88%B6LED%E4%BA%AE%E5%BA%A6%0Aint%20fadeAmount%20%3D%205%3B%20%2F%2F%E6%AF%8F%E6%AC%A1%E4%BA%AE%E5%BA%A6%E7%9A%84%E7%B4%AF%E5%8A%A0%E5%80%BC%0Avoid%20setup()%20%7B%0A%20%20pinMode(led%2C%20OUTPUT)%3B%20%20%20%2F%2F%E8%A8%AD%E5%AE%9A9%E8%99%9F%E8%85%B3%E4%BD%8D%E6%A8%A1%E5%BC%8F%E7%82%BA%E8%BC%B8%E5%87%BA%0A%7D%0A%20%0Avoid%20loop()%20%7B%0A%20%20analogWrite(led%2C%20brightness)%3B%20%20%2F%2F%E6%9C%AC%E6%8C%87%E4%BB%A4%E6%8E%A7%E5%88%B6%20LED%20%E4%BA%AE%E5%BA%A6%0A%20%0A%20%20i%20%2B%3D%205%3B%20%2F%2F%E7%B4%AF%E5%8A%A0%E6%88%96%E7%B4%AF%E6%B8%9B%0A%20%20if%20(brightness%20%3D%3D%200%20%7C%7C%20brightness%20%3D%3D%20255)%20%7B%20%20%2F%2F%E5%88%A4%E6%96%B7%E4%B8%8A%E4%B8%8B%E9%99%90%0A%09fadeAmount%20%3D%20-fadeAmount%20%3B%0A%20%20%7D%0A%20%20delay(30)%3B%20%20%20%2F%2F%E6%AF%8F%E7%A7%92%E6%9B%B4%E6%96%B033%E6%AC%A1%0A%7D” message=”” highlight=”” provider=”manual”/]

以下是本blocklyduino程式轉出來的Arduino code,您也可以比較一下喔。

相關文章:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *