Arduinoその他工作

Arduinoを制御デバイスにしてさまざまなモノを動かそう!

第4回:RGBのLEDライトを制御して楽しむ

Arduinoを使った簡単工作を通して、電子工作の原理や基本を学ぶこの企画。教えてくれるのは、メディアアートの分野で、また「ちょっと深い仕組み」を解説する書籍の世界で活躍している、伊藤尚未さんです。第4回はRGBのLEDライトをArduinoで制御していきたいと思います。

 

目次

  1. はじめに
  2. ストロボライトによるアニメーション
  3. Arduinoでモータを制御してみよう
  4. 3色LEDを制御してみよう
  5. 変化していくアニメーションを楽しむ

 

1. はじめに

みなさん、こんにちは。伊藤尚未です。

さて、今回はアニメーションの原理、元祖ともいえる「驚き盤」を作ってみようと思います。驚き盤はフェナキスティスコープとも呼ばれますが、ゾートロープという言葉では電子工作好きの方には馴染みがあるかもしれません。いずれも連続したモチーフのある回転するものにスリットを設けて、ここから覗くことでスリットがシャッターの役割を果たし、1コマずつ見えることでアニメーションになるものです。

1830年代にヨーロッパで発明された視覚玩具ですが、平面だったり、立体だったり、鏡に映したり、シャッターを別置したり、と様々なものが発明されています。いわばパラパラ漫画ですが、現在の映画やテレビなどの元祖とも言えます。

これを電子工作でやろうとした場合、LEDなどの光源を点滅させることによって、見える瞬間を連続させる形になります。LEDの光を連続ストロボライトとして制御し、連続する絵を描いた円盤を回転させることで、動画として表現できます。これも白色LEDが発明されて電子回路が簡単に組めるようになったからこその楽しみですね。

いろいろな工作レポートが書籍やWEBにも載っていますが、ふと思い立って、単に白色LEDの点滅ではなく、RGBで点滅させるともっと表現の幅が広がるのだろうと思い、作ってみることにしましたので、紹介していきたいと思います。

 

2. ストロボライトによるアニメーション

私は普段、ワークショップなどで電子工作をおこなっていますが、シンプルな回路でLEDを点滅させる工作と、絵を描いたコマにこの光を当てて、アニメーションを確認するという演目を最近多くおこなっています。

装置としてはトランジスタと抵抗器、コンデンサのシンプルな発振回路ですが、点滅速度も変更できるようにしています。

arduino-control-clipmotor-04-01

 

動画ではフレームレートの関係か、うまく撮れてないのがないのが申し訳ないのですが、コマなので、だんだんゆっくりになっていき最後は回転が止まってしまうに連れて、アニメーションのスピードも変化していくのが分かります。

 

3. Arduinoでモータの制御してみよう

ずっと同じ速度で回転してほしいので、ここではモータで回る装置を作ることにしました。モータはマブチ社製の「FA-130RA」を使いました。

arduino-control-clipmotor-04-02

 

これはパッケージを見ますと通常回転で6500rpmとなっており、ちょっと速過ぎる感じがしましたので、遅く回転するように制御します。

arduino-control-clipmotor-04-03

 

上部に円盤の軸を固定するように台を作り、モータの回転をプーリで円盤に伝え、さらに回転のスピードをコントロールするためにArduinoのアナログ出力を使っています。

arduino-control-clipmotor-04-04

 

ドライブにはROHM社のトランジスタ「2SD1866」を使いました。

arduino-control-clipmotor-04-05

 

全体のイメージはこのように工作しました。

arduino-control-clipmotor-04-06

 

モータは回転のしはじめは、ある程度勢いが必要なので、はじめからゆっくりというのは難しく、最初は一旦回転させてから低速回転させるようにしています。そのために手でコントロールできるよう半固定抵抗器のツマミを指で回して、回転をコントロールできるようにしました。

これをArduinoでアナログ入力し、モータをコントロールするようにします。回路図は以下のようにしました。

arduino-control-clipmotor-04-07

 

モータ制御のためにトランジスタ「2SD1866」でドライブするようにして、乾電池1個で1.5V電圧の駆動です。これをブレッドボードで組みました。

arduino-control-clipmotor-04-08

arduino-control-clipmotor-04-09

 

スケッチは以下のようにしています。A0ピンで半固定抵抗器の値をアナログ入力し、9番ピンから20kΩの抵抗器を通してトランジスタのコレクタに接続されたモータを動かすという仕組みです。

int Value01 = 0;

void setup() {

    Serial.begin(9600);
    pinMode(9, OUTPUT);

}

void loop() {

    int Value01 = analogRead(A0);
      Serial.println(Value01);
    analogWrite(9, Value01 / 4);
 
}

 

実際に動かしてみると意外に低速でも回転させることができました。これを先のストロボライトで照らすとこのように見えます。

 

4. 3色LEDを制御してみよう

さて、次にもっと明るくするためにLEDを増やそうと思います。また、当初のイメージ通りRGBのLEDにしていくために、赤緑青のLEDをそれぞれ5個ずつにしました。

これらをArduinoでコントロールするために、これもトランジスタ「2SD1866」でドライブすることにしました。

回路図は以下の通りとなります。

arduino-control-clipmotor-04-10

 

それぞれのトランジスタをArduinoの11、12、13番ピンでドライブするようにし、赤は13番、緑は12番、青は11番としています。外部電源として乾電池3本使い、4.5Vにしています。これをユニバーサル基板にハンダ付けして配線しました。基板の配線図は以下です。

arduino-control-clipmotor-04-11

arduino-control-clipmotor-04-12

 

このLED基板はモータ台に取り付けられた円盤を照らすように傾斜のついた台に貼り付け、モータ台にはArduino 、ブレッドボード等を組み込みました。LEDは光ムラがあったので、拡散キャップを付けました。

arduino-control-clipmotor-04-13

 

モータ台を裏から見るとこういう形に。

arduino-control-clipmotor-04-14

 

これをArduinoに接続します。まずは全LEDを同時に点滅させるためにスケッチは前述モータ制御部分に加えて、このようにしました。

int Value01 = 0;

void setup() {

  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);

    Serial.begin(9600);
    pinMode(9, OUTPUT);
}

void loop() {

    int Value01 = analogRead(A0);
     Serial.println(Value01);
    analogWrite(9, Value01 / 4);
    
  digitalWrite(13, HIGH);               
  digitalWrite(12, HIGH);  
  digitalWrite(11, HIGH);  
  delay(1);                

  digitalWrite(13, LOW);   
  digitalWrite(12, LOW);  
  digitalWrite(11, LOW); 
  delay(49); 

}

 

点灯を0.001秒、消灯を0.049秒にし、1秒間に20回点滅する形にしています。
これはRGBが同時に点滅しますので、光の三原色で白色に光るので、先のストロボのようにアニメーションが見えます。

arduino-control-clipmotor-04-15

 

 

5. 変化していくアニメーションを楽しむ

これを今度はRGBを別々に光らせます。全部を光らせて白色のライトにすることに加え、赤、緑、青をそれぞれずらして光らせることで円盤の絵が少し色ずれした形で見ることができます。スケッチは以下のようになります。

int Value01 = 0;

void setup() {

  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);

    Serial.begin(9600);
    pinMode(9, OUTPUT);
}

void loop() {

    int Value01 = analogRead(A0);
     Serial.println(Value01);
    analogWrite(9, Value01 / 4);
    
  digitalWrite(13, HIGH);               
  digitalWrite(12, HIGH);  
  digitalWrite(11, HIGH);  
  delay(1);                

  digitalWrite(13, LOW);   
  digitalWrite(12, LOW);  
  digitalWrite(11, LOW); 
  delay(13); 

  digitalWrite(13, HIGH);               
  delay(1);                
  digitalWrite(13, LOW);   
  delay(11); 

  digitalWrite(12, HIGH);               
  delay(1);                
  digitalWrite(12, LOW);   
  delay(11); 

  digitalWrite(11, HIGH);               
  delay(1);                
  digitalWrite(11, LOW);   
  delay(11); 

}

 

これで全体の周期は変わりませんが、白い人の間に赤、緑、青の人が走っているように見えます。

arduino-control-clipmotor-04-16

 

 

演出を加えていくと、いろいろな表現ができそうです。それぞれ混色した色もできますし、出たり消えたりというのも面白いでしょうね。

なんとなく学生のころ、いろいろなパターンをプログラムで組んで演出の面白さを感じていたことを思い出します。今となっては「できる」ことが確認できた時点で、自分の作品化検討のために熟成期間に入れてしまいがちです。これを別名「棚上げ」と呼んでいます(笑)。

arduino-control-clipmotor-04-17

 

最後に全体の回路図を示すと上記のようになります。モータ用に1.5V、LED用に4.5V、もちろんArduinoはUSBにも接続しています。また、ハンダ付けもしましたし、ブレッドボードも使いました。

このように今回はいろいろな手法を使う電子工作になりましたが、ぜひ皆さんにもチャレンジして頂きたいと思います。

【動画で解説】ラズパイZeroで小型AIカメラを作ろう!
伊藤 尚未

日本電子工作普及推進委員会代表、メディアアーティスト。サイエンスライター、動物園の飼育員のフリした電気工事士、理科実験教室講師、ワークショップ講師、教材開発など、幅広く活動中。 月刊「子供の科学(誠文堂新光社)」で電子工作の連載を続けて19年、代表的な書籍は「電子工作大図鑑」「電子工作パーフェクトガイド」があります。