BioMetalツールキット演習4

はじめに

タクトスイッチを押した時にSMAが一定時間で曲がり、一定時間でもどるプログラムを紹介する。

BioMetalツールキット演習2と比較してゆっくりとした動作を行うため、生物的表現に適している。

Back To Top

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

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

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

 

①Arduinoスケッチの準備

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

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

//ピン割り当て設定
#define pinK0   A0  //タクトスイッチK0
#define pinK1   A1  //タクトスイッチK1
#define pinK2   A2  //タクトスイッチK2
#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; //フェードの増分 小さいほど動きが遅い

void setup() {
  //ピンモード 出力設定
  pinMode(pinPWM, OUTPUT);
  pinMode(pinSMA1, OUTPUT);
  pinMode(pinSMA2, OUTPUT);
  pinMode(pinSMA3, OUTPUT);
  //ピンモード デジタル入力設定(内部プルアップ無効)
  pinMode(pinK0, INPUT);
  pinMode(pinK1, INPUT);
  pinMode(pinK2, INPUT);
}

void loop() {

  //タクトスイッチの状態を取得
  bStateK0 = digitalRead(pinK0);
  bStateK1 = digitalRead(pinK1);
  bStateK2 = digitalRead(pinK2);

  if (bStateK0 == 1 || bStateK1== 1 || bStateK2 == 1) {

    if (bStateK0) {
      digitalWrite(pinSMA1, HIGH);
      digitalWrite(pinSMA2, LOW);
      digitalWrite(pinSMA3, LOW);
    }

    if (bStateK1) {
      digitalWrite(pinSMA1, LOW);
      digitalWrite(pinSMA2, HIGH);
      digitalWrite(pinSMA3, LOW);
    }
    
    if (bStateK2) {
      digitalWrite(pinSMA1, LOW);
      digitalWrite(pinSMA2, LOW);
      digitalWrite(pinSMA3, HIGH);
    }
    
    for (fadeValue = 0; fadeValue < 256; fadeValue += speed_para) {
      analogWrite(pinPWM, fadeValue);
      if (bStateK0) analogWrite(pinR, fadeValue);
      if (bStateK1) analogWrite(pinG, fadeValue);
      if (bStateK2) analogWrite(pinB, fadeValue);
      delay(15);
    }
    delay(100);
    
    for (fadeValue = 255; fadeValue >= 0; fadeValue -= speed_para) {
      analogWrite(pinPWM, fadeValue);
      if (bStateK0) analogWrite(pinR, fadeValue);
      if (bStateK1) analogWrite(pinG, fadeValue);
      if (bStateK2) analogWrite(pinB, fadeValue);
      delay(15);
    }

  }
  
}

スケッチデータのダウンロード

BioMetalShield_Fade.zip

 

② ボードとポートの選択

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

 

③コンパイル

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

 

④書き込み

書き込みボタンを押す。

Back To Top

アクチュエータの準備

3種のアクチュエータをBioMetalシールドに接続コネクタを介して接続する。極性注意。

 

直径3mm1方位屈曲アクチュエータ

 

直径3mm3方位屈曲アクチュエータ

 

先端LED付直径5mm3方位屈曲アクチュエータ

Back To Top

動作実験

直径3mm1方位屈曲アクチュエータ

 

直径3mm3方位屈曲アクチュエータ

 

先端LED付直径5mm3方位屈曲アクチュエータ

Back To Top