工程筆記本 / LinkIt 聯發科家族

LinkIt 聯發科家族

【LA計畫】App Inventor 接收 LinkIt ONE 兩筆可變電阻值,還可做磁力畫板

CAVEDU 阿吉 - 雜工📅 2015-07-10👁 16
本文介紹如何使用 App Inventor 擷取 LinkIt ONE 上的兩筆可變電阻資料,作法與 [雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機 是一樣的,只是 LinkIt ONE 在藍牙設定上有一點點不一樣,因此寫一篇分享一下。 除了可在Android 手機畫面上看到 LinkIt ONE 兩個類比腳位變化之外,還可畫線,類似小時候的磁力畫板(啊,暴露年紀...) 本文感謝 CAVEDU 實習生施力維完成

檔案請點我下載


            延伸閱讀

[雙A計畫] 常見問題整理

[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino

[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

[雙A計劃] Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機


      程式說明 在此只列出 Clock.Timer 事件,首先送出一個 122 數字,LinkIt ONE接收到之後就會把 A0, A1 值丟給 App Inventor。變數X是 LinkIt ONE 傳來的 A0腳位值,Y則是A1. 由於 Canvas 的大小是 320  x 320,因此我們設定把 A0原本的 0~ 1023 範圍透過 map 指令轉為 0~ 320,對應到 X 軸座標。A1 則是對應到 Y 座標,最後使用 Canvas.DrawLine 指令就可以隨意畫圖囉! 01 對應的片段如下 [pastacode lang="c" message="LinkIt ONE 端透過 LBTServer 將 A0, A1 依序送出" highlight="" provider="manual" manual="if(LBTServer.connected())%7B%0A%20%20%20%20%20%20a1%20%3D%20analogRead(A0)%3B%0A%20%20%20%20%20%20a2%20%3D%20analogRead(A1)%3B%0A%20%20%20%20%20%20a1%20%3D%20map(a1%2C0%2C1023%2C0%2C320)%3B%0A%20%20%20%20%20%20a2%20%3D%20map(a2%2C0%2C1023%2C0%2C320)%3B%0A%20%20%20%20%20%20Serial.printf(%22%25d%5Ct%25d%5Cn%22%2Ca1%2Ca2)%3B%0A%20%20%20%20%20%20if(LBTServer.read()%20%3D%3D%20122)%7B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write('j')%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a1%2F256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a1%25256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a2%2F256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a2%25256)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20delay(10)%3B%0A%20%20%7D"/]    
    LinkIt ONE 端完整程式 [pastacode lang="c" message="LinkIt ONE 送出 A0 , A1 類比腳位給 App Inventor" highlight="" provider="manual" manual="%23include%20%3CLBT.h%3E%0A%23include%20%3CLBTServer.h%3E%0A%23define%20serverName%20%22BTserverTest%22%0A%23define%20serverWaitTime%205%0A%0Achar%20BTwrite%3B%0Avoid%20setup()%20%7B%0A%20%20Serial.begin(115200)%3B%0A%20%20while%20(!Serial)%3B%0A%20%20LBTServer.begin((uint8_t*)serverName)%3B%0A%20%20Serial.printf(%22%5B%25s%5D%20is%20waiting%20for%20any%20client...%5Cn%22%2CserverName)%3B%0A%20%20%0A%20%20while(!LBTServer.accept(serverWaitTime))%7B%0A%20%20%20%20Serial.println(%22%20...%20%22)%3B%0A%20%20%7D%0A%20%20Serial.println(%22%3D%3D%3DConnected!%3D%3D%3D%22)%3B%0A%7D%0Aint%20a1%2Ca2%3B%0Avoid%20loop()%20%7B%0A%20%20if(LBTServer.connected())%7B%0A%20%20%20%20%20%20a1%20%3D%20analogRead(A0)%3B%0A%20%20%20%20%20%20a2%20%3D%20analogRead(A1)%3B%0A%20%20%20%20%20%20a1%20%3D%20map(a1%2C0%2C1023%2C0%2C320)%3B%0A%20%20%20%20%20%20a2%20%3D%20map(a2%2C0%2C1023%2C0%2C320)%3B%0A%20%20%20%20%20%20Serial.printf(%22%25d%5Ct%25d%5Cn%22%2Ca1%2Ca2)%3B%0A%20%20%20%20%20%20if(LBTServer.read()%20%3D%3D%20122)%7B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write('j')%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a1%2F256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a1%25256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a2%2F256)%3B%0A%20%20%20%20%20%20%20%20BTwrite%20%3D%20LBTServer.write(a2%25256)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20delay(10)%3B%0A%20%20%7D%0A%20%20else%7B%0A%20%20%20%20Serial.println(%22%3D%3D%3DDisconnected!%3D%3D%3D%22)%3B%0A%20%20%20%20Serial.printf(%22%5B%25s%5D%20is%20waiting%20for%20any%20client...%5Cn%22%2CserverName)%3B%0A%20%20%20%20while(!LBTServer.accept(serverWaitTime))%7B%0A%20%20%20%20%20%20Serial.println(%22%20...%20%22)%3B%0A%20%20%20%20%7D%0A%20%20%20%20Serial.println(%22%3D%3D%3DConnected!%3D%3D%3D%22)%3B%0A%20%20%7D%0A%7D"/]
  執行畫面 從 Serial Monitor 可以看到 A0, A1 目前的狀態 11713381_783552385096897_1979904894_n 轉動 A0, A1 的可變電阻就可以畫出隨意線條,是不是和磁力畫板很像呢?左側是 A0 數值,右側是 A1   11739516_783552328430236_792456203_n 11668094_783552338430235_89140845_n  

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。