Tag Archives: 程式教學

[雙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);
}

150324 LinkIt ONE 爬網路字元@海洋大學機械系

每週二晚上在海洋大學機械系的 Arduino 微處理機課程,今年使用 LinkIt ONE 來上課,經過之數週的基礎課程之後,終於可以介紹到上網功能了,呼呼…

LinkIt ONE 只要接好天線就可以了,下圖這支天線就是 Wifi / BT 二合一天線,有點像蟑螂鬚啊(爬爬)

LinkIt ONE 相關文章請按我

2015-03-24 19.57.49

在以下的範例中,您只要填入以下四個資料就好:

WIFI_AP:您的 Wifi 存取點名稱

WIFI_PASSWORD:Wifi 密碼

WIFI_AUTH:加密方式

SITE_URL:要擷取的網頁字元,在此為 www.appinventor.tw

2015-03-24 19.47.12

 

2015-03-24 20.20.10

這是上週的作業,8 x 8 LED 陣列(學生表示接線很累…)

2015-03-24 20.43.28

 

最後來看 CODE:

 

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

 

感謝 MediaTek Labs 贊助 – 海洋大學與元智大學有 LinkIt ONE 可以用喔

新學期新氣象,本學期在海洋大學機械系的 Arduino 微處理機課程以及元智大學藝術設計系的互動科技課程,都由 MediaTek Labs 贊助對應班上人數的 LinkIt ONE 開發板。我想這學期的課程一定會擦出很不一樣的火花哩!

我不敢說板子能上網就一定比較厲害,但至少能變的花樣一定比較多。在和同學的討論之中,已經有針對 GPS 結合網路的諸多位置應用想法跑出來了,想到就很興奮。

再者,這樣應該會比上課一直刷程式碼來得有趣。不過別誤會,加入網路之後課程難度只會更高,同學甚至有可能要學第二套程式語言(例如 python 或簡易的 html),怎麼樣讓大家愉悅地成長,是我這學期最大的挑戰。

班上做得不錯的同學,5月底要把作品帶到 Maker Faire 來展出,與大家分享。這列入學期成績的一項好了,哇哈哈

linkit

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

許多朋友對於 App Inventor 透過藍牙來控制 Arduino 這個議題相當有興趣,事實上通訊這個主題一直是非常吸引人的,當然也有一定程度的難度啦…

首先整理我們雙A計畫文章總覽:

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

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

[雙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手機

[雙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)

就以下這兩點來說,讓大家有些基礎的概念:

1. 絕大部分的狀況,控制端(例如Android手機) 與被控端(例如 Arduino ) 的程式語言是完全不同的。

2. 牽涉到通訊與硬體就是很麻煩,錯任何一項就是不會動,所以要檢查再檢查喔!

請先參考我們的教學投影片,所有的雙A計畫範例請點我下載


補充一些常見問題如下

1. BTList 點選下去漆黑一片

手機需要先與藍牙發射器配對,我們才能用這個指令來抓到 Android 手機已配對的藍牙裝置位址(address)與名稱(name)。當然您可以直接使用藍牙發射器的 MAC address 來連線,但非常不建議這麼做,因為很容易輸入錯誤而當機。或是您很確定就是要連某片藍牙發射器的話,就把位址寫死在App Inventor 裡吧。

螢幕快照 2015-02-19 下午8.58.27

2. Serial Monitor 亂碼

請檢查鮑率。這會寫在 Arduino 程式中的這一行: Serial.begin(9600);

3. 藍牙發射器上的 LED 燈閃爍或是一直亮是什麼意思?

以 HC05, Hc06 這兩款常見的藍牙發射器來說,只要通電就會閃紅燈,代表正常啟動並可接受外來連線要求。一旦連線成功之後,

4. 藍牙發射器配對碼是什麼?

一般來說都是 1234 或 0000 。您可以透過 AT  command 來修改,但沒有必要。

5. 為什麼需要修改藍牙發射器名稱?鮑率需要改嗎?

就教室管理的角度來說,這件事很重要,否則 Android 掃描下去會看到十幾片同樣名稱的裝置,這樣就無法順利配對完成了。因此建議學校老師可以先使用 AT command (請參閱以上投影片)把藍牙發射器名稱改成 BT001, BT002 或任何好管理的名稱,再把這個名稱用標籤貼紙貼在發射器上。

鮑率一般來說不需要修改。

以上兩件事,如果您是個人使用者,周遭只有一片藍牙發射器而不容易搞混的話,就不太需要做這件事。

6. 什麼是序列通訊?

 

簡單來說,就是在同一條線上一次發送一個位元,因此是先發出去的一定先到。Arduino 端是透過I2CBT.read() 與 I2CBT.write() 來讀寫藍牙序列資料。與序列通訊對應的就是平行通訊,可以同時發送多筆資料。

補充:維基百科的序列通訊頁面

7. 為什麼在範例3 中要加入檢查碼?不加會怎麼樣?

封包傳輸過程中,會有一定的機率遺失,這與傳輸長度以及訊號強弱有關係。當然無線又比有線來的容易掉封包,因此如果掉了一個封包導致讀取位置錯誤的話,您就會感覺到資料怪怪的(例如電位器明明沒有轉動,但手機畫面的數值跳動範圍很大)。因此我們加了字元 ‘a’ 作為資料的第一段,App Inventor 每次讀到a,就知道這是一段封包的第一包(data[0]),就會接續處理後續兩筆資料(Data[1] 與 Data[2])。

至於要使用什麼字元,只要通訊兩端講好就好。重點在於哪邊是頭,以及一次要讀取多少 byte 的資料。這可以說是最基礎的通訊協定(protocol)喔!

螢幕快照 2015-02-19 下午9.31.52

另一方面,手機端會透過 Clock 元件定期發送 49 ,告訴 Arduino: [你可以把資料丟過來囉!]。Arduino 會在讀取到這筆資料後,把 Data[] 陣列送出去。我們可以將其視為基礎的握手(hand shaking)機制

螢幕快照 2015-02-19 下午9.31.41

 

 

8. 同一片藍牙發射器可以同時被多台 Android 裝置連線嗎?

無法。藍牙發射器是被控端 (slave),Android 裝置 (master)則視實際狀況可以控制多個 slave。例如兩台樂高機器人:

9. 程式無法順利執行?

這其實牽一髮動全身,大概會有幾個問題

a. 兩邊的程式沒有對應,請再次檢查程式是否正確

b. 藍牙發射器沒有先與Android 手機配對完成,請參考 1.

c. 連線失敗,請確認藍牙發射器的燈號是閃爍的紅燈。連線成功會恆亮紅燈。如果一開始就恆亮紅燈代表前一個連線還沒結束,這時候就無法被連。我們在 App Inventor 程式中是在點選之後發起連線 (BluetoothClient.Connect 指令),因此您在此會感覺到程式稍微停頓了一下,就是這時候 Android 會對藍牙發射器進行連線。

螢幕快照 2015-02-19 下午9.12.03

d. 執行程式時,可以先按一下 Arduino 的 reset 鈕讓程式強制重新啟動,確認藍牙發射器在閃紅燈,這時再執行手機 app。

最後也請大家參考 Cooper Maa 的藍牙教學,祝大家順利成功喔~

 

150131 86duino 研習

不只是Arduino:86Duino為台灣的瞻營全電子所開發的新一代的開放式硬體平台(open-source hardware platform),採用Vortex86EX 處理器,提供更快的處理效能及高擴充性,且完全相容Arduino系列,並可支援x86架構的作業系統及執行以Arduino為基礎的系統。

86Duino採用了高性能32位元的x86兼容處理器,可以額外安裝作業系統,在單一封裝內集成了PCIE,DDR3,ROM控制器,xISA,I2C,SPI,IPC(DMA和中斷定時器/計數器包括內部外設控制器),網路,FIFO UART,USB2.0和SD/ SATA控制器形成一個系統級晶片(SOC)。

86Duino 提供了一個超完美的解決方案,讓使用Arduino及嵌入式系統的藝術家、設計師、業餘愛好者、任何有興趣的人,建立打造互動式科技所需的性能。

報名請按我

86Duino EduCake_05-500x500

86Duino原廠網站:
http://www.86duino.com/

主辦單位:CAVEDU教育團隊、翰尼斯企業有限公司

協辦單位:智能機器人研究所、《Make》國際中文版

時間 : 104年1月31日 星期六 09:30~17:00

地點 : 翰尼斯企業有限公司 台北市中正區中華路二段165號1樓

備註: 請自行攜帶筆記型電腦,以便實際操作。本次研習使用 86duino Educake。

收費:3,600元。名額有限,請儘早報名

付款方式:
1.匯款:
銀行名稱 :華南商業銀行 雙園分行
戶名 :翰尼斯企業有限公司
銀行代號 :008
帳號 :122-10-015315-3
2.來店付款
翰尼斯企業有限公司
台北市中正區中華路二段165號1樓
3. 線上付款
機器人王國網路商城
http://shop.robotkingdom.com.tw/

超級好禮相贈:
1. 86Duino Educake一組。

活動議程:

09:30 CAVEDU 教育團隊簡介

09:50 86duino 硬體介紹、下載開發環境
安裝驅動程式

10:30 基礎電子電路實作(接線,麵包板)
Arduino 結合感測器:按鈕、光敏電阻、可變電阻
揚聲器 – 簡易發聲原理,認識頻率

11:30 I2C通訊- 讀取加速度與電子羅盤之三軸變化

12:00 中餐

13:00 86duino 網路功能 – 擷取指定網站頁面字元

14:00 86duino SD卡功能 – 將感測器資料連續寫入 SD卡指定路徑檔案中

15:30 86duino 使用 Linux 開機與相應操作。

16:40 結語、賦歸

注意:主辦單位保留修改與解釋活動之所有權利。

服務電話:02-23062900
service@cavedu.com

來看看使用 86duino Educake 搭配 USB 鍵盤來控制 servo

 

 

141209 Arduino Yun 物聯網結訓囉 @FutureWard 未來產房

為期四周的 Arduino Yun 物聯網課程結訓囉,大家應該都被折磨的很徹底才對。Arduino Yun 的強項當然在於聯網,不過要連怎樣的網頁甚至是網路服務,這就需要一些額外的申請步驟與認證手續。不會很難,只是麻煩點就是了。

我們四次上課的內容如下:

1. Arduino yun 硬體介紹、環境設定與無線網路設定(可透過無線網路來燒錄 Arduino 程式)。

2. 認識 REST API,能藉由瀏覽器指令(例如 http://arduino.local/arduino/digital/13/1 )控制或讀取腳位狀態

。藉由繼電器來控制一般家電(檯燈),並可自動寄發 Gmail(使用 Temboo 服務)

3. 使用 DHT11 溫濕度感測器,將感測器資料上傳到 Google Docs 試算表、發布訊息到 Twitter 社群網站。

4. 登入 Arduino Yun 的 Linux machine,下指令讓 Webcam拍照。藉由 PIR動作感測器來觸發拍照並上傳到 Dropbox 服務。

上課投影片請由此下載 (全部都放在 SlideShare),CAVEDU 會陸續把所有投影片上線。也歡迎大家許願告訴我們您需要哪方面的內容喔

P1300923

[LinkIt ONE 教學] 取得 Facebook 粉絲頁的 JSON 物件

各位朋友新年快樂,這篇文章要介紹如何使用 LinkIt ONE 來取得 Facebook 粉絲頁底層的 JSON 格式,您可以參考我們日前用 App Inventor 做的版本

LinkIt ONE 的 Wifi / BT 天線是整合在同一支,只要接上板子即可,如下圖。

2015-01-03 16.36.20

在程式中有一個叫做 c 的 LWiFiClient 物件,它負責管理網路相關的動作,get 與 post 等等

LWiFiClient c;

接著在 loop() 中,就透過 c.read() 把指定 URL (再次使用 CAVEDU Facebook 專頁的 open graph) 的字元逐一顯示出來。如下圖的最後一行  { “id” = …  開始就是了。有了這些資料之後就可以玩很多東西了。

while (c)
{
int v = c.read();

if (v != -1)
{
Serial.print((char)v);
}…   //以下省略

 

 

linkit_002

完整的程式碼如下,歡迎您也入手一片 LinkIt ONE 與我們互相討論喔~

/*
  Web client

 This sketch connects to a website 
 using Wi-Fi functionality on MediaTek LinkIt platform.

 Change the macro WIFI_AP, WIFI_PASSWORD, WIFI_AUTH and SITE_URL accordingly.

 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 modified 20 Aug 2014
 by MediaTek Inc.
 */

#include <LTask.h>
#include <LWiFi.h>
#include <LWiFiClient.h>

#define WIFI_AP "XXX"   //your WIFI AP
#define WIFI_PASSWORD "YYY"  //WIFI PWD#define WIFI_AUTH LWIFI_WPA  // choose from LWIFI_OPEN, LWIFI_WPA, or LWIFI_WEP.
#define SITE_URL "graph.facebook.com"  // note that "caveeducation" is part of the HTTP request rather than host name.

LWiFiClient c;

void setup()
{
  LTask.begin();
  LWiFi.begin();
  Serial.begin(115200);
  
  while(!Serial)delay(100);

  // keep retrying until connected to AP
  Serial.println("Connecting to AP");
  while (0 == LWiFi.connect(WIFI_AP, LWiFiLoginInfo(WIFI_AUTH, WIFI_PASSWORD)))
  {
    delay(1000);
  }

  // keep retrying until connected to website
  Serial.println("Connecting to WebSite");
  while (0 == c.connect(SITE_URL, 80))
  {
    Serial.println("Re-Connecting to WebSite");
    delay(1000);
  }

  // send HTTP request, ends with 2 CR/LF
  Serial.println("send HTTP GET request");
  c.println("GET /caveeducation HTTP/1.1");
  c.println("Host: " SITE_URL);
  c.println("Connection: close");
  c.println();

  // waiting for server response
  Serial.println("waiting HTTP response:");
  while (!c.available())
  {
    delay(100);
  }
}

boolean disconnectedMsg = false;

void loop()
{
  // Make sure we are connected, and dump the response content to Serial
  while (c)
  {
    int v = c.read();
    if (v != -1)
    {
      Serial.print((char)v);
    }
    else
    {
      Serial.println("no more content, disconnect");
      c.stop();
      while (1)
      {
        delay(1);
      }
    }
  }

  if (!disconnectedMsg)
  {
    Serial.println("disconnected by server");
    disconnectedMsg = true;
  }
  delay(500);
}
LinkIt ONE 取得 Facebook JSON object

[App Inventor教學] 使用 Web 元件取得Facebook 粉絲專頁按讚數 V1.5 改用 JsonTextDecode方法

請先閱讀:使用 Web 元件取得Facebook 粉絲專頁按讚數 V1.0

下載 .aia 原始碼請按我

先前的方法說真的有點土法煉鋼,這是處理純文字格式的硬漢方法,如果有比較聰明的方法就輕鬆多了呢。Web元件另外針對Json、HTML與XML 等常見的網頁資料交換格式提供了對應的解碼方法。在此要使用Web元件的JsonTextDecode方法來處理Facebook的JSON資料。 

Facebook網頁採用JSON格式進行資料交換,JSON的意思是JavaScript Object Notation,是一種輕量化的資料交換語言,幾乎所有與網頁開發相關的程式語言都有JSON函式庫,例如Python、PHP等。如果想要看到某個Facebook頁面的JSON資料的話,請把www改為graph,再重新整理網頁即可。請直接點選:https://graph.facebook.com/CAVEEducation

這就是一個超大的JSON物件。在此的想法是把它用逗號 , 切開後存成清單,再去看看哪個內容是”likes”開頭;接著再把這個內容用冒號 : 分開後的第二個內容就是粉絲頁的按讚數囉!一個JSON資料結構的形式如下:

物件(object):一個物件會用大括號 { } 包起來,裡面會有許多的名稱/職結束。一個物件包含多組的的名稱/值,每組名稱/值之間使用逗號 , 隔開。

名稱/值(collection):名稱和值之間使用冒號 : 隔開。例如 “likes”:3203 或是 “is_published”: true

我們可以先把解碼結果顯示於Label,請新增Web元件的JsonTextDecode指令,這時按下按鈕會先取得responseContent的JSON解碼結果。內容還真不少呢!如下圖:

顯示JSON解碼結果
執行畫面
接著要開始分析資料了,架構是相同的,只是改用新的解析方法:Web元件的 JsonTextDecode,在此只提重點。請依序操作:
1. 在Web1.GetText 事件中,請將global json變數設為Web1.JsonTextDecode指令執行結果,jsonText欄位為reponseContent事件變數,這是一個二維清單,每個清單元素就是名稱/值對。2. 接著在for each迴圈中,我們一樣使用contains指令,去找看看json清單中哪一個元素包含了”like”這個字串,如果找到了就把它的2號元素取出來,這樣就是按讚數啦!一樣是藉由for each迴圈的number變數來掃描整個清單。
3. 再加一個TextToSpeech 元件讓手機把粉絲頁按讚數唸出來吧!
執行效果則完全相同,差別只在於解析資料的方法而已。

[App Inventor教學] 查詢博客來網路書店資料

能查 Facebook  粉絲頁,那麼也可以查博客來網路書店嗎?當然可以!本範例要告訴您如何使用 Web 元件去查詢一筆博客來網路書店搜尋結果,可指定搜尋關鍵字搜尋筆數本文原始碼請點我下載

本範例為雲林科技大學趙同學完成,謝謝囉。以下是程式執行結果:

005
一筆博客來網路書店的搜尋語法會長這樣:
 
其中搜尋的關鍵字為 android,類別為 BKA ,就是圖書。


我們要使用 Web.Get 來取回該網頁內容,每個網站的原始碼格式不依樣,您可以點選以上連結再檢視網頁原始碼即可,博客來是用HTML,之前玩過的 Facebook 取得粉絲頁按讚數則是 JSON。

 
首先在按下 Button 時,把 TextBox 的內容塞進 Url 中,再用 Web 元件去取得網頁內容即可。(請注意在此變數名稱 json 只是初步使用,本範例並非為 json格式)。
 
主要結果都在 Web.GotText 事件中來處理,取得的內容會以 responseContent 這個事件變數來回傳,就是本網頁原始碼。我們會取出第一筆資料之後,取得書名、出版社與出版日期這三筆資料。
 
一筆書籍的搜尋資料會從 <div class=”input_buy“> 這個標籤開始,您可以看看一筆資料裡面有什麼東西。以下是 Web.GotText 事件內容,就是不停地分割再分割。直到找到對應的內容為止。例如書名會出現在第一個  title = 這個字串後面。出版日期與出版社則是跟在 mid_publish 這個字串後面,仔細找找就可以找到。本文的做法比較基礎,您可以改用 Web 元件的 HtmlTextDecode方法來試試看喔!


 

141119 Arduino習作工坊@MakerBar Taipei

今年最後一梯的 Arduino 習作工坊 PLUS+ 開班了,15 人瞬間滿班,感謝大家支持。每次研習都可以認識來自各方的前輩與朋友,大家都想要用 Arduino 來做些什麼,實在是很有意義的事情呢。

四次課程的主題包含燈光、馬達、聲音與藍牙遙控。今天是第一堂課,當然是從安裝Arduino IDE、LED閃爍以及讀取類比腳位等基礎課程開始,學員會認識各樣電子元件,以及如何使用麵包板來製作電路原型。有穩固的基礎才會學得紮實喔!

12/17 還有機器人之夜,歡迎報名!

每次研習都要擺的滿桌都是啊…

2014-11-19 20.29.56

CAVEDU新一代人氣講師:子鈺老師

2014-11-19 20.58.06

 

 

福利社鄭老闆,每次結帳、開發票、買書買設備就找他啦。今天居然上台客串?

2014-11-19 20.37.55 2014-11-19 20.57.08  2014-11-19 20.29.409

[App Inventor教學] Tinydb – 寫入姓名學號電話

本範例是介紹 App Inventor 中的本機端資料庫元件 TinyDB,相當於 Android 的 SQLite,只是功能很陽春而已。請如下圖來配置畫面,一共用到 2個Button,一個 ListPicker(讀取資料),3個 TextBox 以及一個 Label。當然啦,還有最重要的 TinyDB。

範例程式碼請由此頁面下載。

按下[寫入資料]按鈕時,會把三個 TextBox 的內容組合成一個 list 後寫入資料庫,並在 Label 上顯示寫入成功的訊息。如下圖
 
 

 

141115 App Inventor研習@雲科大資管系

上次去雲科大是什麼時候?從 2011 年開始就蒙雲科大資管系古老師的邀請,到系上與同學分享 App Inventor 的各種應用。系上也有樂高機器人,所以機器人控制也是課程的內容喔!

也感謝同學的配合,把每週 3 小時的課改到周末一天 6 小時,這樣我可以省去移動的時間哩

P1070607.min

大家可以回顧一些我們上課的有趣範例

141101 雲科大資管系App Inventor研習

121013 雲科大 App 課程 Day 3 – 遙控機器人爬坡夾罐賽

121006 雲科大 App 課程 Day 2 – Qrcode座標系統.

111015 雲科大資管系 嵌入式系統課程 – 搬罐子大賽

111001 雲科大資管系 嵌入式系統課程 – App Inventor 開發Android程式

P1070596_mini P1070591_mini P1070585_mini

[App Inventor教學] 終極密碼戰

遊戲規則說明

1~100選出一個數字當終極密碼,若沒猜中,則以猜出的數字將範圍縮小,直到猜中數字為止。請點我下載 .aia 原始碼

畫面製作說明

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

元件類別父類別名稱該元件用途
LabelUser InterfaceLabel1請輸入一個數字(1~100)
TextBoxUser InterfacetxbNum輸入框
ButtonUser InterfacebtnEnter確定
LabelUser InterfacelblResult顯示結果
HorizontalArrangementLayoutHorizontalArrangement1提供同一列可放兩個元件
Desienger頁面長這樣:

 

程式說明

Step1 宣告變數

password1~100的隨機亂數

guess為輸入的數字 (打錯字了QQ)

min為最小範圍數字

max為最大範圍數字

Step2 程式初始化時,亂數產生一個不重複的數字當終極密碼。

Step3 當按下確定按鈕時,先判斷輸入的數字與答案是否相同,若相同顯示恭喜答對了!”,若不相同則判斷輸入的數字與答案的大小,輸入的數字小於答案,則將最小範圍數字改為所輸入的數字,若大於,則更改最大範圍數字,並顯示答案範圍。

程式執行畫面:在 TextBox 中輸入數字就會顯示結果,快來玩玩看吧

Screenshot_2014-11-08-10-35-27

 

Arduino Yun_無線網路遙控車(一)

今天要使用Arduino Yun 來做一台無線網路遙控車。我們可以在網頁上製作一個遙控器,控制車體前後左右移動,還能透過超音波感測器來偵測距離,今天是要把書上的專題所提供的硬體做替換,讓車體也能順利地使用

20141109_225801

這次的專題參考的是碁峯出版:實戰物聯網開發-使用ArduinoYun

這本書是由本團隊的阿吉老師所翻譯的~~~

20141109_225818

這本專題在第四章提到使用無線網路遙控車體,使用的材料有:

  • ArduinoYun開發板
  • ArduinoUno開發板
  • DFRobot馬達擴充板:DFRduino
  • DFRobot超音波感測器:URM37
  • DFRobot:miniQ二輪平衡車機組
  • DFRobot

今天,為了增加我們入手這些裝備的方便性、減少製作成本,我們會把ArduinoUno開發板(台幣:800元)、馬達擴充板(美金10元,不含運費)、超音波感測器(美金15元,不含運費)做替換。

替換的零件為:超音波感測器HS-SR04  (台幣100元,光華商場購得)

20141110_000733

ArduinoUno + 馬達擴充板=motoduino 2.0 ,(台幣600元,官方網站購得)

20141109_225148

接下來要疊上 Arduino Yun開發板

20141109_225125

遙控車本身不一定要購入指定的車體,只要準備是左右輪胎透過獨立的直流馬達來驅動(共兩個)的車體即可。本範例為左右輪胎各一個直流馬達(miniQ二輪平衡車機組)

20141110_000701

接著開始撰寫程式了~~

如果您使用的硬體跟書中使用的硬體相同的話,範例檔案可以由此下載

如果您想使用這次分享的硬體製作的話,範例檔案可以由此下載

這是這次我所製作出來的遙控車,為了方便日後加裝其他的感測器,使用了比較高的銅柱

20141109_225032

這個遙控車與書中的遙控車有什麼地方需要注意呢?

最大的不同在於motoduino與arduinoyun接線的腳位不同,以及超音波感測器的程式碼撰寫不同

首先請到我們的檔案庫下載範例

接著將範例中的資料夾”HCSR04Ultrasonic”複製到ArduinoIDE的library當中,

請注意!ArduinoYun使用的IDE最少要1.5.6以上的版本!!

yun_sonic01

接著打開檔案”motoduino_sketch.ino”,這個檔案請燒錄在Motoduino上,畫黃線的部分是ArduinoYun與Motoduino的連接方式

還有宣告馬達的腳為5、6、7、8

yun_sonic02

圖中使用的函式庫<wire.h>是motoduino與ArduinoYun溝通(I2C)的方式

motoduino與ArduinoYun的溝通

1、將motoduino的A4腳與ArduinoYun的D2腳相連

2、將motoduino的A5腳與ArduinoYun的D3腳相連

 

Motoduino的馬達連接方式

1、將右邊馬達的正極接在M1+,負極接在M1-

2、將左邊馬達的正極接在M2+,負極接在M2-

 

接著我們來連接超音波感測器,超音波感測器的接線請接在ArduinoYun上。

首先打開檔案”HC-SR04_yun_sketch.ino”,這個檔案請燒錄在AduinoYun上,

畫黃線的部分是ArduinoYun與超音波感測器使用的函式庫、宣告的腳位為10、11

yun_sonic03

連接超音波感測器

1、感測器Vcc接腳與Yun的5V接腳相連

2、感測器Trig接腳與Yun的D10接腳相連

3、感測器Echo接腳與Yun的D11接腳相連

4、感測器GND接腳與Yun的GND接腳相連

將線連好之後,我們來測試ArduinoYun與motoduino受否能溝通成功,讓車子順利行走

將程式”HC-SR04_yun_sketch.ino”燒入ArdunioYun的程式之前,我們首先開啟測試的程式碼,

這個程式碼不需要網路連線就會對motoduino下達轉動馬達的指令

將下圖的程式碼”/*”、”*/”去除後,再進行燒入

yun_sonic04

 

燒入後你的ArduinoYun,就會一直傳送資料250,0,0,0給motoduino。

可以輸入的馬達馬力為0-255

控制馬達前進後退則為0、1

 

打開Serial monitor可以確認指令是否成功傳送

yun_sonic05

如果要確認motoduino是否有收到資料

將程式””motoduino_sketch.ino””燒入motoduino的程式之後

打開Serial monitor,就可以進行確認

yun_sonic06

超音波感測器測試

打開程式”HC-SR04_yun_sketch.ino”,接著將程式72行  //measure_distance(1);的註解刪除

yun_sonic07

接著將程式”HC-SR04_yun_sketch.ino”燒入到ArdunioYun的程式,打開Serial monitor就可以看到超音波感測器偵測時使用的時間,以及與障礙物之間的距離

yun_sonic08

今天的分享就到此為止,下篇教學將告訴您如何架設網站,透過網頁按鈕來控制這台機器人,再見囉~~~