Upload
Download free for 30 days
Login
Submit Search
20130119 adkハンズオン発表資料
10 likes
3,323 views
Keiji Ariyama
20130119に開催した「ADKハンズオン」の発表資料です。 参考: http://www.zusaar.com/event/489057
Read more
1 of 88
Download now
Downloaded 18 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
More Related Content
PDF
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
aitc_jp
PPTX
イチからはじめるADK北海道支部勉強会発表資料
Kenichi Yoshida
DOC
ロボカップジュニア日本大会提出論文(出村賢聖)140317
Kensei Demura
PPTX
Vuzix Developer Conference
Keiji Ariyama
PDF
12.09.30.第5回はんだごて勉強会資料 公開用
Miwa Iwatsuki
PDF
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura
PPT
平成26年度熊本高専Arduino講座 第1週 センサーとArduno及びProcessingとの連携
Katsuhiro Morishita
PDF
SFC デザイン言語WS(電子工作)第3回「電子工作の作法」
Makoto Hirahara
2016年12月21日 AITCシニア技術者勉強会 第2回「センサに反応する総天然色イルミネーションを作ってみよう!」
aitc_jp
イチからはじめるADK北海道支部勉強会発表資料
Kenichi Yoshida
ロボカップジュニア日本大会提出論文(出村賢聖)140317
Kensei Demura
Vuzix Developer Conference
Keiji Ariyama
12.09.30.第5回はんだごて勉強会資料 公開用
Miwa Iwatsuki
Arduinoでプログラミングに触れてみよう 続編
Hiromu Yakura
平成26年度熊本高専Arduino講座 第1週 センサーとArduno及びProcessingとの連携
Katsuhiro Morishita
SFC デザイン言語WS(電子工作)第3回「電子工作の作法」
Makoto Hirahara
Similar to 20130119 adkハンズオン発表資料
(20)
PDF
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
aitc_jp
PDF
第2回 某社Arduino勉強会 ハンズオン
Yusuke HIDESHIMA
PDF
Japanino Workshop #3
Shigeru Kobayashi
PDF
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
PDF
Japanino Workshop #2
Shigeru Kobayashi
PDF
12.06.16 日本橋勉強会資料 公開用
Miwa Iwatsuki
PDF
今すぐ始めるArduino
funa3
PPTX
Arduino 入門
mitunaga
PPTX
2015/05/23 シニア技術者プログラム第3弾 「第二回IoT勉強会&交流会」 15:00~15:20 Arduinoで簡単回路作成実演
aitc_jp
PDF
Arduino入門(2) その他の素子紹介
Jun-ichi Shinde
PDF
プログラムによる計測と制御の仕組みを学ぶための学習支援ソフトウェア (ポスター)
Ryota Nakamura
PDF
Arduinoでプログラミングに触れてみよう
Hiromu Yakura
PDF
Make @ Osaka
Shigeru Kobayashi
PDF
平成25年社会人講座 Arduinoによるマイコン入門講座
Katsuhiro Morishita
PPTX
Arduino
Ryunosuke Iwai
PDF
20140910 Arduino for beginners
Kenichi Ohwada
ODP
【入門】Arduino勉強会
Masashi_Brilliant
PDF
20120222_マイコンで遊んでみた
np_sugimoto
PDF
Arduino002
Akifumi Nambu
PDF
SFC デザイン言語WS(電子工作)第4回「センサーを使う」
Makoto Hirahara
2017年01月21日 AITCシニア技術者勉強会 第3回「各種センサーを使ってみよう!~温湿度と加速度~」
aitc_jp
第2回 某社Arduino勉強会 ハンズオン
Yusuke HIDESHIMA
Japanino Workshop #3
Shigeru Kobayashi
ものづくりプロジェクトII 一日でわかるArduino入門
Yoichi Yamazaki
Japanino Workshop #2
Shigeru Kobayashi
12.06.16 日本橋勉強会資料 公開用
Miwa Iwatsuki
今すぐ始めるArduino
funa3
Arduino 入門
mitunaga
2015/05/23 シニア技術者プログラム第3弾 「第二回IoT勉強会&交流会」 15:00~15:20 Arduinoで簡単回路作成実演
aitc_jp
Arduino入門(2) その他の素子紹介
Jun-ichi Shinde
プログラムによる計測と制御の仕組みを学ぶための学習支援ソフトウェア (ポスター)
Ryota Nakamura
Arduinoでプログラミングに触れてみよう
Hiromu Yakura
Make @ Osaka
Shigeru Kobayashi
平成25年社会人講座 Arduinoによるマイコン入門講座
Katsuhiro Morishita
Arduino
Ryunosuke Iwai
20140910 Arduino for beginners
Kenichi Ohwada
【入門】Arduino勉強会
Masashi_Brilliant
20120222_マイコンで遊んでみた
np_sugimoto
Arduino002
Akifumi Nambu
SFC デザイン言語WS(電子工作)第4回「センサーを使う」
Makoto Hirahara
Ad
More from Keiji Ariyama
(9)
PDF
Android Studio開発講座
Keiji Ariyama
PDF
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Keiji Ariyama
PDF
Realmの暗号化とAndroid System
Keiji Ariyama
PDF
Android Studioの魅力
Keiji Ariyama
PDF
Vuzix developer conference - M100アプリ開発
Keiji Ariyama
PDF
Google Glassアプリ開発と自由度の変遷
Keiji Ariyama
PDF
Google Cloud Endpointsによる API構築
Keiji Ariyama
PDF
Google Mirror API勉強会 20130607
Keiji Ariyama
PDF
これからの"日付変更線"の話をしよう
Keiji Ariyama
Android Studio開発講座
Keiji Ariyama
2015年のAndroidアプリ開発入門 - ABCD 2015 Kanazawa
Keiji Ariyama
Realmの暗号化とAndroid System
Keiji Ariyama
Android Studioの魅力
Keiji Ariyama
Vuzix developer conference - M100アプリ開発
Keiji Ariyama
Google Glassアプリ開発と自由度の変遷
Keiji Ariyama
Google Cloud Endpointsによる API構築
Keiji Ariyama
Google Mirror API勉強会 20130607
Keiji Ariyama
これからの"日付変更線"の話をしよう
Keiji Ariyama
Ad
20130119 adkハンズオン発表資料
1.
C LIS -
2.
配布物の確認をお願いします ○
ブレッドボード ○ 配線材 ○ LED (赤色) ● 緑(長)× 1 ○ タクトスイッチ ● 緑(長)× 2 ○ 抵抗器 1kΩ × 1 ● 赤×2 ○ 抵抗器 10kΩ × 2 ● 黒×2 ○ Cds ○ サーミスタ 作業中でも、線材や部品の不足に気づいたら、 声をかけて下さい 01.19, 2013 Copyright C-LIS CO., LTD. 2011 2
3.
2013/01/19
ADKハンズオン 2013
4.
自己紹介 – 有山
圭二 ○ 有限会社シーリスの代表 ○ 普段はAndroidのアプリ開発とかしています ● たまにコントリビュートもしてるよ ○ 電子工作の経験は、約2ヶ月 01.19, 2013 Copyright C-LIS CO., LTD. 2011 4
5.
今回は、
「発表ドリブン学習」です 01.19, 2013 Copyright C-LIS CO., LTD. 2011 5
6.
発表ドリブン学習とは?
勉強会等での発表が決まってから、 ようやくその技術の勉強を本格的に始めること。 01.19, 2013 Copyright C-LIS CO., LTD. 2011 6
7.
資料が出来上がったのは、午前3時頃でした 01.19, 2013
Copyright C-LIS CO., LTD. 2011 7
8.
ADK(Accessory Development Kit)
とは ○ Android端末にアクセサリを接続する規格AOA(Android Open Accessory)に準拠したデバイスや、対応アプリケーションを実 装する開発キット ○ 2011年5月、Google I/Oで発表 (ADK 2011) ○ Android端末とアクセサリはUSBで接続。Android側ではアク セサリの認識と対応アプリケーションの立ち上げまでを担当 ○ Android端末とアクセサリの通信は、byte列の送受信で行う 01.19, 2013 Copyright C-LIS CO., LTD. 2011 8
9.
ADK 2011の概要 ○
オープンソースハードウェア”Arduino”に、Android端末 を接続する「USBホスト機能」を付加したもの。 ○ Androidとの通信をハンドリングするライブラリが配布さ れている。 01.19, 2013 Copyright C-LIS CO., LTD. 2011 9
10.
Arduino とは ○
Arduino(アルドゥイーノ)は、AVRマイコン、入出力ポー トを備えた基板、C言語風のArduino言語とそれの統合開 発環境から構成されるシステム。 (Wikipediaより) ○ USB接続経由でプログラムの書き込みが出来る 01.19, 2013 Copyright C-LIS CO., LTD. 2011 10
11.
“Arduino IDE”の取得とインストール
http://arduino.cc/en/Main/Software 01.19, 2013 Copyright C-LIS CO., LTD. 2011 11
12.
シリアルドライバのインストール (Mac OS)
http://www.ftdichip.com/Drivers/VCP.htm 01.19, 2013 Copyright C-LIS CO., LTD. 2011 12
13.
Arduino IDE の起動 01.19,
2013 Copyright C-LIS CO., LTD. 2011 13
14.
はじめて の スケッチ
#define PIN_LED 13 void setup() { pinMode(PIN_LED, OUTPUT); } void loop() { digitalWrite(PIN_LED, HIGH); } adk-handson/led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 14
15.
Verify 01.19, 2013
Copyright C-LIS CO., LTD. 2011 15
16.
Arduino へ 書き込み 01.19,
2013 Copyright C-LIS CO., LTD. 2011 16
17.
Arduino MEGA ADK
PCへ接続 + 給電 Android端末へ 01.19, 2013 Copyright C-LIS CO., LTD. 2011 17
18.
ArduinoをPCに接続 01.19, 2013
Copyright C-LIS CO., LTD. 2011 18
19.
Arduinoを接続したポートを選択 01.19, 2013
Copyright C-LIS CO., LTD. 2011 19
20.
Arduinoの種類を選択 01.19, 2013
Copyright C-LIS CO., LTD. 2011 20
21.
書き込み 01.19, 2013
Copyright C-LIS CO., LTD. 2011 21
22.
動作の確認方法は? 01.19, 2013
Copyright C-LIS CO., LTD. 2011 22
23.
LED
短い方がGND 01.19, 2013 Copyright C-LIS CO., LTD. 2011 23
24.
LEDを挿す
短い方がGND 01.19, 2013 Copyright C-LIS CO., LTD. 2011 24
25.
LEDを点滅 #define PIN_LED
13 void setup() { pinMode(PIN_LED, OUTPUT); } void loop() { digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(1000); } adk-handson/blink_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 25
26.
01.19, 2013
Copyright C-LIS CO., LTD. 2011 26
27.
何を作っていたのか 01.19, 2013
Copyright C-LIS CO., LTD. 2011 27
28.
電子回路 01.19, 2013
Copyright C-LIS CO., LTD. 2011 28
29.
LEDが壊れるかも 01.19, 2013
Copyright C-LIS CO., LTD. 2011 29
30.
抵抗を入れる 01.19, 2013
Copyright C-LIS CO., LTD. 2011 30
31.
どこに? 01.19, 2013
Copyright C-LIS CO., LTD. 2011 31
32.
Arduino上には、ほとんど部品が置けない 01.19, 2013
Copyright C-LIS CO., LTD. 2011 32
33.
回路は外に作る 01.19, 2013
Copyright C-LIS CO., LTD. 2011 33
34.
ブレッドボード 01.19, 2013
Copyright C-LIS CO., LTD. 2011 34
35.
ブレッドボード (配線) 01.19, 2013
Copyright C-LIS CO., LTD. 2011 35
36.
ブレッドボードに配線 01.19, 2013
Copyright C-LIS CO., LTD. 2011 36
37.
ブレッドボードに配線 01.19, 2013
Copyright C-LIS CO., LTD. 2011 37
38.
ブレッドボードに配線 13番ピンへ GNDへ 01.19,
2013 Copyright C-LIS CO., LTD. 2011 38
39.
LEDをゆっくりと点滅 #define PIN_LED
13 void setup() { pinMode(PIN_LED, OUTPUT); } int light = 0; int p = 1; void loop() { light += p; if (light == 0 || light == 255) { p *= -1; } delay(10); analogWrite(PIN_LED, light); } adk-handson/illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 39
40.
オシロスコープで観察 01.19, 2013
Copyright C-LIS CO., LTD. 2011 40
41.
Width PWM (Pulse
Wave Modulation) 01.19, 2013 Copyright C-LIS CO., LTD. 2011 41
42.
スイッチ - タクトスイッチ 01.19,
2013 Copyright C-LIS CO., LTD. 2011 42
43.
スイッチでLEDをON/OFFする 01.19, 2013
Copyright C-LIS CO., LTD. 2011 43
44.
SWTCH ILLUMINATE LED #define
PIN_LED 13 #define PIN_SWITCH 8 #define ON 1 void setup() { Serial.begin(115200); pinMode(PIN_LED, OUTPUT); pinMode(PIN_SWITCH, INPUT); } boolean on = false; int prevState = 0; int light = 0; int p = 1; adk-handson/switch_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 44
45.
void loop() {
int state = digitalRead(PIN_SWITCH); if (state == ON && state != prevState) { on = !on; light = 0; p = 1; Serial.println("State change."); } prevState = state; if (on == true) { light += p; if (light == 0 || light == 255) { p *= -1; } delay(10); } analogWrite(PIN_LED, light); } adk-handson/switch_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 45
46.
上手く動かない場合 - シリアルモニタ
void setup() { Serial.begin(115200); pinMode(PIN_LED, OUTPUT); pinMode(PIN_SWITCH, INPUT); } void loop() { int state = digitalRead(PIN_SWITCH); if (state == ON && state != prevState) { on = !on; light = 0; p = 1; Serial.println("State change."); } // 省略 01.19, 2013 Copyright C-LIS CO., LTD. 2011 46
47.
シリアルモニタの表示 01.19, 2013
Copyright C-LIS CO., LTD. 2011 47
48.
シリアルモニタ 01.19, 2013
Copyright C-LIS CO., LTD. 2011 48
49.
Cds - 光伝導体素子 01.19,
2013 Copyright C-LIS CO., LTD. 2011 49
50.
明るさに応じてLEDをON/OFFする 01.19, 2013
Copyright C-LIS CO., LTD. 2011 50
51.
暗くなると光るLED #define PIN_LED
13 #define PIN_CDS A0 #define ON 1 #define LIGHT_THRESHOLD 700 void setup() { Serial.begin(115200); pinMode(PIN_LED, OUTPUT); pinMode(PIN_CDS, INPUT); } boolean on = false; int prevState = 0; int light = 0; int p = 1; adk-handson/cds_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 51
52.
void loop() {
int state = analogRead(PIN_CDS); Serial.println(state); if (state > LIGHT_THRESHOLD && on || state < LIGHT_THRESHOLD && !on) { on = !on; light = 0; p = 1; } if (on) { light += p; if (light == 0 || light == 255) { p *= -1; } delay(10); } analogWrite(PIN_LED, light); } adk-handson/cds_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 52
53.
ADK 編 01.19, 2013
Copyright C-LIS CO., LTD. 2011 53
54.
01.19, 2013
Copyright C-LIS CO., LTD. 2011 54
55.
ADK 2011パッケージのダウンロード
https://dl-ssl.google.com/android/adk/adk_release_20120606.zip 01.19, 2013 Copyright C-LIS CO., LTD. 2011 55 http://developer.android.com/tools/adk/adk.html
56.
ADK 2011ライブラリをコピー
arduino_libs以下を、Documents/Arduino/libraries にコピー 01.19, 2013 Copyright C-LIS CO., LTD. 2011 56
57.
Arduino スケッチ -
ADKへの対応 #include <usb.h> #include <AndroidAccessory.h> #define PIN_LED 13 AndroidAccessory acc("C-LIS CO., LTD.", "ADK Test", "This is an ADK test.", "1.0.0", "http://www.c-lis.co.jp", "1234567890"); void setup() { pinMode(PIN_LED, OUTPUT); acc.powerOn(); } void loop() { if (acc.isConnected()) { digitalWrite(PIN_LED, HIGH); } else { digitalWrite(PIN_LED, LOW); } } adk-handson/adk_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 57
58.
Android端末との接続 01.19, 2013
Copyright C-LIS CO., LTD. 2011 58
59.
Androidプロジェクトの作成 01.19, 2013
Copyright C-LIS CO., LTD. 2011 59
60.
usb.jarをbuild pathに追加
[SDKをインストールしたディレクトリ]/add-ons/addon-google_apis-google-10/libs 60 01.19, 2013 Copyright C-LIS CO., LTD. 2011
61.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.co.c_lis.adktest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:launchMode="singleInstance" android:theme="@style/AppTheme" > <uses-library android:name="com.android.future.usb.accessory" /> <activity android:name="jp.co.c_lis.adktest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" android:resource="@xml/accessory_filter" /> </activity> </application> </manifest> AndroidManifest.xml 61 01.19, 2013 Copyright C-LIS CO., LTD. 2011
62.
<?xml version="1.0" encoding="utf-8"?>
<resources> <usb-accessory manufacturer="C-LIS CO., LTD." model="ADK Test" version="1.0.0" /> </resources> res/xml/accessory_filter.xml 01.19, 2013 Copyright C-LIS CO., LTD. 2011 62
63.
Android端末との接続 01.19, 2013
Copyright C-LIS CO., LTD. 2011 63
64.
AndroidからArduinoの接続を処理する 01.19, 2013
Copyright C-LIS CO., LTD. 2011 64
65.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ToggleButton android:id="@+id/toggle_led" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textOff="LED OFF" android:textOn="LED ON" /> </RelativeLayout> res/layout/activity_main.xml 01.19, 2013 Copyright C-LIS CO., LTD. 2011 65
66.
import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager; // 以下、import 省略 public class MainActivity extends Activity { private static final String LOG_TAG = "AdkTest"; private static final String ACTION_USB_PERMISSION = "jp.co.c_lis.adktest.action.USB_PERMISSION"; private UsbManager mUsbManager = null; private PendingIntent mPermissionIntent = null; private boolean mPermissionRequestPending = false; private UsbAccessory mAccessory = null; private ToggleButton mLed = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLed = (ToggleButton) findViewById(R.id.toggle_led); mUsbManager = UsbManager.getInstance(this); mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent( ACTION_USB_PERMISSION), 0); IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); filter.addAction(UsbManager.ACTION_USB_ACCESSORY_DETACHED); registerReceiver(mUsbReceiver, filter); // 現在は非推奨。Fragment#setRetainInstance(boolean)を使う Object obj = getLastNonConfigurationInstance(); if (obj != null) { mAccessory = (UsbAccessory) obj; openAccessory(mAccessory); } } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 66
67.
private final BroadcastReceiver
mUsbReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (ACTION_USB_PERMISSION.equals(action)) { synchronized (this) { UsbAccessory accessory = UsbManager.getAccessory(intent); if (intent.getBooleanExtra( UsbManager.EXTRA_PERMISSION_GRANTED, false)) { openAccessory(accessory); } else { Log.d(LOG_TAG, "permission denied for accessory " + accessory); } mPermissionRequestPending = false; } } else if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action)) { UsbAccessory accessory = UsbManager.getAccessory(intent); if (accessory != null && accessory.equals(mAccessory)) { closeAccessory(); } } } }; MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 67
68.
@Override
public void onResume() { super.onResume(); if (mInputStream != null && mOutputStream != null) { return; } UsbAccessory[] accessories = mUsbManager.getAccessoryList(); UsbAccessory accessory = (accessories == null ? null : accessories[0]); if (accessory != null) { if (mUsbManager.hasPermission(accessory)) { openAccessory(accessory); } else { synchronized (mUsbReceiver) { if (!mPermissionRequestPending) { mUsbManager.requestPermission(accessory, mPermissionIntent); mPermissionRequestPending = true; } } } } else { Log.d(LOG_TAG, "mAccessory is null"); } } MainActivity.java 1.19, 2013 Copyright C-LIS CO., LTD. 2011 68
69.
private ParcelFileDescriptor mFileDescriptor
= null; private FileInputStream mInputStream = null; private FileOutputStream mOutputStream = null; private void openAccessory(UsbAccessory accessory) { mFileDescriptor = mUsbManager.openAccessory(accessory); if (mFileDescriptor != null) { mAccessory = accessory; FileDescriptor fd = mFileDescriptor.getFileDescriptor(); mInputStream = new FileInputStream(fd); mOutputStream = new FileOutputStream(fd); Log.d(LOG_TAG, "accessory opened"); enableControls(true); } else { Log.d(LOG_TAG, "accessory open fail"); } } private void closeAccessory() { enableControls(false); try { if (mFileDescriptor != null) { mFileDescriptor.close(); } } catch (IOException e) { } finally { mFileDescriptor = null; mAccessory = null; } Log.d(LOG_TAG, "accessory closed"); } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 69
70.
@Override
public void onPause() { super.onPause(); closeAccessory(); } @Override public void onDestroy() { unregisterReceiver(mUsbReceiver); super.onDestroy(); } MainActivity.java 1.19, 2013 Copyright C-LIS CO., LTD. 2011 70
71.
protected void enableControls(boolean
enable) { mLed.setEnabled(enable); } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 71
72.
01.19, 2013
Copyright C-LIS CO., LTD. 2011 72
73.
AndroidからArduinoを操作
(データを送信) 01.19, 2013 Copyright C-LIS CO., LTD. 2011 73
74.
public class MainActivity
extends Activity implements OnCheckedChangeListener { // 省略 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLed = (ToggleButton) findViewById(R.id.toggle_led); mLed.setOnCheckedChangeListener(this); // 省略 } private void setLed(boolean on) { try { mOutputStream.write(on ? 0x1 : 0x0); mOutputStream.flush(); } catch (IOException e) { Log.e(LOG_TAG, "IOException", e); } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.toggle_led: setLed(isChecked); break; } } } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 74
75.
Arduino - Android端末からの情報を受信
void loop() { byte receive_msg[1]; if (acc.isConnected()) { int len = acc.read(receive_msg, sizeof(receive_msg), 1); if (len > 0) { if(receive_msg[0] == 1) { digitalWrite(PIN_LED, HIGH); } else { digitalWrite(PIN_LED, LOW); } } } } adk-handson/adk_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 75
76.
ArduinoからAndroidにデータ送信
(データの受信) 01.19, 2013 Copyright C-LIS CO., LTD. 2011 76
77.
ADK CDS ILLUMINATE
LED #include <Usb.h> #include <AndroidAccessory.h> #define PIN_LED 13 #define PIN_CDS A0 #define ON 1 #define LIGHT_THRESHOLD 700 AndroidAccessory acc("C-LIS CO., LTD.", "ADK Test", "This is an ADK test?", "1.0.0", "http://www.c-lis.co.jp", "1234567890"); void setup() { Serial.begin(115200); pinMode(PIN_LED, OUTPUT); pinMode(PIN_CDS, INPUT); acc.powerOn(); } adk-handson/cds_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 77
78.
boolean init_flg =
false; boolean on = false; int light = 0; int p = 1; void loop() { int state = analogRead(PIN_CDS); if (acc.isConnected()) { if (!init_flg) { analogWrite(PIN_LED, LOW); init_flg = true; } byte receive_msg[1]; byte send_msg[1]; send_msg[0] = state / 4; acc.write(send_msg, sizeof(send_msg)); int len = acc.read(receive_msg, sizeof(receive_msg), 1); if (len > 0) { if(receive_msg[0] == 1) { analogWrite(PIN_LED, 255); } else { analogWrite(PIN_LED, 0); } } } else { init_flg = false; // 以下、cds_illuminate_led の重複 } } adk-handson/adk_cds_illuminate_led 01.19, 2013 Copyright C-LIS CO., LTD. 2011 78
79.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ToggleButton android:id="@+id/toggle_led" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textOff="LED OFF" android:textOn="LED ON" /> <TextView android:id="@+id/tv_label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/toggle_led" android:layout_centerHorizontal="true" /> </RelativeLayout> res/layout/activity_main.xml 01.19, 2013 Copyright C-LIS CO., LTD. 2011 79
80.
public class MainActivity
extends Activity implements OnCheckedChangeListener { // 省略 private ToggleButton mLed = null; private TextView mLabel = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLed = (ToggleButton) findViewById(R.id.toggle_led); mLed.setEnabled(false); mLed.setOnCheckedChangeListener(this); mLabel = (TextView) findViewById(R.id.tv_label); // 省略 } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 80
81.
private ParcelFileDescriptor mFileDescriptor;
private FileInputStream mInputStream; private FileOutputStream mOutputStream; private void openAccessory(UsbAccessory accessory) { mFileDescriptor = mUsbManager.openAccessory(accessory); if (mFileDescriptor != null) { mAccessory = accessory; FileDescriptor fd = mFileDescriptor.getFileDescriptor(); mInputStream = new FileInputStream(fd); mOutputStream = new FileOutputStream(fd); Thread thread = new Thread(mDataReceiveRunnable); thread.start(); Log.d(LOG_TAG, "accessory opened"); enableControls(true); } else { Log.d(LOG_TAG, "accessory open fail"); } } private void closeAccessory() { enableControls(false); try { if (mFileDescriptor != null) { mFileDescriptor.close(); } } catch (IOException e) { } finally { mInputStream = null; mOutputStream = null; mFileDescriptor = null; mAccessory = null; } Log.d(LOG_TAG, "accessory closed"); } MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 81
82.
private int mCdsValue
= 0; private final Runnable mDataReceiveRunnable = new Runnable() { public void run() { int len = 0; byte[] buff = new byte[1]; try { while (len >= 0) { len = mInputStream.read(buff); mCdsValue = ((int) buff[0] & 0xff); mHandler.sendEmptyMessage(HANDLE_RECEIVE_MESSAGE); synchronized (this) { try { wait(1000 / 8); } catch (InterruptedException e) { } } } } catch (IOException e) { Log.e(LOG_TAG, "IOException", e); } } }; private static final int HANDLE_RECEIVE_MESSAGE = 0x01; private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case HANDLE_RECEIVE_MESSAGE: mLabel.setText("明るさ: " + mCdsValue); break; } } }; MainActivity.java 01.19, 2013 Copyright C-LIS CO., LTD. 2011 82
83.
01.19, 2013
Copyright C-LIS CO., LTD. 2011 83
84.
ADK開発の取り扱い ○
ハードウエアの設計・組み立て ○ Arduino ←→ Android データ通信プロトコル設計 ○ Arduinoスケッチの実装 ○ Androidアプリの実装 01.19, 2013 Copyright C-LIS CO., LTD. 2011 84
85.
参考書籍
Arduinoをはじめよう 今回のハンズオンのArduino編は、ほ とんどこの書籍をなぞったもの。 後半がArduino言語のリファレンスに なっているので、中級者以降にもお薦 め。 ADKの話題は無し。 http://www.amazon.co.jp/Arduino%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%88% E3%81%86-Make-PROJECTS-Massimo-Banzi/dp/4873113989 01.19, 2013 Copyright C-LIS CO., LTD. 2011 85
86.
参考書籍
Android ADK 組込みプログラミング 完全ガイド 深く知りたいならこの一冊。432pの ボリュームで、基礎から丁寧に解説。 http://www.amazon.co.jp/Android-%E7%B5%84%E8%BE%BC%E3%81%BF%E3%83%97%E3% 83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AE%8C%E5%85%A8%E3% 82%AC%E3%82%A4%E3%83%89-Smart-Mobile-Developer/dp/4798125938 01.19, 2013 Copyright C-LIS CO., LTD. 2011 86
87.
質疑応答 本資料は、有限会社シーリスの著作物であり、 クリエイティブコモンズの表示-非営利-継承 3.0 Unported
ライセンスの元で公開しています。 本資料の内容の一部は、Googleが作成、提供しているコンテンツを複製したもので、 クリエイティブコモンズの表示 2.5 ライセンスに記載の条件に従って使用しています。 01.19, 2013 Copyright C-LIS CO., LTD. 2011 87
88.
ご清聴ありがとうございました。
Arduinoスケッチ+Androidアプリのソースコードは、下記で配布しています https://github.com/keiji/adk-handson 01.19, 2013 Copyright C-LIS CO., LTD. 2011 88
Download