INDEX(各項目ごとの目次)

[HOME]  [Processing関係]  [Arduino関係]  [マテリアル関係]  [秋葉原工作マップ]

2008年用ですが、部分的に内容を更新しています(2010/06/14)。
また、[建築農業工作ゼミ2009-2010]とも連動していますので、そちらにも幾つかサンプルがあります。
:

4/21/2008

Arduino/電子工作


電子工作的な作業を5/17から開始する予定です。授業では、Arduino Diecimila(上画像)というマイクロコントローラ基盤をベースに開発します。この基盤にセンサーや電子パーツを接続することで、様々なデバイスを制作することができ、Processingと連動させることも可能です。Arduinoサイト:http://arduino.cc

5/17までに各自Arduino基盤を購入(通販)しておいて下さい。

Arduino Diecimila購入先:
メカロボショップ ¥4361(国内通販)
Sparkfun $34.95(米国通販、5日程度で到着)

次回の授業は5月10日です。

4/26は休講です。5/3は祝日ですので、次回の授業は5/10となります。
次回から、「One inch / One foot / One yard」というテーマに沿って「Wooden Stick」の制作を開始します。
「Wooden Stick」は、大きさや長さをあらわす基準ツール(独自の定規のようなもの)であり、今回用いられる様々な技術を試行するためのモチーフ/ベースにもなります。詳細については次回の授業で説明しますので、木の棒を各自持参して下さい。

Processingを用いたプログラミングのエクササイズは、次回も行います。Processingのサイト内学習サンプルや、このブログ内の説明を参考にプログラミングによる描画を試してみて下さい。「One inch / One foot / One yard」がテーマですので、
「1 inchという長さを描画する」
「1 footという長さを描画する」
「1 yardという長さを描画する」
というタイトルで幾つかのサンプルをプログラミングしてみて下さい。
インチ、フット(フィート)、ヤードという単位は、どのように人間の身体や行動と関係しているのかということを考慮しながら、表現の工夫を試みて下さい。

ノートパソコンを持っている人は、できるだけご持参ください。

4/20/2008

前期テーマ/スケジュール


前期は、様々な技術についての基本エクササイズを行い、設定したテーマに沿って表現を追求していきます。数人のゲストによるレクチャーも予定しています。ゲストレクチャーについては随時連絡致します。

前期スケジュール:
4/19 ガイダンス
4/26 休講
5/10 エクササイズ1
5/17 エクササイズ2
5/24 エクササイズ3
5/31 エクササイズ4
6/07 エクササイズ5
6/14 エクササイズ6
6/21 エクササイズ7
6/28 エクササイズ8
7/05 エクササイズ9
7/12 前期デモンストレーション

前期テーマ:「One inch /One foot / One yard」
ものごとの基準となる単位と身体との関わりついて考察するところから開始します。
スケジュール・エクササイズ1〜5までは、前期テーマをもとに「Wooden Stick」の制作を行います。

「Wooden Stick」について:
長さ1 yard(約90cm)の木の棒を各自一本用意して下さい(無垢、合板を細く切ったもの、古びた建築資材、拾った枝などどのようなものでも構いません)。各自の木の棒をベースとし、そこに様々な技術を付け加えることで、身体と関わりを持つ独自の基準ツール/デバイスを開発します。


尚、エクササイズ6以降については、後日連絡します。

Processingの基本操作 その3

前回までのプログラムは静止画を描くものでした。
つぎは、動画のプログラムに入ります。
例えば、ellipse()を用いて描いた円が画面の中で右方向に動いていくようなものをプログラムします。
円が画面左から右へ移動するには、円のX座標が常に変化していきます。そのために、前回使った変数を設定しておきます。

まず、X座標のために整数型の変数xを用意する。
円の半径のために整数型の変数rを用意する。
X座標をとりあえず20に設定。
円の半径を25に設定。
画面のサイズは横長にして幅400、高さ200に設定。
背景色をとりあえず255(白)に設定。
Y座標値は100に固定し、変数xとrを用いて円を描く。
そうすると、以下のようになります。

int x;
int r;
x=20;
r=25;
size(400,200);
background(255);
ellipse(x,100,r,r);

ただし、このままでは前回同様静止画の円が描画されます。
動画を描画させるには、setup()draw()という関数を用いて、以下のようなフォーマットを用意します。

void setup(){
//ここに初期設定を記入
}

void draw(){
//ここに描画内容を記入
}

初期設定には、円の最初の位置や大きさなどを書いておきます。
描画処理を行わせるdraw()には、アニメのセル画のように次から次へと何枚もの絵を描き続ける内容を書きます。
それでは、setup()とdraw()のフォーマットに、はじめに書いた円のプログラムを書き足します。

int x;
int r;

void setup(){
size(400,200);
x=20;
r=25;
}

void draw(){
background(255);
ellipse(x,100,r,r);
x=x+1;
}

draw(){...}内に書かれた内容は、以下のように繰り返し処理されます。

最初にbackground(255);を処理し、
つぎにellipse(x,100,r,r);を処理し、
その次にx=x+1;を処理し、
その次は、最初に戻ってbackground(255);を処理し、
つぎにellipse(x,100,r,r);を処理し、
その次にx=x+1;を処理し、
再びbackground(255);を処理し、
・・・

というように、以後も同様の順番で処理を繰り返します。これをループといいます。
具体的には、まず背景色(白)を画面に塗って、その上に円を描き、次回の準備として円のX座標値を+1しておき、再び背景色(白)で画面を真っ白にしてから、また円を描き、さらにX座標値を+1するという感じです。この繰り返しのループ処理と最後のx=x+1;というのが、円を右方向へ動かすためのプログラムになります。左辺のxは、次回のxの値であり、右辺のxは今回の計算で用いられた値を意味します。つまり、今回のX座標に+1した値を次回のX座標に自己代入するということになります。xには+1が延々と足されていくので、xは処理を繰り返すごとに増大していきます。よって、円のX座標は、初期設定のx=20という値から21、22、23・・・と変化していきます。このプログラムでは、円が画面の右端からはみ出て行っても動き続けるので、画面の右端まで行ったら、左端に戻るような条件を書き足します。

int x;
int r;

void setup(){
size(400,200);
x=20;
r=25;
}

void draw(){
background(255);
ellipse(x,100,r,r);
x=x+1;
if(x>400){
x=0;
}
}

付け加えたif(x>400){x=0;}という部分は、「もしxが増大して400(画面の右端の座標)を超えたら、xの値を0に戻す」という意味です。このように、if文をつかうことで、さまざまな条件分岐が可能になります。
x=x+1;をx++;として書くこともできます。
また、x=x+2;とすれば、スピードは倍になります。
Y座標に関しても変数を用意し、同様にyの値に処理を付け加えれば、円を斜めに動かすことができます。

Processingの基本操作 その2

長方形を描く場合は、rect()という関数を前回用いました。
円や楕円の場合は、ellipse()という関数を用います。
rect()と同様に、ellipse()も、カッコの中に入る数値は4つ必要であり、
ellipse(X座標,Y座標,幅,高さ)によって楕円の位置や形が定義されます。
正円を描くのであれば、幅と高さの数値を同じにすればいいので、

ellipse(20,30,50,50);

のように3番目と4番目の数値が等しくなります。
同様にrect()の場合も、

rect(20,30,50,50);

なら、一辺50ピクセルの正方形となります。

rect(20,30,50,50);
ellipse(20,30,50,50);

と書けば、一辺50ピクセルの正方形の上に直径50ピクセルの円が重なって描かれます。
このとき二つの位置のXY座標は(20,30)ですが、ぴったり重なるように配置されません。
それは、円の位置を決める基準点は円の中心座標になるのですが、正方形(長方形)の場合は、左上の角が基準点になっているからです。ぴったり重なるように配置するには、どちらかの図形をずらさなければなりません。
例えば、

rect(20,30,50,50);
ellipse(20+25,30+25,50,50);

というように、円を25ピクセルずらした分だけ20+25というように数式を入れることもできます。
しかし、もう一つの方法は、ellipseMode(CORNER)という関数があり、円の基準点自体をrect()と同様に左上の角に変更することです。よって、

rect(20,30,50,50); //基準点が左上角の正方形を描画
ellipseMode(CORNER); //円の基準点を左上角に設定
ellipse(20,30,50,50); //円の描画

と書くこともできます。ellipseMode(CORNER)をellipse()の手前に書いておくことで、それ以降は左上角が基準点になります。
尚、各行のダブルスラッシュ「//」以降に書かれた内容はコメントと呼ばれ、プログラムには影響しない記述内容になります。このままRunさせてもエラーはでません。プログラムにおいてメモ書きのような説明や注釈を書き添えておきたいときは、「//」を用います。


つぎに、正方形の一辺と円の直径が同じということは、もともとのrect()の幅と高さ、そしてellipse()の幅と高さの四つの値が同じであるため、同じ値の部分を変数を用いて以下のように書くことも可能です。

int a=50;
rect(20,30,a,a);
ellipseMode(CORNER);
ellipse(20,30,a,a);

int は、aという値が整数であるというタイプを指定する記号です(もし小数点が含まれる数値ならfloatを用います)。
int a=50;と書いてaに50という整数値を代入しておきます。あとは、rect()の幅と高さ、そしてellipse()の幅と高さの四つの値にaを書いておけば、すべてが50となります。冒頭のint a=50;をint a=100;と書き直せば、正方形も円も一気に2倍の大きさに変えることができます。つまり、後々変化させたい値の部分に変数を用いれば、いちいち個別に書き直す手間が省けます。
同様に、正方形と円のXY座標値もそれぞれ同じことから、

int a=50;
int x=20;
int y=30;
rect(x,y,a,a);
ellipseMode(CORNER);
ellipse(x,y,a,a);

と書けば、xとyに異なる数値を代入することで、正方形と円の位置を一気に変えることができます。
特にたくさんの図形を用いて、それらの位置や大きさなどが連関している場合、このような変数を用いれば個別に数値を書かずに一気に変換することが容易になります。

Processingの基本操作 その1

Processingのアプリケーションを開くと以下のような画面が現れます。


画面上部メニューバーのHelp>Referenceを選ぶと、プログラミングで使用される言語や関数がカテゴリーごとに列挙されているページが現れます(ProcessingのサイトにもReferenceのページがあります)。すべての言語を覚えるのは大変なので、必要に応じて辞書のように参照しながら、プログラムを書いていきます。それぞれの言語(関数)をクリックすれば、使用法のサンプルページが出てきます。
例えば、Shapeのカテゴリーの2D Primitivesの中のrect()という関数は、長方形を描くためのものです。

rect(10,30,40,20);

と書けば、X座標が10で、Y座標が30の場所に、幅40で高さ20(単位:ピクセル)の長方形を描くということになります。
カッコの中の4つの数値はそれぞれ順番にX座標、Y座標、幅、高さに対応しています。
四つの数値の間のカンマや最後のセミコロンを忘れないように書いてください。
大文字、小文字(半角英字)も間違わないように書いてください。
ちなみに、画面上の(0,0)座標は左上の角となります。左から右へX座標はプラスになっていきますが、注意しなければいけないことは、Y座標に関しては、上から下へ向けてプラスになるので、いわゆる数学で扱われる座標の向きとは異なります。
とりあえず、rect(10,30,40,20);をプログラムを書く欄に記入して、左側にあるRunボタンもしくはメニューバーのSketch>Runをクリックすれば、プログラムが開始され、その結果が別画面で現れます。その画面を閉じれば、そのプログラムは終了します。

以下のようにもう一行追加すれば、

size(200,300);
rect(10,30,40,20);

表示画面の大きさを幅200、高さ300ピクセルと指定して先ほどの長方形を描くことができます。
size()のカッコの中の二つの数値は画面の幅と高さに対応しています。もし、画面サイズを指定せず何も書かなければ、自動的に初期設定のサイズ(100x100ピクセル)が適用されることになります。

さらに、もう一行追加して、

size(200,300);
background(100);
rect(10,30,40,20);

と書けば、表示画面の背景色を指定して描画されます。
background()のカッコの中には、0から255までの数値が入ります。0は黒、255は白、その間の数値は段階ごとのグレーになります。background(255,100,30);のように3つの数値をカンマで区切って入れれば、それぞれの数値はRed,Green,Blueに対応しRGB色を指定することができます。例えば、赤ならbackground(255,0,0);で黄色ならbackground(255,255,0);です。
このような細かな設定については、冒頭で述べた「画面上部メニューバーのHelp>Reference」のページへ行き、それぞれの言語の使用法から調べることができます。

4/19/2008

Processingのダウンロードとインストール

まずは、今後の制作や表現をアシストするプログラミングの基本から始めます。
このゼミでは、Processingという開発環境(プログラミングのためのソフト)を用います。
無料でインターネットからダウンロードして利用でき、図形描画、画像、動画、音、3Dモデル、外部機器との接続(Webカメラやゲームコントローラ、自作の入出力ディバイスなど)、様々なものを扱うことが可能となります。
Processing(http://processing.org)のサイトにアクセスし、サイト内のダウンロードページ(http://processing.org/download/index.html)からダウンロードすることができます。




上画像のバージョンは135ですが、最新版(2010年5月現在では)は1.1になっています。

ダウンロードしたファイルをダブルクリックして展開するとProcessingというフォルダが現れ、それをMacintoshの場合アプリケーションのフォルダ、Windowsの場合Program Filesに移し入れます。これでインストールは完了です。
インストールしたProcessingのアイコンをダブルクリックすればアプリケーションが開きます。

授業概要

 建築発明工作ゼミにおいては、プログラミング、エレクトロニクス、メカニクス、素材加工という今日用いられている様々な技術を横断的に習得します。設定した目的やアイデアに沿って制作していきますが、技術習得中における技術的発見から偶発的なアイデアが生成されることも同時に期待します。はじめに予定していたアイデアとは異なるこのような技術的発見が、最初の発明的行為となります。この場合のアイデアとは、技術的アイデア(コンピュータの演算レベルにおけるアイデア/電気的特性におけるアイデア/素材加工法におけるアイデアなど)として、偶発的ながら即座に現象化可能なものとなるはずです。この偶発的かつ技術的アイデアが、次に行われるであろう行為の問題提起や表現の橋渡しとなるでしょう。初期アイデアと偶発的技術的アイデアの組合わせ/試行/実験を繰り返し、一つの場面を建築という社会的環境/生活的空間につくりあげていきます。
 それぞれの技術は専門的であり通常分業化されていますが、ひとつの技術に固執する習得法ではなく、複数の技術を連関させながら同時習得することを目指し、個人の視野や能力を拡張させることも同時に目的とします。
 制作されるものは、ものごとをスタティックに定義づける役目を果たすというよりも、常に変化し続ける時間/状況/人々に対応する流動的なものとなります。そのために個人レベルで様々な技術を用いツール/ディバイス/ガジェットを段階的に制作するところから始めます。そして、それらを応用拡張し、実際の空間や生活につながる状況を導きだします。

「使用機材/道具類」
プログラミング:
 *コンピュータ(Windows/Macintoshどちらでも可)
  各自ノートパソコンを持参することが望ましい。
 *開発環境(プログラミングするためのフリーのソフトウェア/インターネットからダウンロード可)
  Processing (http://processing.org)
  Arduino (http://arduino.cc)
 *参考書籍
  「Built with Processing (改訂版)」(ビー・エヌ・エヌ新社)
  「Making Things Talk(英語版)」(Oreilly & Associates Inc)

電子工作:
 *マイクロコントローラ/Arduino Diecimila基盤
  メカロボショップ (http://www.mecharoboshop.com) ¥4361
  Sparkfun (http://www.sparkfun.com) $34.95
 *半田ごて、テスター、ブレッドボード、ジャンパワイヤ、ラジオペンチなど
  秋月電子 (http://akizukidenshi.com
  千石電商 (http://www.sengoku.co.jp)
 *電子部品/センサー類:(必要に応じて各自購入)
  上記あるいは下記ショップにて購入
  マルツパーツ館 (http://www.marutsu.co.jp)
  ツクモロボット王国 (http://www.rakuten.co.jp/tsukumo/index.html)
  ストロベリーリナックス (http://strawberry-linux.com)
  Sparkfun (http://www.sparkfun.com)
  Parallax (http://microbot-ed.com/j_titlepage.html)

素材加工:木、金属、プラスチックなどの加工/メカニカルな部品製作
 *ノコギリ、金属用ノコギリ、ヤスリ、ペンチ、ドリルなど(日曜大工用具一式)。
 (学内機材:ボール盤、小型旋盤、小型フライス盤、丸ノコ、模型用卓上丸ノコ、ジグソー、ドライバドリル)

毎回の授業では、空間を前提としたテーマに沿って表現を試行します。
その都度、表現に用いられる技術的なトピックについて平行して演習します。

はじめの段階から、上記すべての機材や道具をそろえる必要はありません。
必要なものは、授業内あるいはこのブログにおいて連絡します。

4/09/2008

建築発明工作ゼミ開講

4/19(土)14:00から授業を始めます。
受講者は、各自のノートパソコンをご持参ください。
(Windows/Macintoshどちらでも可)
持参できない場合は、学校のコンピュータを使うことになります。
授業の詳細は当日行いますが、事前に質問があれば、コメントで返してください。


[目次:Processing関係]  [HOMEへ戻る]  [目次:Arduino関係]