2013/01/13

LEDキューブ(回路とスケッチ編)



上が回路図です。
ArduinoUnoから1段分、抵抗をはさんで9個のLEDのアノードへ線が伸びています。
(ポート2〜10)

また、トランジスタ2SC1815が3つ繋がっていて、それぞれ1段づつのLEDのカソード
(写真のオレンジの線)につながっています。
(ポート11〜13)

LEDは、それぞれ真上、真下のLEDがつながっています。

この場合、光るLEDは、

① ポート2〜10で指定された位置のLED
② ポート11〜13で指定された段

の2つの条件を満たす箇所です。


それでは、あるパターンでキューブを光らせるには、どうしたらいいでしょうか?
以下にソースリストを抜粋してみます。

-------------------------------------------------------------------------------
const  int anode[9] = {2,3,4,5,6,7,8,9,10};     //アノードの接続先
const  int cathode[3] = {11,12,13};      //カソードの接続先

const boolean ledtest1 [3][9] = { {1,0,0,
                                             0,0,0,
                                             0,0,0},


                                            {0,0,0,
                                             1,0,0,
                                             0,0,0},

                                            {0,0,0,
                                             0,0,0,
                                             1,0,0}};      //LEDのパターン 

for( s=0;s<50;s++){                                 //繰り返し表示して見えるようにする
    for( i=0;i<3;i++){                // 1段ごとに表示している。3回繰り返す
        for( j=0;j<9;j++){ 
            digitalWrite(anode[j],ledtest1[i][j]); //  各LEDの状態をセット。9回繰り返す
        }

        digitalWrite(cathode[i],1);        //   カソードをON  (この段のLED点灯)
        delayMicroseconds(500);        //   500us点灯
        digitalWrite(cathode[i],0);        //   カソードをOFF  (LED消灯)
    }
}
------------------------------------------------------------------------------

このように、複数のLEDが同時に点灯しているように見えて、
実は目には見えないほど高速にON,OFFを繰り返しているのです。
これをダイナミック点灯と言います。

これで点灯はできました。

アニメーションは、パターンをいくつか用意しておき、
パターン1をある回数(たとえば50回)表示したら、次のパターンを表示する…
といった形になります。

この作業は根気が必要になりますが、ぜひ楽しいパターンを考えてみてください。


前回投稿したムービーでのスケッチはこちらになります。



<おわびとご注意>

回路図間違えてます。LEDが8個づつしかありません。1段9個や・・・(修正しました)



3 件のコメント:

  1. R1~R9の抵抗値は220Ωとなっており、LED一個の時の抵抗値のようですが、縦のラインの同時点灯はプログラム的にしないようにしているんですか?
    ポート2,11,12,13をHIGH、それ以外をLOWとすると
    ポート2 → (LED19,LED10,LED1)並列 → GND になり
    3つのLEDに電流が流れて必要な抵抗が変わってしまいますよね

    返信削除
    返信
    1. 一段づつ点灯/消灯を繰り返しています。(ダイナミック点灯)
      ですので、縦のラインは1個づつ点灯しており、同時点灯は無いのです。

      削除
  2. このコメントは投稿者によって削除されました。

    返信削除