はじめに
タクトスイッチを押した時にSMAとLEDがONになり、離すとOFFになるプログラムを紹介する。
それぞれの対応は以下のようになる。
- タクトスイッチK0:SMA-A1、LED-R
- タクトスイッチK1:SMA-A2、LED-G
- タクトスイッチK2:SMA-A3、LED-B
複数のボタンを同時に押すことで複数のSMAに電流を流すことができるが、合計電流は最大0.7Aに制限される。同様に複数のボタンを押すことでフルカラーLEDのRGBの混色を確認することができる。
タクトスイッチを押した時にSMAとLEDがONになり、離すとOFFになるプログラムを紹介する。
それぞれの対応は以下のようになる。
複数のボタンを同時に押すことで複数のSMAに電流を流すことができるが、合計電流は最大0.7Aに制限される。同様に複数のボタンを押すことでフルカラーLEDのRGBの混色を確認することができる。
※Arduinoの使い方については「Arduino基礎」参照。
※BioMetalシールドの回路構成については「BioMetalツールキット演習1」参照。
空のスケッチを作成して、以下のコードをコピー&ペースト後、スケッチを保存する。
/*
Biometalシールドサンプルスケッチ Latch
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;
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() {
//マスターPWMを最大値(255)出力
analogWrite(pinPWM, 255); //0-255でSMAに与える電流値を変更
//タクトスイッチの状態を取得
bStateK0 = digitalRead(pinK0);
bStateK1 = digitalRead(pinK1);
bStateK2 = digitalRead(pinK2);
if (bStateK0 == HIGH) {
digitalWrite(pinSMA1, HIGH);
analogWrite(pinR, 255);
} else {
digitalWrite(pinSMA1, LOW);
analogWrite(pinR, 0);
}
if (bStateK1 == HIGH) {
digitalWrite(pinSMA2, HIGH);
analogWrite(pinG, 255);
} else {
digitalWrite(pinSMA2, LOW);
analogWrite(pinG, 0);
}
if (bStateK2 == HIGH) {
digitalWrite(pinSMA3, HIGH);
analogWrite(pinB, 255);
} else {
digitalWrite(pinSMA3, LOW);
analogWrite(pinB, 0);
}
}
スケッチデータのダウンロード
ツール>ボード>Arduino Leonardo
ツール> シリアルポート>/dev/cu.usbmodem****(Arduino Leonardo)
検証(コンパイル)ボタンを押す。
書き込みボタンを押す。
3種のアクチュエータをBioMetalシールドに接続コネクタを介して接続する。極性注意。
タクトスイッチK0〜K2を押して動作を確認する。
長い時間押し続けるとバイオメタルが加熱され続けて劣化や場合によって発火する可能性があるため、1〜2秒程度で離すこと。