Tag Archives: 程式教學

[Arduino 新書]Arduino互動設計超入門:用ArduBlock圖形化控制真簡單

最近在博客來看到了一本使用 ArduBlock 來編寫 Arduino 程式的書:「Arduino互動設計超入門:用ArduBlock圖形化控制真簡單」,感覺挺新鮮的,大家有空可以看看。

0010647500

ArduBlock 是建置在Arduino環境中的圖形化指令,操作方式類似 Scratch 或 App Inventor,編譯時會先轉換回 Arduino sketch 再上傳到 Arduino。因此您可以先用 Ardublock 完成基本程式後再後續修改,當然ArduBlock 就能搞定的話是最好的囉!歡迎看看 CAVEDU 的 ArduBlock 介紹

作者: 孫駿榮
出版社:碁峰
出版日期:2014/08/29

以下為目錄

01 認識 Arduino
介紹現在最熱門的開放式硬體平台 Arduino,以及事前的準備工作。
1-1 Arduino
1-2 Arduino 準備好了,你呢?
1-3 周邊電路規劃
1-4 第一次動手

02 圖形化控制介面 ArduBlock
數位訊號是 DIY 專案中最簡單,但也是最常被運用到的領域。透過 ArduBlock 圖形化的編輯環境,讓 Maker 可以輕輕鬆鬆就進入 Arduino 的繽紛世界。
2-1 視覺化設計環境
2-2 ArduBlock 的第一個程式
2-3 控制多顆 LED 燈光
實作 2-1 多顆 LED 控制
實作 2-2 依照條件控制多顆 LED
實作 2-3 多顆 LED 跑馬燈
實作 2-4 利用指撥開關控制多顆 LED
實作 2-5 利用指撥開關控制 LED 狀態變化
實作 2-6 利用按鍵開關控制 LED
實作 2-8 七段顯示器
實作 2-9 按鈕控制七段顯示器

03 通訊
讓 Arduino 能有對外傳送訊息的能力,可以幫助我們了解 Arduino 目前的情況,也可以針對不同的條件提供不同的訊息顯示。
3-1 什麼是 RS-232 串列通訊?
3-2 Arduino 中的串列埠
實作 3-1 Arduino 上傳訊息
實作 3-2 LED閃爍範例加上狀態訊息輸出
實作 3-3 Arduino 接收電腦端訊息
實作 3-4 透過電腦端訊息控制 Arduino
實作 3-5 透過電腦端訊息控制七段顯示器
3-3 LCD 液晶顯示器
實作 3-6 顯示電腦端訊息在 LCD
3-4 Arduino 私房儲存空間
實作 3-7 不能說的秘密
實作 3-8 密碼鎖

04 類比訊號

類比訊號是最貼近人們的一種訊號變化,Arduino 內建六個類比接腳,讓我們可以感受到外界隨時的環境變化。
4-1 電壓訊號的量測
4-2 可變電阻
實作 4-1 變化多端的可變電阻
實作 4-2 可隨意操作的 LED 控制
4-3 溫度量測
實作 4-3 LM35溫度量測讀取
實作 4-4 TMP36溫度量測讀取
4-4 光影的變化
實作 4-5 光影變化
4-5 尋找萬磁王
實作 4-6 南極還是北極
實作 4-7 自製轉速計
4-6 最遠的距離
實作 4-8 距離猜猜看 1(進階)
實作 4-9 距離猜猜看 2(進階)
實作 4-10 距離猜猜看 3(進階)

05 特殊輸出
經由更多電路的組合,我們可以操控的東西也就越來越多,學習複雜的電路組成,才可以為專案注入更多活力。
5-1 脈衝寬度調變 PWM
實作 5-1 七彩奪目
5-2 天籟美聲
實作 5-2 絕對不是天籟美聲
5-3 馬力充沛
實作 5-3 步進馬達
實作 5-4 伺服馬達
實作 5-5 控制伺服馬達
實作 5-6 自動涼風扇(進階)
實作 5-7 馬達扭扭樂 1(進階)
實作 5-8 馬達扭扭樂 2(進階)
實作 5-9 馬力加倍(進階)
實作 5-10 閃閃惹人愛(進階)
實作 5-11 一眼明瞭(進階)

appendix A Arduino 線上模擬
appendix B 各章節元件整理表
B-1零件整理
B-2認識元件
appendix C ArduBlock 功能方塊與程式對照表

PhotoMath 照相解方程式,真是太神奇了!

 

 

PhotoMath 是一款軟體,對著書上的數學算式就會自動算出答案,還有逐步說明。這真是太神奇了啊~目前支援 iOS,Windows Phone。Android 則還要再等一下。

馬上在iPad上安裝起來,手寫會因為太細而無法辨識。我在 WORD 中寫了 2x + 5 = 10,鏡頭一對上馬上就算出答案了。您可以從下圖中看到畫面中的小點是軟體要去辨認字元的辨識點。還可以看到逐步推導的過程。

這樣子的話,國中數學都不用算了嘛!哈哈

 

IMG_0183

 

螢幕快照 2014-10-23 下午9.27.53

目前支援的功能有四則運算,分數小數,乘方與開方以及簡易線性方程式。官方表示日後還會加入更多功能,這樣就可以解矩陣方程式了嗎?ㄎㄎ

反正考試不能帶手機,先不用擔心學生們會這麼做啦~

螢幕快照 2014-10-23 下午9.28.08

141015 LabVIEW + Arduino@修平科技大學電機系

本學期在修平科技大學電機系有為期四次的 LabVIEW 結合 Arduino 的技職再造計畫業師課程。課程內容是讓大一的同學接觸實際上用於業界的 LabVIEW 高階圖形化軟體,搭配 Arduino 作為資料擷取平台,進行各類基礎的機電整合應用。目標是讓同學能從大一開始就有機會接觸實務導向的課程,積極培養業界需要的人才。感謝大力促成此事的系主任與歐教授。

上課用的教材是 CAVEDU 的[LabVIEW for Arduino 控制與應用的完美結合]

2014-10-15 14.37.42

2014-10-15 14.05.51

上課用的機電教室,這些日後都可以藉由 NI 的 ELVIS 教學板連到 LabVIEW 來控制,教室整體設備大升級啊!

2014-10-15 14.15.41

每位同學都有一套 Arduino 與 CAVEDU 出版的[LabVIEW for Arduino 控制與應用的完美結合]可以用耶,真的是很完整耶!每盒中都是本書的完整設備,當然也會有一片 Arduino UNO 開發板。

2014-10-15 14.16.02 2014-10-15 14.31.21

會後的專家會議,大家一起討論怎樣讓課程更完整,讓同學更快上手。

2014-10-15 17.43.11

[樂高EV3機器人教學] 使用數學指令記錄馬達轉動角度後反轉

機器人在執行各種任務時,會用到許多數學指令,本篇要介紹的是 EV3 軟體中的 Math 指令,可執行基礎的數學運算:包含了四則運算,絕對值,平方根,指數以及進階運算。進階運算裡面就精彩了,包含了商餘函數,三角/反三角函數,自然對數等進階運算。並在此定義一個最多包含四個變數的公式,應該很夠用了。

本頁面程式請由此下載:http://lab.cavedu.com/ev3-1

螢幕快照 2014-10-14 下午11.29.31       螢幕快照 2014-10-14 下午11.51.33

如果要更複雜的指令,例如求一元二次方程式的公式解(還有人會背嗎?2a分之 -b 加減…),就要自己寫啦,這就是 EV3 這種圖形化程式的弱點,簡單的數學方程式寫起來卻很冗長。您可使用 My Blocks 來把這些數學公式定義成一個指令即可。

延伸閱讀:樂高EV3機器人- 自定義指令(My Blocks

來看一下簡單的應用吧:在一秒鐘之內用手轉動A馬達,再讓A馬達去轉動這個角度的負數(乘以 -1 )。執行起來就會讓馬達一直回到原本的位置。

螢幕快照 2014-10-14 下午11.29.16

[學生作品] 自動敲擊鼓棒@文化大學推廣部 – 簡易動力機械課程

暑期於文化大學推廣部的動力機械課程,本日主題是鼓棒,讓馬達帶動凸輪去把鼓棒頂起來,進而敲擊鼓面發出聲音。

2014-07-08 10.55.46

2014-07-08 10.58.32 2014-07-08 10.59.53

這位小朋友很堅持要做很多裝飾哩

2014-07-08 11.00.23
親子同樂,感謝家長的用心

2014-07-08 10.35.42

 

 

來看分解圖喔

2014-07-08 10.56.19
馬達帶動軸轉動,凸輪插在軸的適當位置。軸的兩端要固定好,轉動時才不會晃動
2014-07-08 10.56.12
傘型零件是敲擊點,輪胎是配重用的,讓敲擊完之後可以回歸原位

[App Inventor教學] 檢查生日 – DatePicker元件

本範例使用 DatePicker元件來算出使用者的歲數,並判斷是否為雙子座。如果是的話就顯示對應的文字與圖片。

AI2 原始碼請由此頁面下載

在AI2 尚未推出 DatePicker 元件之前,我們只能用 ListPicker 來硬幹成日期或時間選取器,這時候光是 List 內容設定就很麻煩…  現在有了 DatePicker 就方便多了。

本範例中您會用到:

1. DatePicker 元件,用來設定使用者出生年月日。

2. TextBox 元件,用來顯示結果。

3. Image元件,用來顯示星座圖案。

 

先來看看如何操作。點選 DatePicker [選擇出生年月日],設定好之後,就會顯示結果。請注意本範例只有判斷是否為雙子座。其他星座請您自行新增囉,差別只在於日期而已。

 

 

        

 

程式介紹:

按下 DatePicker 並設定日期之後,會呼叫 DatePicker.AfterDateSet 事件。我們在此檢查兩個條件是否有一個成立:

月數 = 5 且 日數 >= 21

月數 = 6 且 日數 <= 21

如果條件滿足,就設定 TextBox.Text 為 [您是雙子座,今年] + (2014 – 年數) + [歲] 這個字串。並設定 Image 圖案設定為 03.jpg (請自行選擇您喜歡的星座圖檔喔)。反之則顯示 [您不是雙子座喔],並將 Image 圖案設為空白。

 

 

[2014 7月號 Robocon雜誌專欄]輕鬆使用Android 裝置控制樂高機器人:超音波感測器掃描雷達圖

2014年7月號的Robocon雜誌專欄是:超音波感測器掃描雷達圖。本期專題是延伸自2014 年3 月號的〈機器人感測器結合Google 雲端圖表〉,會讓感測器砲塔進行一次掃描後,以雷達圖的方式來呈現資料。有接觸過App Inventor 的師長朋友們,歡迎從App Inventor 中文學習網下載原始碼回去加入更多有趣的功能。

泛科學文章連結:http://pansci.tw/archives/62019

請注意本範例需用到網路連線,請確認您的手機是使用Wifi 或3G行動網路來連上網路, 否則將無法顯示Google 雲端圖表。

超音波感測器砲塔

NXT 超音波感測器是一種I2C 數位感測器,它能讓機器人「看到」物體並在撞上去之前避開,這是觸碰感測器所辦不到的。超音波感測器會發出一連串的超音波,並記錄超音波被物體反射後所需要的時間,再轉換成距離回傳給NXT。請注意:超音波感測器的預設單位是公分。實際使用時,超音波感測器可測到的最短距離約為5 公分,最遠距離約為220 公分。

請將馬達組裝在NXT 主機側面,並超音波感測器安裝在馬達上,當馬達轉動時,超音波感測器也會隨著馬達掃視水平面。在App Inventor 中, 我們使用NxtUltrasonicSensor 元件的GetDistance 指令來取得超音波感測器值(圖1)。

002

開始玩機器人

範例的機器人只要將一個超音波感測器接在NXT 主機的4 號輸入端,再將馬達接在輸出端B 即可。請確認NXT 主機的藍牙已啟動,接著將NXT主機與Android 手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後,您可以從NXT主機的螢幕左上角看到藍牙的符號。

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

STEP1 登入畫面:

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

2abc

STEP2 程式初始化:

在點選連線清單之前(ListPickerConnect 的BeforePicking 事件),需先將清單內容指定為Android 裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「連線」設為不可點選,「開始記錄」、「位置歸零」與「斷線」等按鈕設為可點選(圖3b)。

005a

005b

STEP3 開始掃描:

每當我們點擊一次「開始記錄」按鈕時, 就會讓B 馬達轉動2cm , 這是根據預設輪胎直徑計算出的距離,在此是一個經驗值,您可能需要根據實際狀況來調整這個參數。接著將超音波感測器當下的數值搭配一個半形逗號組合到sensorValue 這個字串中。count 變數是用來計算一共記錄了幾筆資料,累計到五筆資料之後,count 變數值會設定為1 ,代表要重新開始記錄新的五筆資料(圖4a)。

006a

接著「產生圖表」這個按鈕會變為可按。您可以調整count 變數值來修改在圖表中所要呈現的資料筆數。每次掃描完之後,您可以點選「位置歸零」按鈕, 讓B 馬達反向轉動10cm以回到原來的位置(圖4b)。

006b

在此難免會有轉過頭或不足的狀況發生,這時可用手把砲塔對正。

STEP4 按鈕取得Google雲端圖表:

Google Chart 雲端圖表讓我們可用超連結的方式來取得各式圖表。以本範例來說,我們只要將五筆超音波感測器值組合到chart 字串變數的後方,再由WebViewer 元件去取得這個超連結就可以了。說穿了就是去操弄這個字串,就能取得我們所需要的圖表。

讓我們來看看chart 這個字串中的一些重要參數(圖5a):

  • http: //chart.googleapis.com/chart?
  • chs=320×320:圖片尺寸為320 x320像素。
  • cht=r:圖表類型為雷達圖(radar)。
  • chm=s ,CC3366,0, -1,12,0| s ,FFFFFF,0,-1,8,0:以紅色空心方格來呈現資料點。
  • chls=4:兩點之間連線的粗細。
  • chxt=y,x:以同心圓方式顯示格線。
  • chxp=0,0,30,60,90,120:格線之間的數值距離。
  • chd=t : : 圖表資料, 我們就是把sensorValue這個變數組合在chart變數之後來組成一個完整的超連結。每筆資料之間需使用半形逗號隔開。按下「產生圖表」按鈕,會先把sensorValue最後一個字元(就是半形逗號)刪除,接著使用WebViewer.GoToUrl來載入chart與sensorValue兩者所組合成的超連結,在此就會順利載入圖表了。為了讓下次也能順利執行,最後要把sensorValue內容清空(圖5b)。

圖6a

圖6b

STEP5 斷線:

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

008

操作

實際執行的時候,請先確認NXT 已經開機且藍牙也啟動了。接著在您的Android 裝置上點選畫面中的「連線」按鈕,會進到如圖3b 的藍牙清單畫面,點選您所要的NXT 主機名稱並連線成功後,就能點選「開始記錄」按鈕來取得超音波感測器值,每次點選都會將數值顯示在標題列上,如下圖紅框。點選五次之後才能點選「產生圖表」按鈕(圖7a),這時就可以看到精美的雷達圖了(圖7b、7c)。操作一次之後,請點選「位置歸零」按鈕,讓砲塔回到初始位置。

請注意:您的手機需要有網路連線,否則無法取得Google Chart 雲端圖表。

7abc

本期專欄介紹了如何製作一個感測器值砲塔, 並結合Google 雲端圖表來產生漂亮的雷達圖。請參考GoogleChart API 的官方網站來看看更多有趣的圖表範例,也請繼續關注CAVE的機器人專欄!

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

註:

  1. 想學如何開發App Inventor程式嗎?請到App Inventor 中文學習網與我們一同學習。
  2. 將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此處
  3. 與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

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

[2014 5月號 Robocon雜誌專欄]輕鬆使用Android 裝置控制樂高機器人:把機器人感測器值與座標用電子郵件寄送

2014年5月號的Robocon雜誌專欄是:從上一期3月號的專欄開始,Android裝置控制樂高機器人專欄將改用App Inventor 2來編寫。App Inventor 2在指令上與前一版的App Inventor 是差不多的,相信您可以很快上手。請到App Inventor 中文學習網來登入App Inventor 2 開發網站並認識更多新功能。

泛科學文章連結:http://pansci.tw/archives/59193

本期專題將會把樂高NXT光感測器值,每十筆為單位更新到Google Chart雲端圖表來取得折線圖。只要熟悉基本語法就可以產生各式各樣的圖表,非常方便!有接觸過App Inventor的師長朋友們,歡迎從App Inventor中文學習網下載原始碼回去,加入更多有趣的功能。

請注意本範例需用到網路連線,請確認您的手機是使用Wi-Fi或3G行動網路來連上網路,否則將無法顯示Google雲端圖表。

超音波感測器

NXT超音波感測器是一種I2C數位感測器,它有內建的晶片可以分析並送出資料。利用超音波感測器,我們可以讓機器人「看到」物體並在撞上去之前躲開,這是觸碰感測器所辦不到的。 超音波感測器使用了聲納技術,它會發出一連串的超音波並記錄超音波被物體反射後所需要的時間,再轉換成距離回傳給NXT。請注意,超音波感測器的預設單位是公分。實際使用上,超音波感測器可測到最短的距離約為5公分,最遠距離約為220公分(圖1)。

002

開始玩機器人

本範例的機器人只要將一個超音波感測器接在NXT主機的4號輸入端即可。請確認NXT主機的藍牙是啟動的,接著將NXT主機與Android手機進行藍牙配對(註2),完成之後就可以把機器人放到一邊了。啟動藍牙之後您可以從NXT主機的螢幕左上角看到藍牙的符號。

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

STEP1登入畫面:

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

4aa

STEP2程式初始化:

在點選連線清單之前(ListPickerConnect的BeforePicking事件),需先將清單內容指定為Android裝置上的藍牙配對清單(圖3a)。點選之後則先測試連線是否成功,成功則將「NXT主機/連線」設為不可點選,「寄信」、「取得座標」與「斷線」等按鈕設為可點選,並啟動Clock元件來取得超音波感測器值(圖3b)。

005a

005b

STEP3 按鈕記錄GPS坐標:

每當我們點擊一次「取得座標」這個按鈕時,就會要求LocationSensor元件來取得手機當下的座標(圖4),並顯示在Label_GPS標籤上。由於Google Map的座標格式為「緯度,經度」。所以我們在此也是這樣顯示。

006

STEP4 使用Clock元件定時更新超音波感測器值:

接著使用Clock元件來每秒更新一次超音波感測器值,如圖5。如果在尚未與NXT主機連線之前就要取得超音波感測器值的話,會顯示錯誤畫面。因此我們在圖5b中,會確認藍牙連線成功之後才做這件事。

007

STEP5 寄送電子郵件:

我們將寄送電子郵件的指令包成一個副程式,將寄送電子郵件的指令設定成ActivityStarter元件的DataUri屬性內容。「mailto:」是收件人電子郵件,這裡油使用者自行填入。「subject=」是郵件主題,「body」是信件內容,在此我們填入座標與感測器值等內容(圖6)。 接著按下「寄信」按鈕之後,會先呼叫email副程式,再透過ActivityStarter元件來啟動手機上的電子郵件程式(圖7)。

008a

008b

STEP6 斷線:

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

009

操作:

實際執行的時候,請先確認NXT已經開機且藍牙也啟動了。接著在您的Android裝置上點選畫面中的「NXT裝置/連線」按鈕,會進到如圖2b的藍牙清單畫面,點選您所要的NXT主機名稱並連線成功後,就能自動取得超音波感測器值。按下「取得座標」按鈕之後,就可在畫面上看到手機目前的GPS座標(圖9a)。請注意您當下所在的位置有可能無法取得座標,例如地下室等密閉空間。

在TextBox中輸入收件人的電子郵件之後,例如aa@bbb,請點選「寄信」按鈕。這時系統會詢問您要使用哪個電子郵件軟體來寄送,例如Android預設的email軟體或Gmail或任何其他的電子軟體等,在此我們選用Gmail(圖9b)。接著就會跳到圖9c的電子郵件畫面,按下寄送按鈕就發信出去了!快去問好朋友有沒有收到信吧。

請注意Android系統中,無法自動發送email、簡訊或撥打電話,因為這樣一來您的手機很容易被惡意使用。所以最後的送出都要由我們親自來執行喔。

9

本期專欄介紹了如何將機器人的感測器值與手機的GPS座標,透過電子郵件的方式發送出去。這樣有一天您派機器人遠征的時候,就能用這樣的方式來報平安。請繼續關注CAVEDU的機器人專欄唷!

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

註:

  1. 想學如何開發App Inventor程式嗎?請到App Inventor 中文學習網與我們一同學習。
  2. 將Android手機設定為可安裝非Google Play下載的程式以及讓手機與樂高NXT主機連線等說明請參考此處
  3. 與NXT連線後如果出現[Error 402]之錯誤訊息請不必理會,程式依然能正確執行。

 

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

[好書介紹] Build Your Own Teams of Robots with LEGO® Mindstorms® NXT and Bluetooth®

最近翻到了一本新書,機器人平臺雖然是用 NXT,但其實裡面講的概念挺好的。很想買一本來看看,重點是以群體的概念來介紹機器人協同運算( collaborative computing),與 ROS 是相當類似的概念。

http://www.amazon.com/Build-Teams-Robots-Mindstorms-Bluetooth/dp/0071798560 <- 在此可試讀一些章節

書名:Build Your Own Teams of Robots with LEGO® Mindstorms® NXT and Bluetooth® 

作者:Cameron Hughes, Tracey Hughes, Trevor Watkins, Bob Kramer

章節:

CHAPTER 1 It Takes Two to Tango (機器人協同導論)

CHAPTER 2 Bluetooth for MINDSTORMS NXT: A Closer Look (深入認識NXT主機的藍牙,能與不能)

CHAPTER 3 One for All and All for One (認識機器人硬體)

CHAPTER 4 Creating a Team of Movers and Shakers (馬達)

CHAPTER 5 Bluetooth programming in NXT-G and LabVIEW (使用 NXTG/ LabVIEW 編寫藍牙通訊程式)

CHAPTER 6 robot environments, Teamwork Strategies, and Goals (機器人團體合作)

CHAPTER 7 Give Your Team of robots Java power with leJOS (Java 與機器人)

CHAPTER 8 Got Linux and Darwin on Your Team of Robots? (機器人作業系統、NXC 語言與檔案系統)

CHAPTER 9 Advanced Teamwork: One for All! (魔術方塊專題)

CHAPTER 10 Together We Stand: The Robot Convoy (機器人藍牙網路專題)

CHAPTER 11 The CSI project (機器人救援專題)

下載

 

 

[App Inventor 教學]Google Fusion Tables 統計地圖

http://www.appinventor.tw/fusion_tables <- aia source檔請由本頁下載

功能說明

運用 Google Fusion Tables 來儲存資料(DateNote),並使用WebViewer 元件來顯示 Google Fusion TablesGoogle Fusion Tables 讓您能以更簡易的方式建立各類 GIS 統計地圖。

畫面製作說明

Label(標籤)、WebViewerFusiontablesControlTextBox(文字輸入塊)、Button(按鈕)

元件類別父類別名稱該元件用途
LabelUser InterfaceLabel1顯示(Date(YYYY-MM-DD)
TextBoxUser InterfaceDate輸入框
LabelUser InterfaceLabel2顯示(Note
ButtonUser InterfaceSubmit送出訊息
LabelUser InterfaceConfirmation顯示回傳的訊息
WebViewerUser InterfaceWebViewer1取得回傳內容
FusiontablesControlStorageFusiontablesControl1使用 Google Fusion Tables 來儲存傳送的訊息

 

程式說明

Step1 宣告變數。

TABLE_URLFusion Tables的公開網址

TABLE_IDFusion TablesID

API_KEYFusion TablesAPI密鑰

 

建立Fusion Tables

進入https://support.google.com/fusiontables/answer/2571232

此為Fusion Tables的公開網址

[1p4…Pf4] 此為Fusion TablesID

取得Fusion TablesAPI密鑰

進入https://code.google.com/apis/console/

 

 

 

Step2:程式初始化時,設定FusiontablesApiKey,並設定WebViewer一開始要開啟的網頁 URL

 

Step3:呼叫 procedure副程式,將值傳送給Fusion Tables 伺服器。

 

Step4:取得Fusion Tables 伺服器回傳的訊息並顯示在 WebViewer中。

 

手機畫面

  

 

Raspberry Jam:兒童 Scratch x Raspberry Pi創意互動體驗教學

誠摯邀請您家的小朋友(國小為佳)來參加本次的Scratch x Raspberry Pi 創意互動體驗教學。我們準備了 12 個名額,歡迎您與小朋友一起來同樂!

適逢 Raspberry Pi 創辦人 Eben Upton 先生來台,當晚將有 Eben 與各位的輕鬆見面會,另外也有諸多 Raspberry Pi 的應用。包括影像追蹤智慧型機器人、即時 FM 廣播與多媒體影像站。期待與您相見

註:本頁面為Scratch 兒童體驗課程報名頁面,如您不是要參加體驗課程,請在此報名 https://www.facebook.com/events/1518769365007738/

 

 

[App Inventor 教學] 記帳本

http://www.appinventor.tw/savecsv  ->  原始碼請由此下載

功能說明

簡易記帳app,可將標題與金額儲存在 1. TinyDB ;2. 自行編寫的 php網頁,使用 Web元件。每筆資料儲存完畢之後,會使用 WebViewer 元件來顯示 php 網頁。

畫面製作說明

Label(標籤)、HorizontalArrangement(水平排列)、TableArrangement(表格排列)、Clock(時鐘)、TinyDB(微型資料庫)、WebViewerWebTextBox(文字輸入塊)、Button(按鈕)

元件類別父類別名稱該元件用途
LabelUser InterfaceLabel1顯示(輸入目的地的路徑 + 檔案名稱)
TextBoxUser InterfacetxbDestination輸入框
TableArrangementLayoutTableArrangement1提供多個元件以表格方式排列
LabelUser InterfaceLabel2顯示(標題:)
LabelUser InterfaceLabel3顯示(金額:)
TextBoxUser InterfacetxbMoney輸入框
TextBoxUser InterfacetxbText輸入框
HorizontalArrangementLayoutHorizontalArrangement1提供同一列可放兩個元件
ButtonUser InterfacebtnSave儲存
ButtonUser InterfacebtnOpen顯示
ButtonUser InterfacebtnClear清空
LabelUser InterfacelblResult顯示結果
WebViewerUser InterfaceWebViewer1取得檔案內容
WebConnectivityWeb1儲存檔案
TinyDBStorageTinyDB1儲存資料內容
ClockAnimation SensorsClock1取得當天日期

 

程式說明

Step1 宣告變數。

strACCESSKEY傳輸給網頁的判斷值

Data資料值

Step2 程式初始化時,取得存於標籤為Data的微型資料庫內的資料,並顯示在畫面上。

 

Step3 避免發生錯誤訊息時,傳給網頁的判斷值顯示出來,所以將值取代為***

Step4 判斷所有欄位是否已填寫。

Step5 當按下儲存按鈕後,若Step4所傳回來的值為”true”時,Web1.SaveResponse為不論是甚麼回應都儲存,Web1.ResponseFileName為儲存的檔案名稱,Web1.Url為應用程式所請求的網址。TinyDB1.StoreValue會將valueToStore的值儲存在標籤為Data的微型資料庫內,並先取得存於Data標籤的資料,再加上今天的日期、輸入的標題和金額。

 

Step6 GotFile元件中,判斷responsecode是否傳回代碼200200表示網站成功執行。

 

Step7 當按下儲存按鈕後,用WebViewer元件開啟檔案。 

 

Step8 當按下清除按鈕後,清空標籤為Data的微型資料庫,並清空檔案與顯示在畫面上的資料。 

手機畫面

  
 


參考網站

http://puravidaapps.com/save.php

若所儲存的csv檔內容為亂碼可參考以下網址

http://boringfreeware.blogspot.tw/2013/05/office-excel-csv.html#.U9uRuuOSza8

[App Inventor教學] 1A2B 猜數字遊戲

遊戲規則說明如下,程式碼請由此頁下載:http://www.appinvent..tw/1a2b_game

答案為不重複的四位數,猜四個數字,A前面的數字為位置與數字正確的個數,B前面的數字為數字正確但位置不正確的個數。

畫面製作說明

Label(標籤)、HorizontalArrangement(水平排列)、TextBox(文字輸入塊)、Button(按鈕)

元件類別父類別名稱該元件用途
LabelUser InterfaceLabel1input
TextBoxUser InterfaceGuess輸入框
ButtonUser InterfaceButton_submit開始遊戲
LabelUser InterfaceLabel2answer
LabelUser InterfaceAnswer顯示答案
LabelUser InterfaceShow顯示結果
HorizontalArrangementLayoutHorizontalArrangement1提供同一列可放兩個元件
HorizontalArrangementLayoutHorizontalArrangement2提供同一列可放兩個元件

 

程式說明

Step1 宣告變數

num1num2num3num4為四個0~9的隨機亂數

A為計算數字與位置正確的個數

B為計算數字正確但位置不正確的個數

answer為答案

guess_num為輸入的數字

show為顯示猜的數字與AB的個數

count為計算個數

mn為計算後的答案

 

Step2 程式初始化時,亂數產生四個不重複的數字,為了避免答案為空字串而使用了while迴圈來做判斷,並顯示於answer標籤。

 

Step3 當按下OK按鈕時,先判斷輸入的數字與答案是否相同,若相同就顯示恭喜答對了!”,若不相同則先計算A的個數,也就是數字與位置都答對的個數,透過數學平方的方式,得到個位數字、十位數字、百位數字、千位數字的方法做比較,m為取得所猜的數字,n為取得答案的數字,若m等於nA個數加1

 

Step4 計算B的個數,就是數字答對的個數,用巢狀迴圈的方式檢測答案數字與猜的數字是否相同,因為不需要判斷位置是否正確,所以只判斷不同位置上的數字。

 

手機畫面

 

[App Inventor] 取得粉絲專頁按讚數 V1.0

本範例使用 Web 元件去取得 CAVEDU 教育團隊粉絲專頁的 JSON 格式之後,將按讚次數顯示在畫面中。source code 請由 App Inventor 中文學習網下載。

首先您要知道,什麼是 JSON:JavaScript Object Notation

一個 JSON 物件是由 { } 大括號包起來的,裡面包含了一或多組可以自行定義的 key / value ,用來進行電腦與電腦之間的資料格式交換。

舉例來說,CAVE 的粉絲專頁網址是 https://www.facebook.com/CAVEEducation

您只要把 www 改成 graph 就可以看到以下的畫面 (https://graph.facebook.com/CAVEEducation)

您可以看到例如 id、can post、catagory 等欄位,另外像 cover(封面照片) 等則是本身還是一個JSON物件,裡面有更多子欄位。

根據 Facebook 的定義,按讚的欄位名稱為 likes,所以跟在其後的數字就是按讚數了。您可根據本範例來取得各欄位內容,非常方便。

 接下來看到程式:

Designer頁面:

只有四個元件:

  • Label:顯示按讚數
  • TextBox:顯示取回的 JSON 資料
  • Button:按鈕取回資料
  • Web:負責取回指令網址的資料


Blocks頁面:

先宣告一個名為 json 的空清單,用來存放解析後的 json 物件。

按下 Button_get (CAVEDU頭像) 之後,會呼叫 Web1.Get 方法去取得 https://graph.facebook.com/CAVEEducation 網頁內容。

順利取得資料之後,會啟動 Web1.GetText方法,並把內容以 responseContent 變數回傳。我們把 responseContent 用 , 來切割,並數一下 likes 出現在第 27 項,所以我們把 responseContent 切割結果的第27項存入 json 清單並顯示在 TextBox 中。長這樣:

“likes”:2664

這也是一個清單,所以我們再切一次!這次用 : 隔開取第2項就可以取得按讚數,最後顯示在 Label 上就可以了。

(這樣不算是太聰明的作法,請期待第二版吧)



140705 Android手機 – Arduino遙控自走車營隊@台北科學教育館

軟滑小編今天來到台灣科學教育館,土生土長的小編是台南人,小時候最喜歡跑到高雄的科工館參觀。

而且很喜歡上科學實驗課,所以之前就有聽說過台北也有個科教館,不過實在是太遠了所以無法來參觀。

很幸運的是第一次來到科教館就擔任教小朋友的任務,一開始進來的時候還看到四周都是有趣的科學小實驗,還有很多有趣的展覽。

這裡的老師都很親切,我想這也是為什麼假日的時候還有那麼多小朋友願意來這裡學習吧!

好的,今天來這裡的目的是要讓大家學會如何用手機控制Arduino。

講義都放在CAVEDU的官方網站,點我下載講義

主要的材料有Motoduino、Andriod手機、以及藍牙模組。

營隊的課程分為兩天,第一天上午教的是Arduino基礎課程以及基本的電子元件。

IMG_4743

第一天下午的課程則是App Inventor2,小朋友可以自行傳寫手機程式

使用的範例為HelloPurr及小畫家

若是有想了解更多App Inventor的資訊可以到中文學習網查詢喔

IMG_4780 IMG_4735

第二天早上則是將昨天上的課程再做一次的複習,並且將兩個裝置利用藍牙做為連接。

小朋友都學的比預期的還要快,果然第二天提醒大家要記筆記之後就學的更有效率了。IMG_4818

下午就開始我們這堂課的重頭戲囉!組裝車身,以及自己寫一個控制自走車的程式。

IMG_4839

 

最後小朋友們都有做出屬於自己的手機遙控自走車喔!

聽說八月還有一場營隊,有興趣的話可以上科教館的網頁上查詢

IMG_4908IMG_4906IMG_4905

IMG_4904IMG_4909IMG_4903

 

而且今天的營隊還上了TVBS新聞台,其中受訪的是本團隊的宗翰老師。

[youtube http://www.youtube.com/watch?v=w3Ktnp8jQog]