Category Archives: AppInventor – 圖形化Android

App Inventor 更新 nb146 – 允許多 Screen 之間的複製貼上功能 – 背包 backpack

App Inventor 更新到 nb146,新增背包功能,就是允許多 Screen 之間的複製貼上功能。本次更新詳述如下:

未命名

  • 元件名稱的空白與字元處理改善,對於非英語系的語言來說相當重要。
  • 點擊  blocks editor 頁面空白處就可以下載所有指令的 png 圖檔,不用再辛苦地螢幕截圖啦,記得先把元件排整齊喔 (請參考上圖,是選單的一個選項)。
  • HorizontalArrangement 與 VerticalArrangement Layouts 元件新增背景顏色 (Background Color) 與背景圖 ( Image) 兩個屬性。
  • 當 App Inventor App 執行時,可以與藍牙鍵盤連線或斷線。
  • 錯誤修正與效能改進。

參考資料:文淵閣的 App Inventor nb146 背包功能介紹

App Inventor Extension 新測試伺服器,允許自定義元件了!

Hal Ableson 博士(也是 MIT App Inventor 頭頭)月前宣布了App Inventor Extension 新測試伺服器,允許自定義元件了!雖然要自己開發元件就是要寫 Java,但總算是開了一條路。

這真的是很重要的一件事,因為程式語言就是在諸多使用者當中不斷改進,加入愈來愈多好用的元件(現在誰還在自己寫 sine 函數呢?)才會更方便好用。由於 App Inventor 2 伺服器無法讓大家任意上傳自行開發的元件,所以只有自己架一個 AI2 server 才有辦法做到這件事。但現在有了新的測試伺服器之後,就可以讓使用者隨時上傳自己寫的元件來測試了,當然也可以匯入別人寫好的元件來當作函式庫來用,感動感動。

Hal 表示目前 Extension 功能只放在測試伺服器上,但未來穩定之後就會變成 App Inventor 正式功能之一。目前網友 PuraVida 就已經寫了一些小元件讓大家來玩玩看,您可由其網頁看到大略的 Java 語法並下載 .aix 檔來匯入。

Continue reading

TQC+ 的 App Inventor 認證指南出版了,歡迎各位老師申請排考

TQC App Inventor 認證要開考啦,認證指南也出版了。有興趣的老師請與電腦技能基金會聯絡排考喔

之前的種子教師研習請看:台北場 / 台中場 / 高雄場

松崗出版 / 碁峰出版

XC15690_cover_OL
XC15690_cover_OL

 

Continue reading

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

雙A計畫第八篇來了!這次我們將告訴您如何在 Android 手機端與Arduino端藉由藍牙來互傳資料,本範例可同時控制 Arduino D13 腳位的高低電位 (有個板載LED,也可以自己接一顆 LED),並在手機畫面上看到 D13 腳位的狀態(High / Low)代表資料收發都完成了。

另外,想了解雙A計畫所有內容的朋友,請參考下面的連結

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

       [雙A計畫] 藍芽模組(HC05/06)常用指令教學

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

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

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

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

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

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

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

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

!!!注意!!!

如果Arduino端太頻繁去傳送LED燈的亮暗狀態給手機的話,可能會造成藍牙通訊塞車。以本範例來說,Arduino端是每100毫秒會傳送一次訊息,但是筆者有試過如果幾乎不等待,就讓Arduino端一直傳送的話,那麼在接收Android手機端的命令時就會出現0與1以外奇怪的數值喔!

程式下載請點我  (aia檔是App Inventor的專案檔,apk檔是手機端的安裝檔,直接丟到手機安裝就可以使用了, ino檔則是給Arduino執行的)


手機端程式說明,使用 App Inventor:

Designer 頁面

Screen Shot 2015-07-23 at 4.47.24 PM

請注意,本範例中的Clock1 元件的 TimeInterval 設定為10毫秒,也就是每10毫秒手機端就會去啟動藍牙接收程式,查看Arduino端的D13腳位的電位高低狀態。

這個參數您可以自由修改,如果想要做到最即時反應那就可以把時間間隔改低一點,但是在這邊提醒一下,藍牙的傳輸資料還是多多少少會有些時間延遲喔!

Blocks 頁面

Screen Shot 2015-07-23 at 4.33.18 PM

區塊元件名稱功能
藍牙列表的設定when ListPicker1.BeforePicking在藍牙連線到裝置前,先將之前配對好的藍芽裝置匯入到準備連接的列表中
藍牙連線到裝置when ListPicker1.AfterPicking選好要連接的藍牙裝置後,將藍牙列表關閉、啟動計時器開始每隔一段時間讀值,並把斷線的按鈕設定為可執行
斷線按鈕的設定when Button3.Click按下斷線後就會斷開藍牙通訊,並把按鈕配置回到一開始的狀態

按鈕發送藍牙訊號來控制 Arduino 以及定期接收 Arduino 的回傳值來改變按鈕 (Button2) 的背景顏色

Screen Shot 2015-07-23 at 4.33.55 PM

區塊元件名稱功能
藍牙遙控LED燈when Button1.Click當按下ON之後就會透過藍牙傳送”1″的訊息給Arduino,如果Arduino成功接收到的話,就會亮燈當按下OFF之後就會透過藍牙傳送”0″的訊息給Arduino,如果Arduino成功接收到的話,就會熄燈每次按下手機螢幕上的開關時,按鈕上的文字都會在”ON”、”OFF”之間做切換

 

藍牙接收LED燈狀態when Clock1.Timer每隔一段時間(本次範例使用的是10ms),就會去接收Arduino透過藍牙傳送過來的LED燈狀態如果是”1″的話,就將旁邊按鈕2的背景顏色設為亮色,代表此時燈是亮的如果是”0″的話,就將旁邊按鈕2的背景顏色設為暗色,代表此時燈是暗的

 

 

[App Inventor 教學] 數字進位轉換

本範例說明如何使用 math 指令中的 convert number 指令來自動轉換進位,很方便的功能喔。程式碼請點我下載

程式說明

1. 在 ListPicker 點選之前,設定其內容為 (二進位 十進位 十六進位) 這三個字串
2. 根據所點選的內容,進行轉換~   就這麼簡單

 
操作
 
請在上方 Textbox 中輸入數字,再點選 ListPicker 選擇這個數字的進位制,就會自動轉換成其他兩個進位制。目前沒有加入數字檢查功能,所以不要選錯囉
 
 
十進位 14 轉二進位 (1110) 與十六進位 (E)


 
十六進位 (F2) 轉二進位 (11110010) 與十進位 (242)
 
 
二進位 (11111011) 轉十進位 (251) 與十六進位 (E)

 



 

App Inventor 改版說明 nb144 (150630)

App Inventor 6/30 發佈的 nb144 更新

  • 在 Designer 頁面重新命名某個元件時,所有相關的已收疊 (collapsed) 指令也會重新命名。
  • Screen1 現在可以隱藏畫面最上方的 “狀態 (Status)” 與 “標題 (Title)” 列。
  • ListView 元件的選曲項目會被強調
  • Activity Starter 元件新增  “Activity Canceled” 事件
  • 修正 Player元件 ,它不再會於電話或是其他插播之後自動播放
  • 修正 ImageSprite  元件的 rotation, 之前在某些裝置上可能會破圖
  • 新增數學指令,同一數值可轉換十進位、十六進位與二進位了!

螢幕快照 2015-07-07 上午12.20.02

  • Clock 元件現在可以自行定義時間與日期格式,如下圖的 pattern 欄位。

螢幕快照 2015-07-06 下午11.59.09

  • 您可同時設定某元件的背景圖與背景顏色,皆可正確顯示
  • TextToSpeech元件現在有下拉式選單來選擇國家(Country)與語言(Language)。新增的指令可自動抓到您所用裝置所支援的國家與語言

[App Inventor 教學] 百度地圖 SDK – 靜態地圖 static map

百度有地圖、定位、導航與全景地圖SDK可運用。鑰使用以上服務的話要申請金曜,這件事對於初學者來說有點麻煩,且在 App Inventor 中幾乎是做不到。所以我們改用靜態地圖來繞過去。

本文將說明如何使用百度靜態地圖API 搭配手機上的 Location Sensor 來更新地圖。請按我來下載 .aia 原始檔。執行畫面如下
Screenshot_2015-06-27-13-45-40
 
也請回顧我們 Google Map 相關的應用

用百度地圖來看看  CAVEDU 大本營,不過座標和 Google Map 不太一樣,用 Google Map 查到的座標在百度地圖上有差一點,想想也是正常的啦
 
 
來看看北京水立方!

 
當然要加個大頭針也是沒問題的
 
 
路徑
 
 


程式說明:
 
Designer 頁面:很簡單,只有 Button、WebViewer 與 LocationSensor 而已

 
Blocks:
 
宣告一個副程式方便管理更新地圖的作業。會把當下的座標顯示在 Screen 的狀態列,也會呼叫 WebViewer 來更新畫面

觸發的事件有兩種:按鈕強制更新與 LocationSensor 自動更新(60秒) ,不建議太頻繁更新不燃手機會很耗電喔
 
 

 

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

雙A計畫不知不覺就來到第七篇了呢!這次我們將告訴您如何在 Android 手機端接收 Arduino端數位感測元件的數值,本範例使用的是超音波感測器讀取的距離數值。

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

       [雙A計畫] 藍芽模組(HC05/06)常用指令教學

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

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

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

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

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

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

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

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

本次範例App Inventor .aia範例檔下載請點我 

先來看看示範的影片吧!

 

 

Continue reading

[App Inventor 教學] 取得中央氣象局即時紫外線強度資料

本範例說明如何取得中央氣象局所提供的即時紫外線強度資料,格式為 JSON,aia下載請按我
 
大家別忘了把您的作品分享到 App Inventor Gallery,下載率很不錯喔
 
一共有30多個站點可供查詢。您還可以結合 Sharing 元件,將紫外線狀況寄發 email 或是發佈到 Facebook 喔。或者用藍牙傳給 Arduino 或樂高機器人也是有趣的專題呢

操作方式如下
 
1. 點選 [取得縣市清單]按鈕,會呼叫Web元件去爬一次上述網址取得最新資料。程式初始畫面如下
 
2. 點選 [選取縣市] 清單選取器,會開啟縣市清單讓您點選想要檢視的觀測站。請注意這是原始資料中的 Sitename 而不是 County,因為在嘉義縣(County)下有三個觀測站:朴子、塔塔加與阿里山
  
 
3. 點選您想要的縣市就會顯示當地的紫外線強度與該站點的GPS座標
 
  
 
4. 還可點選 [開啟地圖] 按鈕,即可在 Google Map 中檢視該站點位置(ActivityStarter元件)
   

Designer 頁面配置如下
 
程式說明
 
按鈕更新最新的紫外線資料
 

 
更新清單內容,會在點選Listpicker之後呼叫 Web元件來取得網頁內容
 

 
解析網頁資料,並根據所點選的觀測站來顯示該站的縣市、紫外線與經緯度資料。
 


開啟地圖

 
本範例所用之變數

150503 TQC+ App Inventor種子教師研習@台北商業大學

CAVEDU 為 TQC+ 所設計的App Inventor智慧型手機程式認證,北中南三場種子教師研習,今天回到台北商業大學,與許多老師們見面。其中很多老師提到了對於App Inventor 中文學習網的期待與建議,我們會在暑假時完成所有範例程式的 AI2 改版,請稍等喔。

這三場研習非常感謝電腦技能基金會的同仁幫忙打點大小事務,還有超豐盛的上午茶下午茶。雖說是北區研習,也是有來自苗栗新竹的老師們,實在是非常感謝大家的支持。我們只能繼續提供更多有趣的範例,讓各位老師在教學上無後顧之憂!

150314 TQC+ App Inventor 專業認證教師研習會

2015-05-03 16.01.44 - 複製

考試用伺服器畫面首次曝光!這是為了考試需求所建置的 App Inventor 伺服器,真是不好搞(幸好還是完成了)。App Inventor server 是完全開放的,但在建置上有一定的難度。

2015-05-03 13.35.48

暑假的資訊月就會有 App Inventor 示範賽,歡迎大家報名參加喔!

2015-05-03 13.00.01

App Inventor Gallery:分享您的App Inventor 作品到全世界!

App Inventor 新增 Gallery,讓您可以與全世界的 App Inventor 開發者分享您的作品( .aia 原始檔),如果是 .apk 安裝檔還是要到 Google Play。

當然別忘了 CAVEDU 的 App Inventor 中文學習網,在 Google 的搜尋是第三名喔!排行僅次於 MIT App Inventor 的網站。

回歸正題,要如何使用 Gallery 功能呢,請登入 App Inventor 開發網之後,點選 Gallery 就會進到 Gallery 畫面,一共有四個標籤。您可以看看最近上傳了那些新的app(RECENT)、重點(FEATURED)、熱門(POPULAR)或是搜尋App 名稱(SEARCH),相當簡潔的介面。

002

要如何分享程式到 Gallery呢?請回到 My Projects頁面,勾選要分享的專案,再點選右側的 [Publish to Gallery]就好了。當然啦,我們也會把有趣的範例放上去與外國朋友分享。

001-1024x768

這邊趕快分享一個小程式,就是阿吉老師每次上課都一定會示範的[取得Facebook粉絲頁按讚數]。上傳完成就可以看到囉!頁面請點我

004

對於某個app 有興趣的話,只要點選 [OPEN THE APP] 就可以把這個專案直接加到您的帳號下來編輯,這實在是所有開發者的福音啊!

003

[2015 3月號 Robocon雜誌專欄]輕鬆使用Android 裝置控制樂高機器人:

感謝各位讀者的支持,連載終於邁入最終回了!本期專題要介紹如何使用Android 手機上的姿態感測器來控制樂高EV3 機器人。有接觸過App Inventor 的師長朋友們,歡迎從App Inventor 中文學習網的檔案庫下載本程式的aia 原始檔與apk 安裝檔。

文章原文刊載於《ROBOCON》國際中文版2015/3月號


什麼是Direct Command?為什麼需要它?

根據樂高官方文件, 您可以使用Direct Command做到的重要功能有:

• 啟動/停止主機上指定檔名的程式。
• 控制馬達啟動、停止、轉向、電力與角度上限。
• 取得感測器值與狀態

其餘功能,請參考官方文件(註1)。

開始玩機器人

本範例的機器人與2013 年1 月號的「翻轉控制」專欄是一樣的,只是由NXT 換成EV3 機器人而已。機器人不須加裝任何感測器,只要用兩顆馬達組裝成雙輪機器人即可。本範例是將馬達接在EV3 主機的輸入端A 與B。請確認EV3 主機的藍牙已啟動,接著將EV3 主機與Android 手機進行藍牙配對(註3),完成之後就可以把機器人放到一邊了。啟動藍牙之後,您可以從EV3主機的螢幕左上角看到藍牙的符號。

接下來依序介紹程式的各個功能:

STEP1 登入畫面:

首次進入程式的畫面如圖1a ,這時只有「EV3 裝置/ 連線」按鈕可以按,其它所有按鈕都無法操作。點選「EV3裝置/ 連線」按鈕後進入藍牙裝置清單(圖1b),請找到剛剛配對完成的EV3主機名稱(本範例為abc),點選之後就會由Android 裝置對EV3 主機發起藍牙連線。順利連線成功的話,「EV3裝置/ 連線」按鈕會變成不可按的狀態,其他按鈕則都可按(圖1c)。

圖1a 程式首次執行的畫面。 圖1b 點選連線按鈕後進入藍牙裝置清單。 圖1c 連線成功後的畫面。

STEP2 程式初始化:

在點選連線清單之前(ListPicker_EV3 清單選取器的BeforePicking 事件),需先將清單內容指定為Android裝置上的藍牙配對清單(圖2a),其中connected 這個布林變數是用來指示現在手機是否已和機器人成功連線。

圖2a 指定藍牙配對裝置清單。

點選之後, 會先測試連線是否成功,成功則將「EV3 裝置/ 連線」按鈕設為不可點選,「斷線」等按鈕設為可點選(圖2b)。

圖2b 連線成功後啟動相關元件。

STEP3 直接控制副程式start與stop:

直接控制的奧妙之處在於直接對EV3 發送位元陣列, 只要按照樂高官方文件(註1)的說明,以正確的格式來發送資料即可。以 start 副程式來說, 它可接受兩個參數:port/ speed。您可以看到每次呼叫它時, 都會初始化一個名為 data 的空清單,以本範例來說,每一個清單元素代表一個位元組長度的內容。格式為:(13, 0, 0, 0, 128, 0, 0, 165,
0, port , 129, speed , 166 ,0, port),如圖3a。這當然需要您去查找官方文件中各個欄位所代表的意義。在此我們是將port 與 speed 用變數來控制, 代表所要控制的馬達與其轉速。最後透過BluetoothClient 元件將整個data 清單經由藍牙發送給EV3 機器人即可。

圖3a start 副程式

到了stop 副程式,資料格式當然也有所改變。我們還用一個if 判斷式去檢查stop 參數是否為true , 如果是則在data 清單最後加入1 ,反之則加入0。這樣發送出去之後就能控制機器人是否要停止動作(圖3b)。

圖3b stop 副程式。

藉由這樣的架構,當您要改用姿態控制、觸碰點控制、語音控制時,整體架構是不變的,差別只在於如何修改speed 變數值而已。

STEP4 姿態感測器:

當手機的姿態發生變化時,就會自動呼叫它的姿態改變(OrientationChanged) 事件, 並會把XYZ 的軸向變化以pitch、roll 與azimuth 這三個事件變數呈現, 供我們取用。由圖4a 可知, 我們要透過X 軸向傾斜來控制機器人前進,Y 軸向傾斜來控制左右轉彎等。在本範例中我們使用另外一個Angle 參數(回傳一個角度代表手機往哪個方向傾斜)求出兩顆馬達的轉速。

圖4a Android 手機軸向示意圖。

在此有兩個重要的變數angle 與power:angle 代表手機的傾斜角度,這是由姿態感測器的Angle 參數再減去45 所決定,45 代表座標軸的偏移量。接著是power 變數,這是一個介於0 ∼ 1 之間的小數,代表手機的傾斜程度,數字愈大代表愈斜。power 變數值是由姿態感測器的Magnitude 變數再乘上200 所決定,200 是一個調控用的參數,數字愈大,代表在同樣的傾斜度下,機器人會跑得愈快,但是也更敏感而不好操控。樂高EV3 機器人的馬達電力範圍為100(正向全速旋轉)到-100(反向全速旋轉),數值超過上下限則就限制在100 或-100 ,如圖4b。

圖4b 姿態感測器的姿態改變事件(上半)

這四個重要的參數(pitch、roll、左馬達轉速與右馬達轉速)都會更新在畫面中間的四個Label 標籤元件上。先呼叫一次 stop 副程式,讓馬達先短暫停頓。接著呼叫兩次start 副程式,分別傳入「port =1;speed = cos(angle x power)」與「port =2;speed= sin( angle x power)」這組參數,代表根據姿態感測器的姿態變化量,進行三角函數運算結果,來決定左右馬達的轉速。

最後,把夾角與左右輪轉速捨去小數點之後(round 指令),將計算結果更新在Screen 的狀態列上,如圖4c。

圖4c 姿態感測器的姿態改變事件(下半)。

STEP5 斷線:

按下「斷線」按鈕之後,會中止藍牙連線(BluetoothClient.Disconnect指令),並使畫面上的各個元件恢復到程式一開始時的狀態。

操作

實際執行的時候,請先確認EV3 已經開機且藍牙也啟動了。接著在您的Android 裝置上點選畫面中的「EV3裝置/ 連線」按鈕, 會進到如圖1b的藍牙清單畫面,點選您所要的EV3主機名稱並連線成功後,試著把手機左右搖晃看看。朝前方傾斜,機器人就會前進,傾斜愈多,機器人跑得愈快(圖5a)。左右傾斜的話則是控制機器人左轉或右轉(圖5b)。在App Inventor 官方推出EV3 的元件之前,您也可以用這樣的方法來直接控制樂高EV3 機器人喔!

圖5a 手機朝前方傾斜43 度,X 軸向姿態發生 變化(pitch),機器人朝前方移動,左右馬達電力(38, 39)。

圖5b 手機朝左方傾斜44 度,Y 軸向姿態發生變化(roll),機器人原地左轉,左右馬達電力(-37, 41)。

本程式已上架Google play,請到Google Play 搜尋「CAVE 教育團隊」就找得到我們的樂高機器人系列app 了。歡迎大家到App Inventor 中文學習網的檔案庫下載本程式的aia 原始檔與apk 安裝檔。

註1:樂高EV3 直接控制指令的相關文件請參閱此網頁:http://botbench.com/blog/2014/02/19/ev3-buildyour-own-block-and-hdksdk-docs-available/

註2: 想學如何開發App Inventor 程式嗎? 請到App Inventor 中文學習網(http://www.appinventor.tw)與
我們一同學習。

註3: 與EV3 連線後如果出現「Error 402」之錯誤訊息請不必理會,程式依然能正確執行。

 

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

大家久等了, 本篇文章告訴您如何在 Android 手機端接收兩筆 Arduino 的資料,這次是以 A0, A1 兩隻腳位來處理。本範例感謝嘉義高工張老師提供。

如果您要換成其他元件,例如數位感測器的話,做法是一樣的。請先看一下這個元件的資料範圍是多少。對於本範例的架構來說,最後就是透過藍牙傳一個陣列出去,因此重點在於您是否可先在 Serial Monitor 中看到正確的資料範圍。不過一般來說都會有讀值得範例程式,所以不用太擔心啦!

您可以擴充這個架構到 N 筆,但是筆數愈多,掉資料的機會也愈高。請自行斟酌喔!

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

[雙A計畫] 藍芽模組(HC05/06)常用指令教學

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

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

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

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

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

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

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

English version

Arduino LED Blink

Arduino LED PWM

Arduino LED Blink (Arduino 101 with BLE)

Arduino LED PWM (Arduino 101 with BLE)


在撰寫程式前我們先準備以下材料:範例程式請點我下載(App Inventor中文學習網檔案庫)

材料清單:

1 Android系統智慧型手機

2.Arduino相容開發板

3.藍牙收發接收器 (本系列使用JY-MCU04 or JY-MCU05)

4. 電位計

5. 光敏電阻

6. 1k~10k 歐姆電阻,用於光敏電阻

請按照電路圖將電路接上,接了一個電位器(A0)與光敏電阻(A1)。當然啦,您也可以兩個腳位都用相同的元件,方便就好。為了不讓大家眼花,藍牙發射器另外獨立出來表示 (藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位):

未命名
A0:電位計。A1:光敏電阻
螢幕快照-2014-10-30-上午12.41.36
TX: Arduino D11, RX: Arduino D10

 


App Inventor 端程式:

由於連線斷線的做法都是差不多的,在此把連線相關指令整理如下圖。請注意Clock timer 一開始是關閉的,我們會在連線成功之後才會將其啟動來發送藍牙指令,否則會一直跳出錯誤訊息(因為還沒連線啊!)
在 Clock.timer 事件中,首先發送一個數字49給Arduino,代表”我要發資料囉!” Arduino 則是先用 BluetoothClient.ReceiveText 指令,如果讀到’a’,就接續讀取後面兩筆資料,這就是 A0 腳位的數值。請注意在此之所以要判斷 text 變數之否小於0再加上 256,是由於Arduino 的 8 bit 整數範圍是 -127 ~ 128 的緣故。
反之如果App 收到字元 ‘b‘ 就是 A1 腳位。作法同上。
接著在Clock.timer 事件最後將這兩筆數值(value_A0value_A1) 顯示於 Textbox,並且用這兩筆數值來控制 Canvas 上面的小飛機移動,快點來玩雷電遊戲吧!
螢幕快照 2015-04-05 上午1.11.29
因為資料傳輸過程中難免會遺漏,因此我們都是先抓到火車頭(就是’a’ 與 ‘b’),確定這是一筆新的資料開頭之後,再去讀取數值,否則可能會發生數值亂跳的情形。另一方面,App Inventor 在藍牙傳輸的延遲狀況較明顯,請注意喔

Arduino 端程式如下,我們把 A0 腳位的資料用 ‘a‘ 作為標頭,由於資料長度大於 1 byte ( 2的8次方),因此需要用到 2 bytes 才能把 A0 的數值範圍 (0~1023) 涵蓋進去,因此 Data[1]~Data[2] 就代表A0 腳位的資料,Data[4]~Data[5] 就是A1 腳位的資料:(Data [0] = ‘a’, Data[3] = ‘b’ 這兩個火車頭別忘記囉~)
#include <SoftwareSerial.h>
#include <Wire.h>
SoftwareSerial I2CBT(10,11); // TX:10, RX:11
byte serialA;

void setup(){ 
  Serial.begin(9600);
  I2CBT.begin(9600);
}
 
void loop (){
    byte Data[6];
    byte cmmd[20];
    int insize;
    int x=analogRead(A0);//read sensor value
    int y=analogRead(A1);//read sensor value
    serialA=I2CBT.read();
    Data[0]='a';
    Data[1]=x/256;
    Data[2]=x%256;
    Data[3]='b';
    Data[4]=y/256;
    Data[5]=y%256;
     Serial.print(x);
     Serial.print(" , ");
     Serial.println(y);
 
     if (serialA == 49){
         for(int j=0;j<5;j++)
         I2CBT.write(Data[j]);
         serialA=0;
      }
  delay(100);
}

150314 TQC+ App Inventor 專業認證教師研習會

TQC+ 針對高中職學生的手機 app 程式設計認證預計在今年暑假上線,目前 App Inventor 在博客來上有接近 20 本中文書籍(CAVEDU 寫了兩本…),應該是個相當熱門的議題呢。另一方面,從 2010 年開始,每年我們辦理 App Inventor 結合樂高機器人 / Arduino 或是單純 App Inventor 的課程都在 20 場以上,也架設了 App Inventor 中文學習網與大家分享一些小範例。

高雄場:4/25,台北場 5/3,都是週六。歡迎您一起加入 TQC+ App Inventor 種子教師的行列 (報名頁面請按我

IMG_6773 2015-03-14 14.09.35

 

最後順便打個廣告,CAVEDU 的 App Inventor 入門卷馬上就要出版啦!還請大家多多支持。

AI2_cover

 

[即將出版] Android 手機程式超簡單 – App Inventor 入門卷增訂版 3/20 出版

2012 年我們出版了國內第一本 App Inventor 教學書籍:[Android 手機程式超簡單 – App Inventor 入門卷]。隨後在2012年底出版了[Android 手機程式超簡單 – App Inventor 機器人卷]。想想那一年真的很辛苦啊…

現在在博客來搜尋 App Inventor 的中文書籍已經接近 20 本了呢,看來 App Inventor 的確深受許多開發者的喜愛。至少 CAVEDU 都會先用 App Inventor 來試做 beta 版,確定概念可行之後再改用 Android 來完成,但也有部分 app 是直接用 App Inventor 就算完工的。

另一方面,我們很榮幸能與 TQC 電腦技能基金會 合力推動 App Inventor 的手機程式應用認證,台中場的種子教師研習就是下週六喔,歡迎您也一起加入!

TQC App Inventor專業認證教師研習會 台中場3/14 / 高雄場 4/25 台北場5月

AI2_cover
Android 手機程式超簡單 – App Inventor 入門卷增訂版 – 封面與封底

 

 

本書大綱,與第一版是差不多的,但在第6~9 章中有新增範例

Ch 1 App Inventor 介紹 
Ch 2 運算與判斷
Ch 3 迴圈與清單
Ch 4 App Inventor基本功能與程序觀念 
Ch 5 生活好幫手 
Ch 6 讓我們看雲去
Ch 7 再談畫布
Ch 8 小遊戲動手做 
Ch 9 資料庫與網路資料庫
附錄A App Inventor 2 指令說明-Built in 內建指令ㄍ
附錄B My Blocks 自訂元件