Contenu connexe
Similaire à 衛星芸術Pbl 2011 10_11
Similaire à 衛星芸術Pbl 2011 10_11 (20)
衛星芸術Pbl 2011 10_11
- 3. 前回のおさらい
前回のプログラム ARTSAT_Pachube_Example.pde
import processing.serial.*;
import cc.arduino.*;
import eeml.*;
DataIn dataIn;
Arduino arduino;
int feedId = 12467; //ARTSAAT_PRISM feed ID
int feedNum = 1; //Now Solar Cell Voltage
String feedURL = "http://www.pachube.com/api/feeds/";
String apiKey = "API KEY";
float dataVlue;
次のページにつづく
3
- 4. 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
- 5. Pachubeからのフィード取得
前回のプログラム ARTSAT_Pachube_Example.pde
int feedId = 12467;
PachubeのARTSAT PRISM SENSORSフィードの固有のID
int feedNum = 1;
フィードの中のセンサーのID
String apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
apiを使用する時に必要な認証キー
5
- 7. フィードIDとセンサー
フィードIDとセンサーの対応
0:updated
1:V-SA 太陽電池電圧 10:太陽電池電流 (-Yパネル表)
2:I-O5 ミッション系電流 11:太陽電池電流 (+Xパネル裏)
3:I-XL AFSK送信系電流 12:太陽電池電流 (-Xパネル裏)
4:X軸角速度 ジャイロ(X軸角速度) 13:太陽電池電流 (+Yパネル裏)
5:Y軸角速度 ジャイロ(Y軸角速度) 14:太陽電池電流 (-Yパネル裏)
6:Z軸角速度 ジャイロ(Z軸角速度) 15:温度(+X) パネル温度(+X)
7:太陽電池電流 (+Xパネル表) 16:温度(+Y) パネル温度(+Y)
8:太陽電池電流 (-Xパネル表) 17:温度(-X) パネル温度(-X)
9:太陽電池電流 (+Yパネル表) 18:温度(-Y) パネル温度(-Y)
7
- 14. 本日のProcessingプログラム
以下からソースコードをダウンロード
ARTSAT_Pachube_Sound_Example.pde
import processing.serial.*;
import cc.arduino.*;
import eeml.*;
DataIn dataIn;
Serial arduino;
int feedId = 12467; //ARTSAAT_PRISM feed ID
int feedNum = 1; //Now Solar Cell Voltage
String feedURL = "http://www.pachube.com/api/feeds/";
String apiKey = "API KEY";
次のページにつづく
14
- 15. 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
- 17. フィードデータを使う
int feedNum = 1; id1 -> V-SA 太陽電池電圧
draw関数内
freq = map( dataVlue, 0, 12.5 , 0, 22000 ); 周波数にスケーリングしたセンサーの値を代入
onReceiveEEML関数内
dataValue = d.getValue( feedNum ); センサーの値をdataValue変数に代入
17