情報デザイン演習1 「フィジカル・コンピューティング」(2024)
https://gyazo.com/3f46f310477b18c9d26d9ac1ec8da41a
授業の目的
情報と物質をまたぐガジェットのデザインを、Arduino互換基板(Grove Beginner Kit)によって経験します
教材
キット
Grove Beginner Kit for Arduino
Keestudio Leonardo
Grove Base Shield V2
参考書
小林茂「Prototyping Lab 第2版 」オライリージャパン (2017)
Arduinoの利用法について網羅的に書かれているので、購入をすすめます。
/icons/---.icon
スケジュール (全6週)
第1〜2回
Arduino 講習
キットの配布と環境構築
Arduino IDEのインストール
COMポートがわからない/認識されない (Windows)
★この記事が参考になる
CP2102 USB Driver (必要に応じて)
第3回
企画発表会
最終課題のテーマ
独自のインタフェースを作って、既存のアプリケーションを操作する
課題の目的
通常のキーボードやマウスでは入力できないような身体を使った活動を、Arduino+αを使って入力可能にする
ただのボタン入力は駄目
制作のルール
原則として配布したキットを使って実装する
履修者間で部品を貸し借りしても良い
購入依頼がある人は、企画発表のプレゼンテーションまでに ここに書き込んで ください 電子工作に慣れていれば、センサやスイッチを自作してもいい
3つ以上のセンサやスイッチを使用する (=3つ以上のパラメータを入力する)
操作するアプリケーションは自由
ブラウザゲームなどでも良い
自作のアプリも可
道具を使いやすく、丈夫にするために、追加の工作を施す
ボール紙でケースを作る、ゴム紐でリストバンドを作るなど
装着型のコントローラは、装着を容易に作りましょう
企画発表のルール
自分が作る道具と、操作するアプリケーションについて、3分±15秒でわかりやすく説明する
どういう動作で入力するのかについて述べること
使用する予定のセンサやスイッチについて述べること
3分±15秒で発表すること
パワーポイントなどの発表資料は使っても使わなくても良い
最終発表会のルール
最終発表時には、自分で作った道具を使いこなして操作を披露し、クラスメイトにも体験プレイをしてもらいます
壊れにくく、装着しやすい
第4-5回
出席自由
実装の相談と部品の受け渡しをします
養生テープ
ダンボール
ケーブルが短い場合は、はんだづけで延長します
実装がうまくいかなかったら、新しく企画たててもいいです
実装で参考になりそうなページ
関数一覧(日本語)
キーボード関数について
文字以外のキー入力をする場合
マウス関数について
加速度センサをキーボード化する
加速度センサをマウス化する
GPIOについて
トラブルシューティング
Keyboard.hがインクルードできない
ボードをArduino Leonardoに設定する
Arduino Leonardoに書き込めない
完全にキーボードとして認識されてしまっている
Arduino Leonardのリセットボタンを押して、書き込む
MacとArduinoがうまく接続できない / 書き込みエラーが出てしまう
USBでまわりエラーが出ているのかも
SMCリセットを試してみよう
PRAMリセットも?
入力に即応したい
割り込み処理を使う
外部割り込み
タイマー割り込み
並列処理がしたい
Arduinoはマルチタスクができないが・・・
段ボール工作の方法
1. タクトスイッチの面積を10cm x 10cmに拡張し、端を押しても反応するようにする
code:beep.js
void setup() {
pinMode(2,INPUT);//D2にスイッチをつなぐ
pinMode(5, OUTPUT);//D5にブザーをつなぐ
}
void loop() {
int sw = digitalRead(2);
if(sw==HIGH){
tone(5, 261,500);
}else{
}
}
2. 加速度センサでデコピンの強さを計測する
code:deco.js
//Gravity Acceleration
SoftwareWire myWire(3, 2);
LIS3DHTR<SoftwareWire> LIS; //Software I2C
LIS3DHTR<TwoWire> LIS; //Hardware I2C
void setup() {
Serial.begin(9600);
while (!Serial) {};
LIS.begin(WIRE, 0x19); //IIC init
delay(100);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_50HZ);
}
void loop() {
if (!LIS) {
Serial.println("LIS3DHTR didn't connect.");
while (1);
return;
}
//3 axis
Serial.println(abs(LIS.getAccelerationX()*LIS.getAccelerationY()*LIS.getAccelerationZ()));
delay(50);
}
3. ロータリーエンコーダを360度回転可能にする
code:rota.js
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int n = analogRead(A0);
Serial.println(n);
delay(50);
}
第6回
作品発表会
タイムライン
セットアップとレポートの提出 (〜15:50)
提出先
デモビデオとコメント
Arduinoの.inoファイル (ファイル名の冒頭に学籍番号をつけてください)
作品の発表 (15:50 〜 17:00)
1作品5分
まず作者自身がプレイして説明する (1分以内)
次に作者以外の履修者もプレイする
人気投票とキットの回収 (17:00〜)
人気投票
キットは貸出当初の状態に戻し、副手に渡してください
評価基準
企画発表会で時間が守れたか (40点)
課題の目的が作品で満たせているか (30点)
作品の作り込み、面白さ、意外性など (30点)
/icons/---.icon
過去の授業