Workshop at IAMAS 2008-05-24

157
ハードウェアでスケッチ フィジカル・コンピューティング・ワークショップ 講師:小林茂+遠藤孝則/アシスタント:蛭田直 2008.05.24

Transcript of Workshop at IAMAS 2008-05-24

Page 1: Workshop at IAMAS 2008-05-24

ハードウェアでスケッチフィジカル・コンピューティング・ワークショップ

講師:小林茂+遠藤孝則/アシスタント:蛭田直

2008.05.24

Page 2: Workshop at IAMAS 2008-05-24

本日の予定

• 第1部:イントロダクション(10:00-11:15)• 第2部:入門編(11:30-13:30)(休憩:13:30-14:30)• 第2部:応用編(14:30-16:15)• 第3部:スケッチ(16:30-17:45)• 第4部:プレゼン&まとめ(17:45-18:30)

Page 3: Workshop at IAMAS 2008-05-24

配布物一覧

品名 品番など 数Gainer I/Oモジュール 1個ブレッドボード SAD-01 1個ジャンプワイヤ(柔) SPP-100 5本ジャンプワイヤ(硬) SKS-140 数本USBケーブル 1本抵抗器(橙橙茶金) 330Ω 2個抵抗器(茶黒橙金) 10kΩ 1個ボリューム 10kΩ(Bカーブ) 1個CdSセル 5mm 1個LED 白 2個加速度センサ KMX52-1050 1個

Page 4: Workshop at IAMAS 2008-05-24

自己紹介

• 1970年愛知県名古屋市生まれ• 電子楽器メーカー(1993年4月~2004年6月)

– サウンドデザイナー– ソフトウェアエンジニア

• IAMAS(2004年7月~)– フィジカル・コンピューティング– ユーザーインタフェース

Page 5: Workshop at IAMAS 2008-05-24

第1部:イントロダクション(10:00-11:15)

• フィジカル・コンピューティングとは?• Gainerとは?• Funnelとは?

Page 6: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングとは?

• ニューヨーク大学の ITP*1でTom Igoeらが中心となって教えているコースの名前

• PCをブラックボックスとして扱わない• 原理原則を教え「人間がいかにコンピュータとコミュニケーションし得るか?」を考え直す

• デザイナーやアーティストが主な対象

*1 Interactive Telecommunications Program

Page 7: Workshop at IAMAS 2008-05-24

関連:ITP Spring Show 2008

概要:

• ITPで学ぶ学生の展覧会で毎年2回開催• 5月12日から13日まで開催• http://itp.nyu.edu/shows/spring2008/

Page 8: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングとは?

一般的なPCから見た人間は?

• キー情報(ASCIIキーボードから)• マウス情報(1つのマウスから)

Page 9: Workshop at IAMAS 2008-05-24

Alto (1973)

出典:http://toastytech.com/guis/

Page 10: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングとは?

• PC+標準入出力デバイスの世界で実現できるインタラクションには限界がある– 人間が直接触れて感じることができない– PCのパラダイムに縛られてしまう

• 統一されたプラットホームならではの良さも勿論ある(例:Flashなどによるウェブ上での表現)

Page 11: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングとは?

• 物理的な入出力を活用することによって表現力は拡大する(例:Nintendo Wii)

• 電子楽器などではずいぶん昔からのテーマ• Appleでも再定義できていない領域

– iPod:携帯音楽プレーヤの再定義– iPhone:携帯電話の再定義– MacBook Air:PCの再定義???

Page 12: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングの構成要素

• センサー(例:光、圧力、音、温度、加速度など)• アクチュエータ(例:LED、モータ、ソレノイドなど)• プロセッサ(例:マイコン、I/Oモジュール+PCなど)

→ものすごく簡単にまとめると プログラミング+電子工作

Page 13: Workshop at IAMAS 2008-05-24

プログラミング+電子工作?

フィジカル・コンピューティングは難しい?

• プログラミングはそれなりのスキルが必要(例:ActionScript、C、C++、Javaなど)• 電子工作にもそれなりのスキルが必要(例:回路設計、実装、検証)• 両方のスキルが必要ということは…

Page 14: Workshop at IAMAS 2008-05-24

プログラミング+電子工作?

フィジカル・コンピューティングは難しい?

• 確かに習得するまでにはそれなりの努力が必要• できあがった結果は直接的に人間の感覚に訴えるものになる(はず)

Page 15: Workshop at IAMAS 2008-05-24

プログラミング+電子工作?

最近では扱いやすいプラットホームが登場

• プログラミング– Processing– Flash

• 電子回路のプロトタイピング– Gainer– Arduino– Phidgets

Page 16: Workshop at IAMAS 2008-05-24

電子工作は大変?

• 誰でもはんだ付けくらいはやったことがある• まずは必要最小限のこと(だけ)を覚えればスタートできる– 電圧~電流~抵抗– 回路図の読み方– オームの法則など– よく使う部品のシンボルと特徴

• 失敗しながら覚えていけばいい• でもUNDOはきかない(=人生と一緒)

Page 17: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン

概要:

• メディアインスタレーション• 製作期間は約1ヵ月• NTT InterCommunication Center [ICC]で展示(2007.4.19-2008.3.9)

Page 18: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(オリジナル版)

写真撮影:萩原健一

Page 19: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(オリジナル版)

写真撮影:萩原健一

Page 20: Workshop at IAMAS 2008-05-24

作品紹介:ゲイナーカイダン(オリジナル版)

写真撮影:萩原健一

Page 21: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(オリジナル版)

写真撮影:萩原健一

Page 22: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン

CdSセル

レーザーモジュールI/Oモジュール

アクチュエータユニット

ACソレノイド

SSR

AC電源へ

Page 23: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン

Page 24: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(拡張版)

写真提供:ICC

Page 25: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(拡張版)

写真提供:ICC

Page 26: Workshop at IAMAS 2008-05-24

作品紹介1:ゲイナーカイダン(拡張版)

写真提供:ICC

Page 27: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar

• 金箱淳一(大学院6期生)• 音楽表現のためのギター型インタフェース

– 親しみやすさ– 演奏の奥深さ

• 各種センサ+ I/Oモジュール+PC• IAMAS東京展「いまからだ」などで展示• 学生CGコンテストなど複数で受賞

Page 28: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(スケッチ)

Page 29: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(1号)

Page 30: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(2号)

Page 31: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(2号の製作中)

Page 32: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(3号)

Page 33: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(4号)

Page 34: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(4号の製作中)

Page 35: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(4号の配線)

Page 36: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(5号)

Page 37: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(5号の内部)

Page 38: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(展示)

• リンツ(オーストリア)アルスエレクトロニカフェスティバル

• 青山(東京)IAMAS東京展「いまからだ」

Page 39: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(展示)

Page 40: Workshop at IAMAS 2008-05-24

作品紹介2:Mountain Guitar(展示)

Page 41: Workshop at IAMAS 2008-05-24

作品紹介3:みくまりねその3

• 柏木恵美子(アカデミー11期生)• メディアインスタレーション• 水に関するオノマトペが題材• 水道の蛇口がインタフェース• IAMAS東京展「いまからだ」で展示(2007.8.24-26)

Page 42: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングの実現方法

マイコンのみ(例:PIC、AVR)a

b

c

d

A

B

C

D

マイコンmicrocontroller

program

a0]=ain.o;aout.1 = 255;

Page 43: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングの実現方法

マイコン+PC(例:Arduino)a

b

c

d

A

B

C

D

マイコンmicrocontroller

PC

USB

program

a0]=ain.o;aout.1 = 255;

program

a0]=ain.o;aout.1 = 255;

Page 44: Workshop at IAMAS 2008-05-24

Arduino

Page 45: Workshop at IAMAS 2008-05-24

フィジカル・コンピューティングの実現方法

I/Oモジュール+PC(例:Gainer、Phidgets)a

b

c

d

A

B

C

D

I/OモジュールI/O module

PC

USB

program

a0]=ain.o;aout.1 = 255;

Page 46: Workshop at IAMAS 2008-05-24

Gainerとは?

オープンソース・ハード&ソフトのツールキット

• I/Oモジュール• ソフトウェア・ライブラリ

– ActionScript 2/3– Processing– Max/MSP

Page 47: Workshop at IAMAS 2008-05-24

Gainer I/Oモジュール

Page 48: Workshop at IAMAS 2008-05-24

I/Oモジュール+ブレッドボード

Page 49: Workshop at IAMAS 2008-05-24

さまざまな電子部品

Page 50: Workshop at IAMAS 2008-05-24

I/Oモジュール+ブレッドボード+部品

Page 51: Workshop at IAMAS 2008-05-24

入力:曲げ

Page 52: Workshop at IAMAS 2008-05-24

出力:LEDアレイ

Page 53: Workshop at IAMAS 2008-05-24

出力:振動モータ

Page 54: Workshop at IAMAS 2008-05-24

Gainerの特徴

• ブレッドボードとの組み合わによりさまざまな構成を自由に試行錯誤できる

• 入出力の設定をある程度自由に選択できる• 特定の目的のための構成も用意されている

– マトリクスLEDの制御

Page 55: Workshop at IAMAS 2008-05-24

Funnelとは?:背景

• Gainerはいわばシンプルなドライバ→複雑な現実世界を扱うにはもう少し高次の レベルが必要なのでは?

• 全ての用途をカバーできるツールキットはない→ツールキットの使い分けは容易ではない

• 有線接続だと体験に制限がでてしまう→簡単に利用できる無線接続が必要

Page 56: Workshop at IAMAS 2008-05-24

Funnelとは?:コンセプト

• スケッチからプロトタイプまでシームレスに使えるツールキット

• デザイナー/アーティストとエンジニアの「共通言語」

Page 57: Workshop at IAMAS 2008-05-24

Funnelとは?:関連

Sketching User ExperiencesGetting the Design Right and the Right Design

Bill Buxton(Morgan Kaufmann Pub・2007年)

Page 58: Workshop at IAMAS 2008-05-24

Funnelの特徴

• 疑似コード風のコーディング• 入出力をより簡単に扱うためのフィルタ

– ローパス、ハイパス– アナログ入力を設定した閾値で分割– スケーリング– オシレータ

• 複数の I/Oモジュールに対応

Page 59: Workshop at IAMAS 2008-05-24

Funnelの構成

USB XBeeDongle

GainerI/O Module

Arduino(with Firmata)

USB XBeeDongle

Funnel Server

ActionScript 3 Processing Max/MSPetc.Ruby

AS3 Library Processing Library OSC LibrariesRuby Library

Funnel I/OMaxStreamXBee

Funnel I/OMaxStreamXBee

Page 60: Workshop at IAMAS 2008-05-24

Funnelの特徴

• 複数の I/Oモジュールに対応– Gainer– Arduino– XBee– Funnel I/O(開発中)

• ソフトウェア・ライブラリ– Processing– ActionScript 3(FlashまたはFlex)– Ruby

Page 61: Workshop at IAMAS 2008-05-24

デモ:Action-Coding×Funnel×Gainer I/O

Action-Codingとは?

• 開発者:増田一太郎• JRubyからProcessing APIを利用• プログラムの動的な書き換え

Page 62: Workshop at IAMAS 2008-05-24

デモ:Action-Coding×Funnel×Gainer I/O

ポートイベントの検出

• ボタンが押されたら画面の色を変更

Page 63: Workshop at IAMAS 2008-05-24

デモ:Action-Coding×Funnel×Gainer I/O

オシレータ

• LEDをチカチカ点滅• LEDをふわふわ点滅• 点滅の周期を変える

Page 64: Workshop at IAMAS 2008-05-24

デモ:Action-Coding×Funnel×Gainer I/O

加速度センサを使う

• 加速度センサの値を取得• 3Dオブジェクトをコントロール

Page 65: Workshop at IAMAS 2008-05-24

関連:ものづくりの新しい流れ

• Makehttp://jp.makezine.com/

• Instructableshttp://www.instructables.com/

Page 66: Workshop at IAMAS 2008-05-24

関連:オープンソースハードウェア

• v1.0をベースにSparkFunがリ・デザイン• Creative Commons Attribution-Share Alike

Page 67: Workshop at IAMAS 2008-05-24

関連:パーソナルファブリケーション

ものづくり革命パーソナル・ファブリケーションの夜明け

ニール・ガーシェンフェルド(ソフトバンククリエイティブ・2006年)

Page 68: Workshop at IAMAS 2008-05-24

関連:パーソナルファブリケーション

大量生産→個人が欲しいものを自分で作る時代へ

• 加工機械の低価格化– 切削加工機– 3Dプリンタ– レーザーカッタ– いずれは基板プリンタも…

• マイコンの高性能化&モジュール化• さまざまなツールキットの充実

Page 69: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

概要:

• プロトタイピングにフォーカスした会議• 2007.6.23~24の二日間開催• 参加者は約30名• 全員が発表• 濃密な情報交換とコミュニティ作り• 最後に「Sketching in Hardware」を実践

Page 70: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 71: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 72: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 73: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 74: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 75: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 76: Workshop at IAMAS 2008-05-24

関連:Sketching in Hardware 2

Page 77: Workshop at IAMAS 2008-05-24

第2部:実習1(11:30~12:15)

• 電子回路の基礎知識• ブレッドボードの使い方• LEDを点灯させてみる• LED+スイッチ

Page 78: Workshop at IAMAS 2008-05-24

電圧~電流~抵抗

電気の流れは水の流れのようなもの

• 電圧– 2点間の高度(電位)の違い– 基準点が必要(GND)– 単位はボルト(V)

Page 79: Workshop at IAMAS 2008-05-24

電圧のイメージ図

低高

Page 80: Workshop at IAMAS 2008-05-24

電圧~電流~抵抗

電気の流れは水の流れのようなもの

• 電流– 電圧の高いところから低いところに流れる– 単位はアンペア(A)

Page 81: Workshop at IAMAS 2008-05-24

電流のイメージ図

少多

Page 82: Workshop at IAMAS 2008-05-24

電圧~電流~抵抗

電気の流れは水の流れのようなもの

• 抵抗– 電流の流れにくさ– 単位はオーム(Ω)

Page 83: Workshop at IAMAS 2008-05-24

抵抗のイメージ図

低 高

Page 84: Workshop at IAMAS 2008-05-24

電圧~電流~抵抗

よく出てくる補助単位の例

• 1,000倍を表すキロ(例:1kΩ)• 1,000,000倍を表すメガ(例:1MΩ)• 1

1,000を表すミリ(例:1mA)• 1

1,000,000を表すマイクロ(例:50µA)

Page 85: Workshop at IAMAS 2008-05-24

回路図ってなに?

Page 86: Workshop at IAMAS 2008-05-24

回路図ってなに?

回路図は電子回路の設計図

• シンボルで表した電子部品の接続を示したもの• シンボルに若干のバリエーションはあるが、基本的には全世界共通

Page 87: Workshop at IAMAS 2008-05-24

電源の回路図シンボル

+5V GND

Page 88: Workshop at IAMAS 2008-05-24

スイッチの回路図シンボルと部品例

Page 89: Workshop at IAMAS 2008-05-24

抵抗器の回路図シンボルと部品例

Page 90: Workshop at IAMAS 2008-05-24

可変抵抗器の回路図シンボルと部品例

Page 91: Workshop at IAMAS 2008-05-24

LEDの回路図シンボルと部品例

Page 92: Workshop at IAMAS 2008-05-24

ブレッドボードってなに?

• 部品の足を穴にさすことで電子回路を形成• はんだ付け不要

– 部品を再利用できる– 回路を組み間違えてもやり直しできる– 耐久性にはやや注意が必要

Page 93: Workshop at IAMAS 2008-05-24

ブレッドボードの構造

• 横方向のブロックは背面で接続• 縦方向のブロックは未接続• 電源用のエリアは専用に用意されている

Page 94: Workshop at IAMAS 2008-05-24

実習:LEDを点灯させてみよう

Page 95: Workshop at IAMAS 2008-05-24

LEDを点灯させてみよう

どうして抵抗器が必要なの?

• LEDには適切な電流の範囲がある(例:20mA)• その範囲を超えると簡単に焼き切れてしまう• 適切な値の抵抗器を用いて電流を制限する• 適切な抵抗値はどうやって求める?→オームの法則を用いて計算する

※抵抗器で電流を制限する方法が全てではありません

Page 96: Workshop at IAMAS 2008-05-24

オームの法則

電圧~電流~抵抗の関係

V = I × R

• Vは電圧で単位はV(ボルト)• Iは電流で単位はA(アンペア)• Rは抵抗で単位はΩ(オーム)

Page 97: Workshop at IAMAS 2008-05-24

オームの法則

電源電圧− LEDの電圧 = LEDに流したい電流× R

Rを求めるためにこの式を変形

R =電源電圧− LEDの電圧LEDに流したい電流

例:電源電圧が5.0V、LEDの電圧が1.8V、電流が10mA

R =5 − 1.8

0.01=

3.2

0.01= ?

※実際には計算結果に近い値の抵抗器を用いる

Page 98: Workshop at IAMAS 2008-05-24

例:LEDを点灯させてみる

Page 99: Workshop at IAMAS 2008-05-24

参考:ジャンプワイヤの色分け

• 赤:電源の+側(+5V)• 黒:電源のー側(GND)• 白・青・黄:センサとの接続など

Page 100: Workshop at IAMAS 2008-05-24

例:LEDを点灯させてみる(NG)

の方向が違うワイヤをさす位置が違う

にささっていない

Page 101: Workshop at IAMAS 2008-05-24

実習:LEDをスイッチでオン/オフさせてみる

Page 102: Workshop at IAMAS 2008-05-24

実習:LEDをスイッチでオン/オフさせてみる

7

Page 103: Workshop at IAMAS 2008-05-24

第2部:実習2(12:15~13:30)

Funnel入門

• 出力をコントロールしてみる– マウスで I/Oモジュール上のLEDを制御– I/Oモジュール上のボタンでLEDを制御

• 入力を扱ってみる– ボリューム– CdSセル

Page 104: Workshop at IAMAS 2008-05-24

Funnel入門:Gainer I/Oの出力について

出力には2種類ある

• デジタル出力(dout:0か1かの2段階)– LED、モータなど– 状態がシンプルで取扱が簡単

• アナログ出力(aout:0~1の256段階)*2– LED、モータなど– 連続的な変化を扱うことができる

*2 実際にはPWMによる疑似アナログ出力

Page 105: Workshop at IAMAS 2008-05-24

Funnel入門:マウスによる制御

コード例 1 マウスで I/Oモジュール上のLEDを制御( 01 ControlLEDByMouse)

import processing.funnel.*;

Gainer gainer;

void setup()

size(200, 200);

frameRate(30);

gainer = new Gainer(this, Gainer.MODE1);

gainer.autoUpdate = true;

void draw()

background(100);

Page 106: Workshop at IAMAS 2008-05-24

Funnel入門:マウスによる制御

コード例 2 マウスで I/Oモジュール上のLEDを制御( 01 ControlLEDByMouse続き)

void mousePressed()

gainer.led().value = 1.0;

void mouseReleased()

gainer.led().value = 0.0;

Page 107: Workshop at IAMAS 2008-05-24

Funnel入門:ボタンによる制御

コード例 3 ボタンで I/Oモジュール上のLEDを制御( 02 ControlLEDByButton)

import processing.funnel.*;

Gainer gainer;

void setup()

size(200, 200);

frameRate(30);

gainer = new Gainer(this, Gainer.MODE1);

gainer.autoUpdate = true;

void draw()

background(100);

Page 108: Workshop at IAMAS 2008-05-24

Funnel入門:ボタンによる制御

コード例 4 ボタンで I/Oモジュール上のLEDを制御( 02 ControlLEDByButton続き)

void gainerButtonEvent(boolean pressed)

if (pressed)

gainer.led().value = 1.0;

else

gainer.led().value = 0.0;

Page 109: Workshop at IAMAS 2008-05-24

Funnel入門:aout 0にLEDを接続

Page 110: Workshop at IAMAS 2008-05-24

Funnel入門:aout 0にLEDを接続

Page 111: Workshop at IAMAS 2008-05-24

Funnel入門:アナログ出力の制御

コード例 5 ボタンでaout 0に接続したLEDを制御

// _02_ControlLEDByButtonの以下の部分だけを変更するvoid gainerButtonEvent(boolean pressed)

if (pressed)

gainer.analogOutput(0).value = 1.0;

else

gainer.analogOutput(0).value = 0.0;

Page 112: Workshop at IAMAS 2008-05-24

Funnel入門:アナログ出力の制御(LFO)

コード例 6 ボタンでaout 0に接続したLEDを制御( 03 ControlLEDWithLFOByButton)

Gainer gainer;

Osc osc;

void setup()

size(200, 200);

frameRate(30);

gainer = new Gainer(this, Gainer.MODE1);

gainer.autoUpdate = true;

// オシレータを生成してイベントリスナをセットosc = new Osc(this, Osc.SQUARE, 1.0, 0);

osc.serviceInterval = 30;

osc.addEventListener(Osc.UPDATE, "oscUpdated");

Page 113: Workshop at IAMAS 2008-05-24

Funnel入門:アナログ出力の制御(LFO)

コード例 7 ボタンでaout 0に接続したLEDを制御( 03 ControlLEDWithLFOByButton続き)

// オシレータが更新される度に出力を更新void oscUpdated(Osc osc)

gainer.led().value = osc.value;

// ボタンの状態にあわせてオシレータを制御void gainerButtonEvent(boolean pressed)

if (pressed)

osc.reset();

osc.start();

else

osc.stop();

Page 114: Workshop at IAMAS 2008-05-24

Funnel入門:デジタル出力

Page 115: Workshop at IAMAS 2008-05-24

Funnel入門:デジタル出力

Page 116: Workshop at IAMAS 2008-05-24

Funnel入門:ACソレノイドを動かす(デモ)

CdSセル

レーザーモジュールI/Oモジュール

アクチュエータユニット

ACソレノイド

SSR

AC電源へ

※この図では dout 0に接続していますが今回は aout 0に接続して下さい

Page 117: Workshop at IAMAS 2008-05-24

Funnel入門:ACソレノイドを動かす(デモ)

• SSR(ソリッド・ステート・リレー)によりAC100V機器もLEDと同様にオン/オフ制御できる

• ACソレノイドの直線運動を別のエネルギーに変換することでフィジカルな世界に働きかけることができる

Page 118: Workshop at IAMAS 2008-05-24

Funnel入門:Gainer I/Oの入力について

入力には2種類ある

• デジタル入力(din:0か1かの2段階)– スイッチなど– 状態がシンプルで取扱が簡単

• アナログ入力(ain:0~1の256段階)– 出力電圧が変化するセンサなど– 連続変化を扱うことができる

Page 119: Workshop at IAMAS 2008-05-24

Funnel入門:din 0にスイッチを接続

Page 120: Workshop at IAMAS 2008-05-24

Funnel入門:din 0にスイッチを接続

Page 121: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0にボリュームを接続

Page 122: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0にボリュームを接続

Page 123: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0にボリュームを接続

• 04 SimpleScopeを開いて実行• ボリュームを回して変化を確認• ain 1が不安定なのはなぜ?• どうしてボリュームを回すと電圧が変わるの?

Page 124: Workshop at IAMAS 2008-05-24

Funnel入門:抵抗分圧

Page 125: Workshop at IAMAS 2008-05-24

Funnel入門:抵抗分圧

Page 126: Workshop at IAMAS 2008-05-24

Funnel入門:サンプルをボリュームで制御

• 05 Treeを開く*3

• 変更を加えるために別名で保存• Funnelを使うための準備• mouseXをain 0の値で置き換える

*3 Topics/Fractals and L-Systems/Treeと同じものです

Page 127: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に光センサを接続

Page 128: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に光センサを接続

Page 129: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に光センサを接続

• 改変した 05 Treeを再度実行→ボリュームの場合と何かが違う?

• 04 SimpleScopeで入力の範囲を調べる• Scalerをフィルタとして追加する• 意図した通りになったかどうか確認

Page 130: Workshop at IAMAS 2008-05-24

Funnel入門:Scalerの追加

コード例 8 Scalerを追加した 05 Tree

import processing.funnel.*;

Gainer gainer;

void setup()

size(400, 400, P3D);

...

gainer = new Gainer(this, Gainer.MODE1);

Filter f[] =

new Scaler(0.3, 0.9, 0, 1, Scaler.LINEAR, true)

;

gainer.analogInput(0).filters = f;

Page 131: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に圧力センサを接続(デモ)

Page 132: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に圧力センサを接続(デモ)

Page 133: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に曲げセンサを接続(デモ)

Page 134: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に曲げセンサを接続(デモ)

Page 135: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に距離センサを接続(デモ)

Page 136: Workshop at IAMAS 2008-05-24

Funnel入門:ain 0に距離センサを接続(デモ)

Page 137: Workshop at IAMAS 2008-05-24

第2部:実習3(14:30~16:15)

Funnel応用

• 少し高度な入力を扱ってみる– 加速度センサ

• メディア再生のコントロール– サウンド– ムービー

Page 138: Workshop at IAMAS 2008-05-24

Funnel応用:ainに加速度センサを接続

Page 139: Workshop at IAMAS 2008-05-24

Funnel応用:ainに加速度センサを接続

Page 140: Workshop at IAMAS 2008-05-24

Funnel応用:ainに加速度センサを接続

• 04 SimpleScopeを開く• 表示するチャンネル数を3に増やす• x, y, zそれぞれの軸の動きを確認

– 傾けてみる– 振ってみる

Page 141: Workshop at IAMAS 2008-05-24

Funnel応用:加速度センサの用途

• 動きの検出• 傾きの検出→なぜ加速度センサで傾きが検出できるの?

Page 142: Workshop at IAMAS 2008-05-24

Funnel応用:傾きを検出する原理

Page 143: Workshop at IAMAS 2008-05-24

Funnel応用:センサの出力から角度を求める

• フィルタで細かい動きを取り除く• 04 SimpleScopeで変化幅を確認する• -1から+1までにスケーリングする• 逆sin関数を用いて角度に変換する

Page 144: Workshop at IAMAS 2008-05-24

Funnel応用:加速度センサを使ってみる

• 06 RGBCube Mouseを開く*4

• マウスを動かして動作を確認する• マウス操作を加速度センサに置き換える

*4 3D and OpenGL/Form/RGBCubeを一部改変

Page 145: Workshop at IAMAS 2008-05-24

Funnel応用:Processingでのサウンド再生

ライブラリを追加することで機能を拡張できる

• Libraries Processing 1.0 (BETA)http://processing.org/reference/libraries

• Minimhttp://code.compartmental.net/tools/minim

Page 146: Workshop at IAMAS 2008-05-24

Funnel応用:Processingでのサウンド再生

コード例 9 簡単なサウンド再生()

import ddf.minim.*;

AudioPlayer player;

void setup()

size(200, 200);

// まず最初にMinimをスタートするMinim.start(this);

// ファイルをロードし、AudioPlayerのバッファサイズを512サンプルに設定するplayer = Minim.loadFile("groove.mp3", 512);

Page 147: Workshop at IAMAS 2008-05-24

Funnel応用:Processingでのサウンド再生

コード例 10 簡単なサウンド再生(続き)

// この部分をセンサなどに置き換えるとキーボード以外でコントロールできるようになるvoid keyPressed()

// キー’p’が押されたらサウンド再生を開始するif ( key == ’p’ ) player.play();

Page 148: Workshop at IAMAS 2008-05-24

第3部:スケッチ(16:30~17:45)

• 第2部で学んだスキルを用いて制作• クオリティにはこだわりすぎない• コードで書けない部分は手動でOK

Page 149: Workshop at IAMAS 2008-05-24

参考:Bill Buxton(2006)What Sketches (and Prototypes) Are and Are Not.• Quick(素早く作る)• Timely(必要な時に作る)• Inexpensive(安く作る)• Disposable(終わったら捨てられるように)• Constrained Resolution(必要充分なクオリティで)

• Suggest & explore rather than confirm(意訳:スケッチは作品ではない)

Page 150: Workshop at IAMAS 2008-05-24

第4部:プレゼン&まとめ(17:45~18:30)

• プレゼン(一人当たり3分程度)• 講評と質疑応答• まとめ

Page 151: Workshop at IAMAS 2008-05-24

参考書籍

Making Things TalkPractical Methods for Connecting Physical Objects

Tom Igoe(O’Reilly Media・2007年)

Page 152: Workshop at IAMAS 2008-05-24

参考書籍

Built with Processing [改訂版]デザイン/アートのためのプログラミング入門

前川峻志+田中孝太郎(ビー・エヌ・エヌ新社・2008年)

Page 153: Workshop at IAMAS 2008-05-24

参考書籍

ProcessingA Programming Handbook for Visual Designers and Artists

Casey Reas + Ben Fry(MIT Press・2007年)

Page 154: Workshop at IAMAS 2008-05-24

参考書籍

デザイン思考の道具箱イノベーションを生む会社のつくり方

奥出直人(早川書房・2007年)

Page 155: Workshop at IAMAS 2008-05-24

参考書籍

はじめてのGainerプログラミングガイド布留川英一(工学社・2008年)

Page 156: Workshop at IAMAS 2008-05-24

参考書籍

+GAINERPhysical Computing with Gainer

GainerBook Labo+くるくる研究室(九天社・2007年)

Page 157: Workshop at IAMAS 2008-05-24

ハードウェアでスケッチフィジカル・コンピューティング・ワークショップ

講師:小林茂+遠藤孝則/アシスタント:蛭田直

2008.05.24