19
多摩美術大学 衛星芸術PBL 2011年 20111011第5回 : 衛星家具をつくる2 1

衛星芸術Pbl 2011 10_11

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 衛星芸術Pbl 2011 10_11

多摩美術大学衛星芸術PBL 2011年2011年10月11日

第5回 : 衛星家具をつくる2

1

Page 2: 衛星芸術Pbl 2011 10_11

本日やること

 前回のプログラムの解説 

 圧電スピーカーを使ったサウンドデバイスの制作

  ピッチ

  リズム

2

Page 3: 衛星芸術Pbl 2011 10_11

前回のおさらい前回のプログラム ARTSAT_Pachube_Example.pde

3

import processing.serial.*;import cc.arduino.*;import eeml.*;

DataIn dataIn;Arduino arduino;

int feedId = 12467; //ARTSAAT_PRISM feed IDint feedNum = 1; //Now Solar Cell VoltageString feedURL = "http://www.pachube.com/api/feeds/";String apiKey = "API KEY";float dataVlue;

次のページにつづく

Page 4: 衛星芸術Pbl 2011 10_11

void setup(){ background(255); size(200, 200); println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[0], 115200); dataIn = new DataIn(this,feedURL + feedId + ".xml", apiKey ,10000); dataVlue = 0;}

void draw(){ arduino.analogWrite(3, int( dataVlue * ( 5 / 12.5 ) * ( 255 / 5 ) ) ); }

void onReceiveEEML(DataIn d){ if (dataIn == d) { dataVlue = d.getValue( feedNum ); println ("feed 12467 Now Solar Cell Voltage : " + dataVlue + " Volts"); }}

4

Page 5: 衛星芸術Pbl 2011 10_11

Pachubeからのフィード取得前回のプログラム ARTSAT_Pachube_Example.pde

5

int feedId = 12467;

int feedNum = 1;

PachubeのARTSAT PRISM SENSORSフィードの固有のID

フィードの中のセンサーのID

String apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";

apiを使用する時に必要な認証キー

Page 6: 衛星芸術Pbl 2011 10_11

Pachubeからのフィード取得2

フィードを取得している部分

dataVlue = d.getValue( feedNum );

6

Page 7: 衛星芸術Pbl 2011 10_11

フィードIDとセンサーフィードIDとセンサーの対応

0:updated1:V-SA 太陽電池電圧2:I-O5 ミッション系電流3:I-XL AFSK送信系電流4:X軸角速度 ジャイロ(X軸角速度)5:Y軸角速度 ジャイロ(Y軸角速度)6:Z軸角速度 ジャイロ(Z軸角速度)7:太陽電池電流 (+Xパネル表)8:太陽電池電流 (-Xパネル表)9:太陽電池電流 (+Yパネル表)

10:太陽電池電流 (-Yパネル表)11:太陽電池電流 (+Xパネル裏)12:太陽電池電流 (-Xパネル裏)13:太陽電池電流 (+Yパネル裏)14:太陽電池電流 (-Yパネル裏)15:温度(+X) パネル温度(+X)16:温度(+Y) パネル温度(+Y)17:温度(-X) パネル温度(-X)18:温度(-Y) パネル温度(-Y)

7

Page 8: 衛星芸術Pbl 2011 10_11

Arduinoで電圧制御 

LEDの明るさは電圧で制御する

ArduinoがUSBからもらっている電圧 -> 5V

8

Page 9: 衛星芸術Pbl 2011 10_11

PWM パルス幅変調

arduino.analogWrite(3, int( dataVlue * ( 5 / 12.5 ) * ( 255 / 5 ) ) );

arduino.analogWrite()

9

幅を変調

Page 10: 衛星芸術Pbl 2011 10_11

map()

map(dataVlue, 0, 12.5, 0, 255);

map()

最小値0~最大値12.5の値を、0~255にスケーリング

スケーリングをする

10

Page 11: 衛星芸術Pbl 2011 10_11

圧電スピーカーを使ったサウンドデバイス

本日のArduinoプログラムダウンロード:ARTSAT_Pcuhbe_Example_Sound_Arduino.pde

11

Page 12: 衛星芸術Pbl 2011 10_11

圧電スピーカー

圧電スピーカー

圧電素子(ピエゾ素子)が入っている。素子に圧力が加わると電圧が発生する。

12

Page 13: 衛星芸術Pbl 2011 10_11

ブレッドボードで配線

13

Page 14: 衛星芸術Pbl 2011 10_11

本日のProcessingプログラム

import processing.serial.*;import cc.arduino.*;import eeml.*;

DataIn dataIn;Serial arduino;

int feedId = 12467; //ARTSAAT_PRISM feed IDint feedNum = 1; //Now Solar Cell Voltage

String feedURL = "http://www.pachube.com/api/feeds/";String apiKey = "API KEY";

以下からソースコードをダウンロード

次のページにつづく

ARTSAT_Pachube_Sound_Example.pde

14

Page 15: 衛星芸術Pbl 2011 10_11

void setup(){ background(255); size(200, 200); println(Serial.list()); arduino = new Serial(this, Serial.list()[0], 57600); dataIn = new DataIn(this,feedURL + feedId + ".xml", apiKey ,10000); }

void draw(){ float freq; //datavalue to pitch (freqency) freq = 440; //freq = map( dataVlue, 0, 12.5 , 0, 22000 ); playBeep( freq ); //Beep Sound delay(1000); }

void onReceiveEEML(DataIn d){ if (dataIn == d) { dataVlue = d.getValue( feedNum ); println ("feed 12467 Now Solar Cell Voltage : " + dataVlue + " Volts"); }}

void playBeep(float pitch){ arduino.write(str(int(pitch))+"\0"); //send to serial};

15

Page 16: 衛星芸術Pbl 2011 10_11

主な関数

playBeep( 周波数 );

playBeep()

引数は周波数

ビープ音をならす関数 ”ピッ”

delay( milliseconds );

delay()

引数はミリセカンド (1/1000秒)

次の処理までの待ち時間

16

Page 17: 衛星芸術Pbl 2011 10_11

フィードデータを使う

freq = map( dataVlue, 0, 12.5 , 0, 22000 );

int feedNum = 1;

17

id1 -> V-SA 太陽電池電圧

dataValue = d.getValue( feedNum );

onReceiveEEML関数内

draw関数内周波数にスケーリングしたセンサーの値を代入

センサーの値をdataValue変数に代入

Page 18: 衛星芸術Pbl 2011 10_11

フィードデータを使う2

delay( dataValue * 100 );

draw関数内delayに100倍したセンサーの値を代入

ビープ音の間隔にデータを使う

Page 19: 衛星芸術Pbl 2011 10_11

おつかれさまでした。

質問等は森まで

19