このブログへの投稿/アップロードについて(コメントは誰でも、投稿は受講者+スタッフのみ)
コメント/投稿/ラベルについて(基本事項)投稿時間の設定(下書き/予定など)プログラム(ソースコード)を投稿する際の注意点Processingのプログラム(Applet)を表示する方法
ArduinoやProcessingについては「建築発明工作ゼミ2008」の方にまとめてあります。
秋葉原の電子工作マップ、Arduino販売店についてはこちら。 :

2010年12月12日日曜日

建築農業工作ゼミ「植物都市」展

建築農業工作ゼミ「植物都市」展

単なる人間の利用を越えた、環境の制御方法を各自の考案した手法を組み合わせて、ありうるかもしれない未来を実現。
12月18日(土)には17:30より、クロージングパーティをおこないます。

■会期:2010年12月15日(水)-18日(土)
[18日 17:30よりクロージングパーティ]
■会場:GALLERY OBJECTIVE CORRELATIVE【地図】
■開場時間:11:00-17:00 ※17日(金)、18日(土)は19:00まで
■入場無料

■主催:近畿大学国際人文科学研究所 四谷アート・ステュディウム
■企画:建築農業工作ゼミ

2010年11月26日金曜日

After Effects:Daniele Del Nero

A series of architectural scale models constructed with black paper and covered with flour and a layer of mould to create the effect of old abandoned buildings.
My purpose is to talk about the sense of time and destiny of the planet after the human species, through the sense of restlessness which abandoned buildings are able to communicate.




LINK:http://danieledelnero.blogspot.com/

2010年11月5日金曜日

10/11/05 進捗

進捗状況を下記ブログにアップしました。
主に前期やってた納豆菌実験など、前回講義で紹介した内容ですが、、一部画像を更新しています。
共有した方がいい情報はこちらのゼミHPに載せます。

http://sciencemontage.blogspot.com/

2010年10月18日月曜日

Rémi Bragard

“Corrosion Organisée” by Rémi Bragard

2010年10月15日金曜日

Hans Haacke など

Hans Haacke




アヴィタル・ゲヴァ




Mark Dion




Roxy Paine




Tony Feher

Moose Curtis







2010年10月14日木曜日

粘菌・変形菌に関するリンク


ただいま、京都科学の代理店にカタログと見積もりを頼んでいます。
届き次第、アップします。

















(動画あり)















変形菌の世界










京都科学(販売カタログ)













高校生による実験レポート





















イグ・ノーベル賞受賞者の研究内容


















原形質流動の観察






















日本変形菌研究会
書籍リスト、研究者列伝(南方熊楠等)あり

2010年9月10日金曜日

建築農業工作ゼミ:後期授業

後期の「建築農業工作ゼミ」は、
9月25日(土)13:00から授業開始となります。
なお、全体の開講日程につきましては、
WEBサイトに掲載の「開講日カレンダー」をご確認ください。

2010年8月26日木曜日

建築農業工作ゼミ「自動化」展_REPORT

展覧会の写真を以下のサイトにアップしました。


Yotsuya Art Studium | 四谷アート・ステュディウム

http://www.artstudium.org/report/2010/08/post_67.htm


GALLERY OBJECTIVE CORRELATIVE

http://correlative.org/exhibition/2010/nou/info.html



2010年8月1日日曜日

建築農業工作ゼミ「自動化」展

建築農業工作ゼミ「自動化」展

作物・野菜のプランターでの栽培とその観察記録の方法。または豆腐の製造機や納豆の醗酵機、あるいは植物の家のプラン等を、各作り手たちが創意工夫して発明し「自動化」したデバイス(装置)やシステム(プログラム)。

8月6日(金)18:00〜は、各自栽培した作物、自作の豆腐の製造機、納豆の醗酵機などを使った料理を持ち寄り、食事会をおこないます。どなたでも参加可能です。

■会期 : 2010年8月4日(水)-7日(土)

■会場 : GALLERY OBJECTIVE CORRELATIVE 地図>>

■開場時間 : 13:00-19:00 ※8/7(土)のみ17:00まで
■食事会 : 8月6日(金) 18:00-

■作家 : 篠崎英介、下田伊吹、瀬川辰馬、田中丸善一、中野洋彰、早崎一修
■入場無料

■主催 : 近畿大学国際人文科学研究所 四谷アート・ステュディウム

■企画 : 建築農業工作ゼミ

2010年7月27日火曜日

展示計画:進歩状況2

なすとトマトを試しに追加してみました。
それぞれの配置、構造関係、機能等を模索中です。

動物が使用する巣のようなもの、あるいは実際に使用できる建築部材という方向で思案中です。いずれにしろ、模型ではなく1:1。


アングル1























アングル2























矯正中のトウモロコシ。










2010年7月25日日曜日

展示計画:進歩状況


川原さんの勧めで屋上の野菜を使わせて頂けることになりましたて、現在、屋上で制作を進めています。多くの野菜が枯れていたため、枯れている部分をトリムし使える部分だけを残し、使用しています。

写真は、五本のトウモロコシにゴーヤを巻き付けたものです。今後は、これにスイカのツルを巻き付け、床、アクセス等の部材を取り付けます。さらに、現在使用しているプランターや肥料用のビニール袋を外し、安定するマチ付きの透明ビニール袋(土や根の部分が見えるよう)にそれぞれ変える予定でいます。

構造、空間の関係性等はまだまだ手探りの状態です。



























2010年7月18日日曜日

展示計画:パーマカルチャー塔


パーマカルチャーを学ぶ、研究するための施設の模型

キュウリとトウモロコシの構造の間にできる空間を施設のために利用する。
逆に、施設のために必要な床面積、設備等からその空間をデザインする。

〈展示会に向けて〉
キュウリとトウモロコシの構造的、生態的な特徴の理解を深めデザインに利用する。
キュウリとトウモロコシだけではまかなえない建築部材(床、アクセス、その他)を挿入する。
コンセプトが伝わる簡単ないくつかのヴァリエーションを作成する。

展示物:模型、5〜10枚程度のA3ドローイング(ヴァリエーション)

参考イメージ http://kazunobuhayasaki.blogspot.com/






2010年7月10日土曜日

展示計画+α:納豆

Plan(計画)

前期展示テーマ:自動化

下記①、②のどちらかの装置を製作して展示する

①以前ペットボトルのお湯を用いて行った納豆作りを自動化する装置(発酵器)
 展示内容:発酵実演、発酵過程がわかるデータの展示

②納豆菌をシャーレで培養した際に生成されるコロニーを自動で観察し記録する装置
 展示内容:納豆菌コロニーの生成過程がわかるような画像プログラムの展示

<展示に必要なもの>
 装置+ノートPC+(②の場合+プロジェクタ)

当初は①を考えていたが、発酵過程で際立って変化するデータとして
色くらいしか取得できていない為、展示としては②の方が面白いかも。

<進捗状況>
 ・温度制御プログラム作成(LEDをヒータと見立てたもの)
 ・ソリットリレーキット組み立て(AC電源制御用)
 ・匂いセンサ(TGS2450)を発酵器に組み込めないか試行中
 (今のところ、多少は反応するものの発酵過程ではあまり数値が変化しない)

 これから
 ・ヒータ加熱制御(フィルムヒータ or 熱帯魚用小型ヒータ)
 ・モニタリング部作成(各種データ表示)
 ・発酵装置の断熱材探し、加工
 ・匂いセンサの校正

(②は未着手)

<前期展示後>
 ・発酵条件(温湿度、発酵時間、発酵対象、腐敗具合、振動など)を変えて実験し、納豆菌の生態を探る
 ・↑の実験で面白いデータが得られたら、それを利用した新たな装置、インスタレーションを考える
 ・後期のテーマと合わない場合は、別プロジェクトとし、専用のブログにアップする




 


※後でコメント追加


Plants(作物)
 


種から育てた大豆(枝豆)、稲がこんなに大きくなりました。

2010年7月6日火曜日

豆腐ブログ

豆腐ブログ始めました。
大豆から豆腐をつくる装置(自動)をつくる為のブログです。
装置に必要な電子工作、豆腐の知識、その他豆腐に関する情報を記載していきます。

tofu.lab
今後、豆腐装置に関することはtofu.labにアップしていきます。
よろしくお願いします。

2010年6月28日月曜日

展示計画:豆腐

1.全体の計画
豆腐を自動的に作る装置をつくる。
大豆から豆腐まで。

2.これまでの計画からの変更点
豆腐をつくるキット(クッキングトイ)をつくる。→ 豆腐をつくる過程を見せる装置をつくる。

3.計画変更に伴う具体的変更
出来上がる豆腐の大きさはチロルチョコ大にする。
*豆腐ができたことが認識できる最低限の大きさ。
*サイズを小さくする事で、装置を簡潔なものにできる。

4.展示に合わせたスケジュールの変更

*豆腐のつくりかた(簡易的)
 1大豆を水に漬ける
 2大豆をつぶす
 3つぶした大豆を煮る
 4個体と液体に分かれた大豆を分ける(おからと豆乳)
 5適温(70℃ぐらい)でにがりをまぜる
 6出来上がり

上記の行程でひとつずつ個別の装置をつくり
最後にひとつの装置としてまとめる。

行程の後ろからつくる。
*常に豆腐が作られる状態にして、漸進的にプロジェクトが進められるようにする。
*豆乳から豆腐→つぶした大豆から豆腐→水につけた大豆から豆腐→.......のように少しずつ、大豆から豆腐に近づけていく。

5.展示計画
豆腐をつくる過程を見せる装置を展示。
最低限の目標:豆乳から豆腐
(展示が終わっても大豆から豆乳が達成されるまで続ける。完成時の発表形式は自分で考える)

6.TO DO リスト
電熱器をつくる。
電熱器の温度管理。
チロルチョコ大の豆腐がつくられる型を探す。
装置の構造体となる素材を探す。
*耐熱や断熱が必要になるはず。
プロジェクト用のブログ作成(近日中に公開)
*装置制作に必要な電子工作や豆腐に関する情報、リンクを記載予定。

[進捗:展示計画] 一週間いきのびれる畑

[進捗]

定点観測は継続して動かしています
しかし、カメラの故障で上下のピクセルが微妙に入れ替わっています、、

http://altbalance.com/outliving/


野菜の方は、胡瓜を二本、茄子をひとつ、トマトを三つ、空芯菜が10束ほど収穫でき、それぞれおいしく頂きました。
ただ、全体的に葉がしおれている印象があり、いまいち元気がありません。

発表にあわせ、7月末に自足一週間生活を行ないます。そろそろ保存食づくりをしていこうと思います。

[展示計画]

- 定点観測を自動スクロールで見せるプログラムを作成し、壁面プロジェクション。

- 一週間生活を通しての写真と文章を簡易製本。マニュアル/パンフレット化。

2010年6月27日日曜日

Arduino:7セグ+照度センサNJL7502L

今回は照度センサ(光センサ)から得られる明るさの度合いを7セグLED(数字を表示するLED)を用いて表示します。
まずは、7セグLEDの表示実験から始めます。7セグLEDは数字を表現する7個のLED(右下ドットを含めれば8個)が内蔵された部品です。今回用いる7セグLEDはアノードコモン(プラス端子共有)タイプです。表示させるには、数字の形に対応した複数のLEDを点灯させます。詳しくは「Arduino 7セグLEDの点灯」を参照してください。

7セグ点灯実験:
配線は以下の通りになります。Arduinoボードから供給される電圧は5Vなので(高過ぎるので)、内蔵されているそれぞれのLEDに対して220Ωの抵抗を取り付けてあります。Arduinoボードの0番ピンと1番ピンはプログラムのアップロードやシリアル通信に用いるので、2番ピンから8番ピンを使うことにします。


とりあえず、点灯実験として「1」〜「3」の数字を1秒間隔で表示してみます。注意しなければいけないことは、各セグメントのプラス端子はArduinoボードの5V端子と接続されているので、各セグメントのマイナス側端子を制御することになります。それぞれのセグメントを点灯させる場合、
digitalWrite(ピン番号,LOW);
にします。
delay()は、1/1000秒単位の継続時間です。括弧内の値は1000なので1秒ということになります。
初期設定であるvoid setup(){...}内にはpinMode()で使用するArduinoボード上のピンをデジタル出力に設定しておきます。あとは、各数字に応じたセグメントごとのLEDのマイナス端子側をdigitalWrite()を用いて、LOWにすることで点灯、HIGHにすることで消灯します。
Arduinoのプログラムは以下のようになります。

void setup(){
//2~8番ピンをデジタル出力用に設定
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
}

void loop(){
//one
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
delay(1000);

//two
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
delay(1000);

//three
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
delay(1000);
}


7セグ+照度センサ:
次に照度センサ(光センサ:NJL7502L)をこの回路に追加して、その照度にあわせて7セグ表示してみます。光センサ:NJL7502Lには、1MΩの抵抗を接続して分圧させます(分圧についてはこちらを参照)。分圧した端子をArduinoボード右下のANALOG INの端子である0番ピンに接続してanalogRead()のコマンドを用いて、その値を読み込みます。analogRead()は括弧内に接続したANALOG IN端子のピン番号を入れておきます。1MΩの抵抗で分圧させると、室内ではおよそ900程度の値を読み取ることができました。


Arduinoのプログラム上では、光センサ:NJL7502Lから読み取られる値をif()を用いて100ずつの間隔で区切って、それに応じて7セグの数字表示を行います(10段階:例えば値が450であれば7セグ上で4)。
初期設定であるvoid setup(){...}内では、各ピンをデジタル出力に設定しますが、今回はfor()を用いて繰り返し処理で2~8番ピンを一気にOUTPUTに設定しています。
光センサから読み取るためには、アナログ入力としてanalogRead()のコマンドを使いますが、初期設定でピンの入出力の設定をする必要はありません。
それから、void loop(){...}内では、zero()、one()などと任意のファンクション名を使った方法を用いています。それぞれの内訳はvoid loop(){...}以下に書いてあるvoid zero(){...}のように、それぞれの数字に対応したdigitalWrite()コマンドが含まれています。こうすることで、void loop(){...}内では、任意に設定したファンクション名であるzero()やone()などを必要に応じて呼び出して使うことができます。

void setup(){
//for()を使って繰り返し処理:2~8番ピンをデジタル出力用に設定
for(int i=2;i<=8;i++){
pinMode(i,OUTPUT);
}
}

void loop(){
int val=analogRead(0); //ANALOG INの0番ピンに接続した光センサの値を読み込む
if(val<100){ //読み込み値が100未満なら
zero();
}else if(val<200){ //読み込み値が200未満なら
one();
}else if(val<300){ //読み込み値が300未満なら
two();
}else if(val<400){ //読み込み値が400未満なら
three();
}else if(val<500){ //読み込み値が500未満なら
four();
}else if(val<600){ //読み込み値が600未満なら
five();
}else if(val<700){ //読み込み値が700未満なら
six();
}else if(val<800){ //読み込み値が800未満なら
seven();
}else if(val<900){ //読み込み値が900未満なら
eight();
}else{ //読み込み値が上記以外なら
nine();
}
delay(100);
}

//任意のファンクション名をつけて数字ごとに分けてプログラムをしておく
void zero(){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
void one(){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
}

void two(){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}

void three(){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}

void four(){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}

void five(){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}

void six(){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}

void seven(){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}

void eight(){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}

void nine(){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}


センサのモニタリング(シリアルモニター):

尚、光センサの照度をモニタリングするには、以下のようなプログラムを一旦Arduinoボードにアップロードし(配線は上画像のまま)、画面内の右側のボタン(Serial Monitor)を押してください。

void setup(){
Serial.begin(9600);
}

void loop(){
int val=analogRead(0);
Serial.printLn(val);
delay(500);
}




Serial Monitorボタンを押すと以下のような別ウィンドウが現れて、センサから読み込んだ値を次々と出力していきます。
analogRead()の場合、0~1023(1024段階)の値を返します。

2010年6月20日日曜日

進捗状況


植物を育て始めました




右の三つはそれぞれ独立したもので、ほかは三つずつのユニットになっています




植えられている植物は、枝豆、とうもろこし、クレソンの三つです

左から

とうもろこし、とうもろこし、枝豆

とうもろこし、枝豆、クレソン

とうもろこし、枝豆、クレソンの順番を変えたもの

独立した、とうもろこし、枝豆、クレソン

の12個です




水生植物のクレソンは水の吸い上げが早いです










今後は水のあげ方を考えていきます


2010年6月13日日曜日

工作ゼミ:6/26(土) Arduino

次回6/26(土)の工作ゼミでは、Arduino(電子工作)を行います。

授業に必要なもの:
・各自のパソコン
・Arduinoソフト(最新版0018)のダウンロード/インストール(インストール方法はこちら)。
・Arduino基板(Duemilanoveという種類をおすすめします。購入先リストはこちら。)
・USBケーブル(パソコンとArduino基板を接続)
ブレッドボード(プロトタイプ回路を制作するための電子部品差し込み用基板)
ジャンプワイヤ(ブレッドボード上での回路用配線)

建築発明工作ゼミ2008」のサイトにもArduinoに関する情報がのっていますので参考にしてください。

秋葉原ショップリストマップ:
以下は秋葉原の電子工作部品などのショップのマップです。
ヤマギワリビナと石丸電気本店付近にある「秋月電子」や「千石電商」で必要な部品や道具類はそろうと思います。
緑マーク:Arduino販売店。
青マーク:電子部品など。
黄マーク:Wifi/FONスポット。
赤マーク:飲食など。

より大きな地図で 秋葉原工作マップ を表示

Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 823

Processing:アナログ時計のプログラム

前回はhour()、minute()、second()を用いてデジタル時計のプログラムをつくりました。同様にそれらの時間の数値を利用して、今回は図形描画によるアナログ時計のプログラムをします。
時計の構成として、時計の外形をellipse()で、時針、分針、秒針をline()を用いてstrokeWeight()で太さを変えて表現することにします。
各針の回転は、rotate()を用います。括弧内には角度を入れて図形を回転させますが、角度についてはラジアンを用います。ラジアンは0~360度までを0~TWO_PIで表現します(TWO_PIは円周率のπ*2です)。
時、分、秒の角度の変数float h,m,s;を用意しておき、図形を描画する前に角度を計算しておくことにします。

秒針の角度計算:
秒については0~59の数値が読み取られるので、
s=second()/60.0*TWO_PI;
で求められます。一秒ごとにカクカクと動く秒針になります。気をつけなければいけないところは、second()で得られる整数値(0~59)を小数の60.0(あるいは60f)で割っておくところです。もし整数の60で割ってしまうと、second()/60=0になってしまい(小数は切り捨てられる)、小数での計算ができなくなってしまいます。

分針の角度計算:
分針は連続した動きのため秒数も角度に反映されるので、そのままminute()で得られる値を角度に変換するだけでは充分ではありません。よって、
m=minute()/60.0*TWO_PI+s/60;
になります。minute()/60.0*TWO_PIによって分の角度を得てから、その角度に+s/60することで秒数の角度も加えてあります。

時針の角度計算:
時針も分針同様連続した動きのため分も角度に反映されます。hour()からは24時間表示の数値(0~23)が得られるので、一旦12時間表示に変換する必要があります。そのために、割り算の余りを求める「%」をつかって、hour()%12とします。そうすれば12時のときは0時として扱われます。よって、
h=(hour()%12)/12.0*TWO_PI+m/12;
になります。

図形の描画:
これで三つの角度が求められたので、あとは図形を描くだけです。
図形を回転させるためにrotate()を使いますが、一旦回転の中心を原点(画面の左上)にして、それぞれの針(線)を00時00分00秒として描きます。translate()を図形描画の前に書くことで、それ以降の図形は画面中心に移動します。translate()は括弧内に入れた座標の分だけそれ以降の図形を全体的にずらしてくれます。rotate()は、それ以降の図形すべてを回転させるので、pushMatrix()とpopMatrix()を用いて、それぞれ別々に回転するようにします。それぞれの針の角度設定と描画のプログラム部分をpushMatrix()とpopMatrix()ではさむことで可能になります。

float s;//秒針の角度の変数
float m;//分針の角度の変数
float h;//時針の角度の変数

void setup(){
size(400,400);//表示画面サイズ
smooth(); //滑らかな描画(アンチエイリアス)
noFill(); //図形の塗り面なし
stroke(255); //外形線の色を白に設定
}

void draw(){
background(0); //背景色を黒に設定
s=second()/60.0*TWO_PI; //秒針の角度計算
m=minute()/60.0*TWO_PI+s/60; //分針の角度計算
h=(hour()%12)/12.0*TWO_PI+m/12; //時針の角度計算

translate(200,200); //画面の中心へずらす。
strokeWeight(1); //線の太さを1ピクセルにする
ellipse(0,0,380,380);//時計の外形線描画

pushMatrix();
rotate(s); //秒針の回転角度
line(0,0,0,-190); //秒針の描画
popMatrix();

pushMatrix();
rotate(m); //分針の回転角度
strokeWeight(3); //分針の太さを3ピクセルに設定
line(0,0,0,-180); //分針の描画
popMatrix();

pushMatrix();
rotate(h); //時針の回転角度
strokeWeight(5); //時針の太さを5ピクセルに設定
line(0,0,0,-130); //時針の描画
popMatrix();
}


以下がプログラム実行例です。



関連:
Processing:デジタル時計のプログラム」文字列の表示例。

Getting Started With Processing
Casey Reas Ben Fry
O'Reilly Media
売り上げランキング: 20010

Processing:デジタル時計のプログラム

Processingを使った時間を表示するプログラムです。
まずは、文字表示によるデジタル時計についてです。
Processingには以下のようなコンピュータ内の時間の数値を読み取るコマンドがあります。

year(); //年(2010など)
month(); //月(1~12)
day(); //日(1~31)
hour(); //時(0~23)
minute(); //分(0~59)
second(); //秒(0~59)
millis(); //プログラムが開始してから0.001秒(1/1000秒)単位でカウントする

今回のプログラムではhour()、minute()、second()の三つをつかって時計の時間表示を行いたいと思います。
文字を使用するには、PFontを用いてcreateFont()やloadFont()でフォントを用意する必要があります。そしてtext()によって文字表示します。
text("表示文字",x,y)というように、括弧内に表示される文字や数値を入れ、その後にXY座標を入れて表示位置を決定します。
時間と分と秒の間に「:」マークを挿入して、「12:10:35」というように表示することにします。文字は「"」マークで括ってtext()内に入れ、連続させる場合は「+」でつなぎます。
ちなみに、計算可能な数値(intやfloat)の場合は、
123+456=579
になりますが、
文字列の数字(String)の場合は、
"123"+"456"="123456"
になります。あるいは、数値と文字列の組み合わせも、
123+"456"="123456"
になります。"数値"は、そのままでは計算できない文字列の数字になってしまいます。文字列の数字を再度計算可能な数値に変換するには、整数値の場合ならint()で括ります。
int("123456")=123456

よって、text()の括弧内に入れる文字列は、
text(hour()+":"+minute()+":"+second(),10,200);
となりますが、このままだとやや不自然な表示になります。
例えば、12時09分05秒の場合「12:9:5」というように一桁の数値は一桁として表示されるので、nf()というコマンドを使って一桁の数値も二桁表示されるように(09や05のように)変換する必要があります。
nf(数値,桁数)というように値を入れることで、その数値に対する出力桁数を指定して文字列に変換してくれます。
つまり、それぞれの値をnf()で括って変換し、以下のようになります。
text(nf(hour(),2)+":"+nf(minute(),2)+":"+nf(second(),2),10,200);

読み取った各数値を文字表示するために、今回はcreateFont()を使って以下のようになります。

PFont font; //PFontインスタンスを用意(フォントの準備)

void setup(){ //初期設定
size(400,400); //画面サイズ設定
font=createFont("Monaco",30); //フォントMonacoをサイズ30ポイントに設定
textFont(font); //使用フォントのセット
}

void draw(){ //描画処理
background(0); //背景を黒に設定
text(nf(hour(),2)+":"+nf(minute(),2)+":"+nf(second(),2),10,200); //時間の表示
}

文字を使う場合は、最初に「PFont font」を用意し、void setup(){...}内で「font=createFont()」と「textFont()」でフォントのセッティングを行い、void draw(){...}内で「text()」によって表示するという手順であると覚えておくといいでしょう。またcreateFont()のかわりにloadFont()を使う方法もあります。その場合はProcessingのメニューバー「Tools>Create Font...」を選択し、表示されたウィンドウの中からフォントやそのサイズなどを選んで使用します(説明はこちら)。

以下のように表示されます。



関連:
Processing:アナログ時計のプログラム」時間に合わせた図形の回転。

Getting Started With Processing
Casey Reas Ben Fry
O'Reilly Media
売り上げランキング: 20010

2010年6月12日土曜日

Processing まとめ1

先日(6/12)の授業:Processingのプログラミング演習のまとめ。
Processingの基本的な使い方については「建築発明工作ゼミ2008」にもまとめてありますので参考にしてください。
Processing のダウンロードとインストール」--Processingのセッティング。
Processing の基本操作 その1」--プログラムの仕方。
Processing の基本操作 その2」--図形の描画。
Processing の基本操作 その3」--図形を動かす。
Processing  マウス入力1」--マウスボタン/クリック。
Processing  マウス入力2」--マウスに合わせて図形を動かす/図形をドラッグする。
Processing  マウス入力3」--図形の上にマウスが重なると色が変わる/ロールオーバー。
Processing  マウス入力4」--トグルボタン/フラグ/3回押すとオンになるスイッチ。
Processing  文字と画像」--文字(フォント)の表示方法、画像の取り込みと表示方法。

まずは図形の描画から開始しますが、基本的には数値入力で図形のサイズや位置を決定して描画させます。
座標の原点(0,0)は表示画面の左上で、X座標は右へ行くほど値が大きくなり、Y座標は下へ行くほど値が大きくなります。
尚、プログラムは原則的に上の行から下の行へと処理されます。

(1)基本的な図形描画

size(400,300); //表示画面サイズを指定する。幅400、高さ300ピクセルの画面。
rect(10,20,30,40); //矩形描画(長方形や正方形)。座標(10,20)に幅30、高さ40の長方形を描画。
ellipse(x,y,w,h); //楕円、円描画。座標(10,20)に幅30、高さ40の楕円を描画。
point(x,y); //点描画。座標(x,y)に点を打つ。
line(x1,y1,x2,y2); //線描画。座標(x1,y1)から(x2,y2)へ線を引く


(2)線や塗面の変更

fill(r,g,b); //図形の塗面の色指定。
noFill(); //塗面なし
stroke(r,g,b); //図形の外形線の色指定。
noStroke(); //外形線なし。
strokeWeight(t); //外形線の太さ指定。


(3)色について
fill()やstroke()の括弧内に入れる色の値は0~255の256段階で、rgb(赤緑青)の三つの値で指定。
fill(255,255,0);//この場合黄色。
括弧内に一つの値を入れた場合は無彩色(黒〜グレー〜白)になる。
fill(0); //黒
fill(255);//白

(4)繰返し処理:for()
for()を使うことで、複数の図形を描画させることができます。

for(int i=1; i<=10; i=i+1){
rect(i*10,10,5,5);
}

上記は5ピクセルの正方形を10個描きます(10回分の繰返し処理)。
for()の括弧内の「int i=1; i<=10; i=i+1」は、1から始まって10まで+1ずつ繰り返し処理するという意味です。
for()の括弧内の「i<=10」を「i<=15」にすれば15回繰返し処理します。
「i=i+1」は、繰返し処理させるときに1から10までを1ずつ増加させて処理するということです。
「i=i+2」にすれば、1から10までの範囲を2,4,6,8,10というように2ずつ増加させて処理します(合計5回繰り返し処理)。
「i=i+3」であれば、1から10までの範囲を3,6,9というように3ずつ増加させて処理します(合計3回繰り返し処理)。
また「i=i+1」を「i+=1」や「i++」と書くこともできます。「i=i+2」は「i+=2」と書くこともできます。
「int」は整数を使うという指定です。ちなみに小数を使う場合は「float」になります。このように、扱う値が整数値か小数値かの違いも指定しなければいけません。説明は以下。

(5)計算式
足し算は「+」:3+4=7
引き算は「-」:3-4=-1
かけ算は「*」:3*4=12
割り算は「/」:12/3=4
割り算の余りは「%」:10%3=1、12%3=0

(6)変数

int a=50;
rect(10,20,a,a);
ellipse(30,40,a,a);

上記のようなプログラムを書くと、任意に用意したaという変数を50に設定しておき、その後はaが50という値で矩形と円のサイズに代入されます。はじめの「a=50」を「a=100」に変更すれば、矩形と円のサイズも一気に変えることができます。
その他、リアルタイムに変化する値(計測中の温度、マウスの位置など)をプログラムに取り入れる場合に変数を使うと便利です。

(7)整数と小数
変数を用いるときには、プログラム上では整数値を扱うのか、小数値を扱うのかを指定しなければいけません。整数の場合は「int」、小数の場合は「float」を用います。
int a;
a=10;
とすれば、aに入る数値は整数のみに限定されます。以下のように整数の変数に小数を入れるとエラーになります。
int a;
a=10.5;//エラーがでるので不可。

例えば以下のように
int a=10;
に設定しておくと、
a/3=3
になります。
float a=10;
にすれば、
a/3=3.3333333
になります。
あるいは、整数の計算の場合は小数が切り捨てられるので、
10/3=3
になりますが、10か3を10.0や3.0にすると小数の計算になります。
10.0/3=3.3333333
10/3.0=3.3333333
また、10や3の後ろに10fや3fというようにfをつけると小数の計算になります。
10f/3=3.3333333
10/3f=3.3333333

(8)コメント
「//」ダブルスラッシュをプログラム中に付け足すと、同じ行の「//」以降の文字はグレー表示され、ちょっとしたメモや、一次的にその行をプラグラム上無効にしたい場合につかいます。

rect(10,20,30,40);//長方形描画
//ellipse(10,20,30,40);

上記の「//長方形描画」の部分や「//ellipse(10,20,30,40);」はプログラム上無効化されます。

(9)動画/アニメーション
描画した図形を動かすには、

void setup(){
//ここに初期設定を書く
}
void draw(){
//ここに図形描画などの処理を書く
}

上記のようなフォーマットを用意し、表示画面サイズなどの初期設定をvoid setup(){...}内に書き、background()やrect()などの描画処理をvoid draw(){...}内に書きます。

int x=0; //X座標用の変数xを用意し、とりあえず0を代入しておく。
void setup(){
size(400,300);//表示画面を400x300ピクセルに設定
}
void draw(){
background(0);//背景を黒に設定
rect(x,100,30,30);//30ピクセル角の正方形を描画
x=x+1; //正方形のX座標用の変数xを1ずつ増加
}

上記は正方形が右に1ピクセルずつ移動していくプログラムです。

その他サンプルについては以下を参照してみてください。
Processing の基本操作 その3」--図形を動かす。

[進捗発表] 一週間いきのびれる畑


野菜たちの発育は順調です。

茄子と胡瓜は、初物が収穫できました。

























定点観測プログラムをアップデートしました。


1.野菜のタイムラインの横に、世の中のトップニュースが表示される

2.野菜のタイムラインの横に、私が投稿した写真が表示される

ようになりました。

以下にキャプチャーを張っておきます。






















2010年5月30日日曜日

工作ゼミ:6/12(土)

次回6/12(土)から「工作ゼミ」を開始します。
「工作ゼミ」では、Processingを用いたプログラミング、Arduinoを用いた電子工作を行います。
進行中の各自のプロジェクトにおいて、必要に応じてパソコン上のProcessingプログラムとArduinoに接続したセンサやアクチュエータを連動させたり、ワイヤレス通信で遠隔操作したり、ネットワーク通信でインターネット越しに操作を可能にします。

まずはProcessingをつかったプログラミングから開始したいと思います。

6/12(土)必要なもの:
・各自のパソコン(Webカメラ内蔵もしくは外付けがあると望ましい)。
・Processingの最新版(v1.1)をダウンロード/インストール。

尚、Processingのインストール方法については、こちらを参照して下さい。
その他、ProcessingやArduinoに関しては「建築発明工作ゼミ2008」を参照してみてください。
あるいは、去年の記事の概要ヒントを読んでみて下さい。

農業(2010/5/29)

今回の授業(農業)では、剪定の演習、課題の講評、現在の農業事情についてのディスカッションが行われました。

屋上に植えたナス、トマト、キュウリで実際に作業しながら、剪定の仕方や追肥の仕方についての講義が行われました。




















講評の様子



データブック 食料(岩波ブックレット)を参考に、今日の食料事情から始まり、政治、経済など幅広く議論が行われました。

*