| 作者/攝影 | 曾吉弘 |
| 時間 | 3小時 |
| 難度 |
★★★☆☆ |
| 材料表 |
|
本文要介紹如何使用Mediatek Cloud Sandbox (聯發科技實驗室推出的雲服務)來控制LinkIt 7697上的 RGB LED 的個別顏色亮度。程式使用Blocklyduino圖形化開發環境開發板製作的小型電路專題。您可由此比較與一般Arduino IDE的類C語法的異同。請參考我們上課的投影片(超過100頁喔)!:
[slideshare id=77042099&doc=random-170618074003]
MCS端設定
請登入MCS雲服務,建立新的原型,其下有三個整數(integer)型態的控制器,channel id 分別是 red, green, blue,下限0上限255,這是對應於Arduino的 analogWrite語法的參數。詳細建立資料通道畫面如下:
建立好三個資料通道之後,請為這個原型建立一個測試裝置,完成如下圖:
硬體線路
請將Linkit 7697插上麵包板,並根據下圖將RGB LED負極(最長腳)接到GND腳位。左到右分別代表R G B三個顏色的腳位,請分別接到LinkIt 7697的P10、P8與P6腳位。
Blocklyduino程式碼
初始化/setup()
在此會先連上指定的Wi-Fi AP、MCS伺服器並新增所指定的通道id。請注意相關資訊不要打錯
重複執行/loop()
在此會持續與MCS保持同步,如果任一通道有更新(使用者在MCS輸入新的數值)的話,就會根據新的數值來控決定對應的RGB LED顏色強度。最後則是把MCS的數值顯示於Serial Monitor
7697程式碼
上述BlocklyDuino轉出來的Arduino程式碼如下,請直接上傳到7697之後就可以執行,重要的指令都以註解方式寫在程式碼中。
操作
請先檢查相關資料是否都正確,執行7697端程式。確認7697已連上MCS之後,請在各個控制器通道輸入0~255之間的數值,即可看到RGB LED顏色產生變化,也會把相關數值顯示於Serial Monitor
由於BlocklyDuino目前尚未提供MCS的PWM控制器資料通道的指令,但您可以自行在轉為Arduino code之後將 MCSControllerInteger red(“red”); 改為 MCSControllerPWM red(“red”); 這樣就能在MCS端使用PWM控制器資料通道的拉桿來控制LED亮度。
[pastacode lang=”java” manual=”%23include%20%3CLWiFi.h%3E%0A%23include%20%22MCS.h%22%0A%0Achar%20_lwifi_ssid%5B%5D%20%3D%20%22%22%3B%20%20%20%20%20%2F%2FWi-Fi%20%E5%B8%B3%E8%99%9F%0Achar%20_lwifi_pass%5B%5D%20%3D%20%22%22%3B%20%20%20%2F%2FWi-Fi%20%E5%AF%86%E7%A2%BC%0AMCSDevice%20mcs(%22%22%2C%20%22%22)%3B%20%2F%2FMCS%E6%B8%AC%E8%A9%A6%E8%A3%9D%E7%BD%AE%E7%9A%84%20deviceId%2C%20deviceKey%0A%0AMCSControllerInteger%20red(%22red%22)%3B%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%96%B0%E5%A2%9E%20channelId%20%E7%82%BA%20red%20%E7%9A%84%E6%95%B4%E6%95%B8%E5%9E%8B%E6%8E%A7%E5%88%B6%E8%B3%87%E6%96%99%E9%80%9A%E9%81%93%0AMCSControllerInteger%20green(%22green%22)%3B%20%20%2F%2F%20green%0AMCSControllerInteger%20blue(%22blue%22)%3B%20%20%20%20%20%20%20%2F%2F%20blue%0A%0Avoid%20setup()%0A%7B%0A%20%20mcs.addChannel(red)%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E5%B0%87%E9%80%99%E4%B8%89%E5%80%8Bchannel%20%E5%8A%A0%E5%85%A5%E6%B8%AC%E8%A9%A6%E8%A3%9D%E7%BD%AE%0A%20%20mcs.addChannel(green)%3B%0A%20%20mcs.addChannel(blue)%3B%0A%20%20while%20(WiFi.begin(_lwifi_ssid%2C%20_lwifi_pass)%20!%3D%20WL_CONNECTED)%20%7B%0A%20%20%20%20delay(1000)%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%AF%8F%E9%9A%941%E7%A7%92%E8%A9%A6%E8%91%97%E5%8E%BB%E9%80%A3%E4%B8%8A%E6%8C%87%E5%AE%9A%E7%9A%84%20Wi-Fi%20AP%0A%20%20%7D%0A%20%20while%20(!mcs.connected())%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%8C%81%E7%BA%8C%E8%88%87MCS%E4%BF%9D%E6%8C%81%E9%80%A3%E7%B7%9A%0A%20%20%20%20mcs.connect()%3B%0A%20%20%7D%0A%20%20Serial.begin(9600)%3B%0A%20%20pinMode(10%2C%20OUTPUT)%3B%0A%20%20pinMode(8%2C%20OUTPUT)%3B%0A%20%20pinMode(6%2C%20OUTPUT)%3B%0A%20%20Serial.begin(9600)%3B%0A%7D%0A%0Avoid%20loop()%0A%7B%0A%20%20while%20(!mcs.connected())%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%AA%A2%E6%9F%A5%E8%88%87MCS%E7%9A%84%E9%80%A3%E7%B7%9A%E7%8B%80%E6%85%8B%EF%BC%8C%E5%A6%82%E6%9E%9C%E6%96%B7%E7%B7%9A%E6%9C%83%E5%9C%A8%E6%AD%A4%E9%87%8D%E9%80%A3%0A%20%20%20%20mcs.connect()%3B%0A%20%20%20%20if%20(mcs.connected())%20%7B%0A%20%20%20%20%20%20Serial.println(%22MCS%20Reconnected.%22)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20mcs.process(100)%3B%0A%20%20if%20(red.updated())%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E5%A6%82%E6%9E%9C%E5%90%84%E6%8E%A7%E5%88%B6%E8%B3%87%E6%96%99%E9%80%9A%E9%81%93%E6%9B%B4%E6%96%B0%0A%20%20%20%20analogWrite(10%2C%20red.value())%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E6%A0%B9%E6%93%9A%E8%A9%B2%E5%80%BC%E4%BE%86%E6%8E%A7%E5%88%B6LED%E4%BA%AE%E5%BA%A6%0A%20%20%7D%20else%20if%20(green.updated())%20%7B%0A%20%20%20%20analogWrite(8%2C%20green.value())%3B%0A%20%20%7D%20else%20if%20(blue.updated())%20%7B%0A%20%20%20%20analogWrite(6%2C%20blue.value())%3B%0A%20%20%7D%0A%0A%20%20Serial.print(red.value())%3B%0A%20%20Serial.print(%22%2C%20%22)%3B%0A%20%20Serial.print(green.value())%3B%0A%20%20Serial.print(%22%2C%20%22)%3B%0A%20%20Serial.println(blue.value())%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%E9%A1%AF%E7%A4%BA%E5%90%84%E8%B3%87%E6%96%99%E9%80%9A%E9%81%93%E6%95%B8%E5%80%BC%E6%96%BCSerial%20monitor%0A%7D%0A” message=”” highlight=”” provider=”manual”/]
相關文章:
- [LinkIt 7697 專用] BlocklyDuino之圖形化介面 – 環境建置與介面
- [LinkIt 7697開發板教學]PWM類比模擬控制-Blocklyduino圖形化開發環境
- [課程紀錄] 5、6、7月份 LinkIt 7697全台跑透透@全台灣
- [雷射切割]自己的外殼自己畫LinkIt7697外殼設計 (含完成檔案直接下載)
- [LinkIt 7697開發板上市啦!] 燒燙燙開箱規格報你知
- [課程紀錄]170615,16 國中小自造者教育師資培訓營@日新國小





