メディア・アート演習 

Elico Suzuki


disitalReadをつかってみる。ボタンを押すとLEDが光る回路をつくる(デジタルのオンオフ)

手順
- disitalWriteで光るよう、LEDの回路をつくります。

- Arudinoの3.3Vをブレッドボードの+ラインにつなぐ
- ArudinoのGNDをブレッドボードの-ラインにつなぐ

-LEDの端子の短いほうをGND
- LEDの端子の長い方を13番にさす。

- タクトスイッチを以下のようにつなぎます。
- Digital 2番からの線をボタンの右側につなぎ、さらに右側に10KΩ抵抗(プルダウン抵抗/ノイズを防ぐ)をつなぎ、GNDからの線をつなぐ。
- 3.3Vをつないでいる+のラインから、 ボタンの左側につなぐ





※タクトスイッチの正面に注意。足の付根が見えている方を手前にします。





- Arudinoを接続し、Arudino IDEを起動します
- スケッチ例からファイル-スケッチ例- Digital- "Button" を選びます




- コンパイルします
- ボタンをおすとLEDが光ることを確認してください。

ここではif else 文日本語リファレンス)がつかわれています。

光ることを確認したら、コードに手を加えてみます。光る長さを伸ばしてみましょう。  





- ソースコードに" delay(3000); " と書き足し、コンパイルします。
- ボタンを押すと、3秒LEDが光ることを確認してください。delayは、タイマー関数です。1000で1秒、制御を遅らせます。
関数リファレンス:
https://garretlab.web.fc2.com/arduino_reference/language/functions/time/delay.html

応用1-入力の制御:ボタンをさまざまなものに置き換えてみる


ボタンの状態を読み取ってオンオフする(ついてたら消す、消えてたらつける)

if文と論理積を使います。

"button.ino"に追加します。

やること

1つ前のボタンの状態を記録する変数と、LEDの状態を決める変数を加え、ボタンの状態を記録し、LEDの状態に反映させます。



実際のコードは以下。赤字が新しく付け加えたもの。



const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

int oldState = 0; //1つ前のボタンの状態を記録する変数
int currentState = 0; //LEDの状態を決める変数。


void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  if(buttonState == HIGH && oldState == LOW){ //もしスイッチがおされていて、その前はおされていなかったら
         currentState = 1 - currentState; //LEDの状態を決める変数。currentStateは0か1かの状態。1が代入されていたら0に、0のままであれば1になる計算式
         delay(10); //チャタリング防止
  }
  if(buttonState == LOW && oldState == HIGH){ //スイッチが離された状態を現在の状態に代入
         delay(10); //チャタリング防止
  }

oldState = buttonState; //現在のボタンの状態を1つ前のボタンの状態に保存


  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (currentState == 1) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

 

 


出力の制御: LEDをモーターにいれかえてみる(デジタルのオンオフ)


-LEDをはずします
- MOSFET(2SK2232), 整流用ダイオード(1N4007), DCモーターを以下のようにブレッドボードに刺します

 MOSFETの右側にGNDをつなげます

 MOSFETの中央に、ブレッドボードの+からジャンプワイヤをつなげたダイオード(灰色の線がない方)をつなげます。
 ダイオードの向きに注意します。 MOSFETの中央には、さらにモーターをつなげます。

 ダイオードの灰色の線があるほうはブレッドボードの空いた場所にさし、ブレッドボードの+につなげます
 MOSFETの左側にDigital 13ピンをつなげます。

LEDの制御と同じプログラムで動きます(ボタンオンオフのときは、1秒以上待つ処理をいれてあげること 例: delay(100);)


 

応用2-出力の制御: LEDをSSRにいれかえ、100V電流を制御する(デジタルのオンオフ)


次のページ