BioMetalツールキット演習5

はじめに

ここでは、CdSとECMを利用したインタラクティブシステムを紹介する。

手をかざしたり息を吹きかけることでアクチュエータが反応して動くだけで生物的な表現に応用することができる。

Back To Top

ブレッドボード回路実装

ブレッドボード実装図

 

回路図

Back To Top

Arduinoスケッチのコンパルと書き込み

※Arduinoの使い方については「Arduino基礎」参照。

※BioMetalシールドの回路構成については「BioMetalツールキット演習1」参照。

 

①Arduinoスケッチの準備

空のスケッチを作成して、以下のコードをコピー&ペースト後、スケッチを保存する。

/*
Biometalシールドサンプルスケッチ CdS2_ECM
2018.8 中安
 */

//ピン割り当て設定
//#define pinCdS  A5  //Cds
#define pinR    11  //フルカラーLED-R
#define pinG    10  //フルカラーLED-G
#define pinB    9   //フルカラーLED-B
#define pinPWM  3   //マスターPWM
#define pinSMA1 0   //SMA1用FET切り替え
#define pinSMA2 1   //SMA2用FET切り替え
#define pinSMA3 2   //SMA3用FET切り替え

//タクトスイッチ状態取得用変数宣言
int bStateK0 = 0; 
int bStateK1 = 0; 
int bStateK2 = 0;

int fadeValue = 0;
int speed_para = 5; //フェードの増分 小さいほど動きが遅い
int sensorValue = 0; //Cds用
int sensorValue2 = 0; //ECM用
int oneBang = 1;
int counter = 0;
//int threshold =500;

void setup() {
  //ピンモード 出力設定
  pinMode(pinPWM, OUTPUT);
  pinMode(pinSMA1, OUTPUT);
  pinMode(pinSMA2, OUTPUT);
  pinMode(pinSMA3, OUTPUT);
}

void loop() {

  sensorValue = analogRead(A5); //CdS 10bit入力 0〜1023
  sensorValue2 = analogRead(A4); //ECM 10bit入力 0〜1023

  if(sensorValue<940) { //この値はProcessingで視覚化してから設定(Arduinoは10bitだがProcessingでは8bit表示なので、4倍して計算)
    oneBang = 0;
  }

  if(sensorValue2<80) {
   oneBang = 0;
  }

  if(oneBang == 0) {//0〜1023で数値が大きいほどセンサー感度が上がる(明るさの感度が下がる)
    
    if (counter == 0) {
      digitalWrite(pinSMA1, HIGH);
      digitalWrite(pinSMA2, LOW);
      digitalWrite(pinSMA3, LOW);
    }
  
    if (counter == 1) {
      digitalWrite(pinSMA1, LOW);
      digitalWrite(pinSMA2, HIGH);
      digitalWrite(pinSMA3, LOW);
    }
    
    if (counter == 2) {
      digitalWrite(pinSMA1, LOW);
      digitalWrite(pinSMA2, LOW);
      digitalWrite(pinSMA3, HIGH);
    }
    
    for (fadeValue = 0; fadeValue < 256; fadeValue += speed_para) {
      analogWrite(pinPWM, fadeValue);
      if (counter == 0) analogWrite(pinR, fadeValue);
      if (counter == 1) analogWrite(pinG, fadeValue);
      if (counter == 2) analogWrite(pinB, fadeValue);
      delay(15);
    }
    delay(100);
    
    for (fadeValue = 255; fadeValue >= 0; fadeValue -= speed_para) {
      analogWrite(pinPWM, fadeValue);
      if (counter == 0) analogWrite(pinR, fadeValue);
      if (counter == 1) analogWrite(pinG, fadeValue);
      if (counter == 2) analogWrite(pinB, fadeValue);
      delay(15);
    }

    counter++;
    if(counter>2) counter =0;
    oneBang = 1;
  }
}

 

② ボードとポートの選択

ツール>ボード>Arduino Leonardo
ツール> シリアルポート>/dev/cu.usbmodem****(Arduino Leonardo)

 

③コンパイル

検証(コンパイル)ボタンを押す。

 

④書き込み

書き込みボタンを押す。

Back To Top

アクチュエータの準備

先端LED5mm3方位アクチュエータをBioMetalシールドに取り付ける。向きに注意。

Back To Top

動作実験

CdS実験

CdS上を手をかざすとアクチュエータが曲がる。動く方位と先端の色は順番に変更される。感度は環境によって変わるので、照明の照度数値を取得した上で閾値を設定する必要がある。(Arduino+CdS参照

 

ECM実験

ECMに息を吹きかけることでアクチュエータが曲がる。動く方位と先端の色は順番に変更される。

Back To Top