19
多摩美術大学 衛星芸術PBL 2011年 20111018第6回 : 衛星家具をつくる3 1

衛星芸術Pbl 2011 10_18

Embed Size (px)

Citation preview

Page 1: 衛星芸術Pbl 2011 10_18

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

第6回 : 衛星家具をつくる3

1

Page 2: 衛星芸術Pbl 2011 10_18

本日やること

 前回の捕捉

  リズム

 サーボモーターを使ったデバイス

  モーターの種類

  サーボモーターてバイスの制作

2

Page 3: 衛星芸術Pbl 2011 10_18

(前回のコード)主な関数

playBeep( 周波数 );

playBeep()

引数は周波数

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

delay( milliseconds );

delay()

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

次の処理までの待ち時間

3

Page 4: 衛星芸術Pbl 2011 10_18

フィードデータを使う

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

int feedNum = 1;

dataValue = d.getValue( feedNum );

onReceiveEEML関数内

draw関数内

4

Page 5: 衛星芸術Pbl 2011 10_18

フィードデータを使って音の間隔に

delay( dataValue * 100 );

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

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

間隔を変えてリズムを作ってみる

5

Page 6: 衛星芸術Pbl 2011 10_18

サーボモーターデバイス

本日パーツリスト

・Arduinoボード ×1・サーボモーター ×1・ジャンパー線 ×3本・ボレッドボード ×1・USBケーブル ×1

6

Page 7: 衛星芸術Pbl 2011 10_18

モーターの種類

DCモーター ACモーター

電流を流すと回転する

7

Page 8: 衛星芸術Pbl 2011 10_18

モーターの種類

ステッピングモーター

極に順番に電流を流して回転させる(ステップ)位置を決めるのに便利

8

Page 9: 衛星芸術Pbl 2011 10_18

モーターの種類

サーボモーター

パルスによって角度を決める決まった角度を出したい時に便利

9

Page 10: 衛星芸術Pbl 2011 10_18

PWMの5Vの山(HIGH)になっている幅で角度を調節する。右端から左端までの角度とメーカーや種類によって違うので確認が必要

モーターの角調節

5V

0V

幅 20m秒が一般的

10

Page 11: 衛星芸術Pbl 2011 10_18

今日の回路

5VGND 信号(Arduino PWMへ)

11

Page 12: 衛星芸術Pbl 2011 10_18

Arduinoのプログラム本日使うArduinoスケッチ ServoFirmata

12

Page 13: 衛星芸術Pbl 2011 10_18

本日のProcessingプログラム

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

DataIn dataIn;Arduino arduino;int servoPin = 10; // Control pin for servo motor

int feedId = 12467; //ARTSAAT_PRISM feed IDint feedNum = 18; //Temperature Sensor of minus Y panel

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

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

次のページにつづく

ARTSAT_Pachube_Example_Servo.pde

13

Page 14: 衛星芸術Pbl 2011 10_18

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

void draw(){ float servoAngle; servoAngle = map( feedNum ,-58.0, 35.5, 0, 180 ); arduino.analogWrite(servoPin, int(servoAngle) ); //send servo angle to Arduino}

void onReceiveEEML(DataIn d){ if (dataIn == d) { dataValue = d.getValue( feedNum ); println ("feed 12467 Now Temperature Sensor of minus Y panel : " + dataValue + " Celsius (°C)"); }}

以上

14

Page 15: 衛星芸術Pbl 2011 10_18

Processingでのサーボ調節

arduino.analogWrite( servoPin, angle );

前回と同様に analogWrite()によってPWM制御

引数1

ArduinoのPWMピン 今回は10

引数2

角度 0 ~ 180

15

Page 16: 衛星芸術Pbl 2011 10_18

map()

map( feedNum ,-58.0, 35.5, 0, 180 )

map()

使うセンサーの値の最小値/最大値の比率を角度にスケーリング 0 ~ 180度

スケーリングをする

16

Page 17: 衛星芸術Pbl 2011 10_18

https://api.pachube.com/v2/feeds/12467

データXMLを見てみる

Pachube apiにリクエストしてXMLを取得

<data id="18"><tag>Temperature Sensor of minus Y panel</tag><current_value at="2011-10-17T06:24:56.063493Z">-31.4</current_value><max_value>35.5</max_value><min_value>-58.0</min_value><unit type="derivedSI" symbol="">Celsius (°C)</unit></data>

時間、単位、最大値/最小値などの情報が手に入る

17

Page 18: 衛星芸術Pbl 2011 10_18

int()

int(servoAngle)

int()

servoAngle がfloat(浮動小数点)数値なのでint型に直してあげる

数値をintに型変換する

18

Page 19: 衛星芸術Pbl 2011 10_18

おつかれさまでした。

質問等は森まで

19