メンズワキガ対策専門ブランドD AGICA【ディーアジカ】

 

■LED Cube 4x4x4 を試してみた

シフトレジスターがうまく動きましたので、LED-Cube 4x4x4 を作ってみます。が、キューブ自体は組み立てる気がないので、ブレッドボード上に 64個の LED を並べて自由なパターンに点灯できるようにしました。

 

回路図です。

LED はアノードコモンで、アノード側のトランジスタ 2SA1015 でレイヤを制御します。レイヤのインターロックは省略しました。まぁ、気分です (^_^;)

シフトレジスタは 2段に繋いで、16コラムを制御しています。


led-cube_4x4x4_回路図

 

スケッチです。

 

#include <MsTimer2.h>

 

int ptn[][4] = {                  // Pattern data
//{LayerA,LayerB,LayerC,LayerD},

  {0x0001,0x0000,0x0000,0x0000},
  {0x0013,0x0000,0x0000,0x0000},
  {0x0137,0x0000,0x0000,0x0000},
  {0x137f,0x0000,0x0000,0x0000},
  {0x37fe,0x0001,0x0000,0x0000},
  {0x7fec,0x0013,0x0000,0x0000},
  {0xfec8,0x0137,0x0000,0x0000},
  {0xec80,0x137f,0x0000,0x0000},
  {0xc800,0x37fe,0x0001,0x0000},
  {0x8000,0x7fec,0x0013,0x0000},
  {0x0000,0xfec8,0x0137,0x0000},
  {0x0000,0xec80,0x137f,0x0000},
  {0x0000,0xc800,0x37fe,0x0001},
  {0x0000,0x8000,0x7fec,0x0013},
  {0x0000,0x0000,0xfec8,0x0137},
  {0x0000,0x0000,0xec80,0x137f},
  {0x0000,0x0000,0xc800,0x37fe},
  {0x0000,0x0000,0x8000,0x7fec},
  {0x0000,0x0000,0x0000,0xfec8},
  {0x0000,0x0000,0x0000,0xec80},
  {0x0000,0x0000,0x0000,0xc800},
  {0x0000,0x0000,0x0000,0x8000},
  {0x0000,0x0000,0x0000,0x0000},

};

 

  unsigned long cycle =200;   // Pattern cycle
  int dataPin = 2;
  int clockPin = 4;
  int layer[4] = {8,9,10,11};
  int nptn = sizeof(ptn) / sizeof(ptn[0]);
  int cptn = 0;

 

void chptn(){
  cptn++;
  if (cptn > nptn-1)
    cptn = 0;
}

 

void setup(){
  pinMode(dataPin, OUTPUT);
  pinMode(clockPin, OUTPUT);

  for (int i=0; i<4; i++){
    pinMode(layer[i], OUTPUT);
    digitalWrite(layer[i], HIGH);
  }

  shiftOut(dataPin, clockPin, MSBFIRST, 0xff00 >> 8);
  shiftOut(dataPin, clockPin, MSBFIRST, 0xff);

 

  MsTimer2::set(cycle, chptn);
  MsTimer2::start();
}

 

void loop(){
  for (int i=0; i<4; i++){
    shiftOut(dataPin, clockPin, MSBFIRST, ~ptn[cptn][i] >> 8);
    shiftOut(dataPin, clockPin, MSBFIRST, ~ptn[cptn][i]);
    digitalWrite(layer[i], LOW);
    delay(1);
    digitalWrite(layer[i], HIGH);
  }
}

 

パターンデータは 16進数になっています。

起動時にレイヤとコラムをすべて HIGH に初期化し消灯させています。

パターンの切り替えは MsTimer2 で割り込み処理しています。

シフトレジスタへの出力は shiftOut 関数を使います。LOW で点灯なのでパターンデータを NOT しています。シフト出力中に LED が点灯しないように、出力が終わってからレイヤを ON します。

その他、基本的に 3x3x3 と同様ですね。

 

ブレッドボードです。

今回は 0.5mm 単線で配線しました。ストリッパー使ったり面倒っちゃ面倒ですけど、まぁ慣れです。


LED-Cube 4x4x4

 

 


コメント
コメントする








   
この記事のトラックバックURL
トラックバック

■calendar

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
<< August 2019 >>

■search this site.

■recommend

毎日貯まるポイントサイト ECナビ

■recommend

* 楽天ROOM *

■Twitter

■recommend

■recommend

■selected entries

■categories

■archives

■recent comment

■recent trackback

■links

■profile

■others

■mobile

qrcode

■powered

無料ブログ作成サービス JUGEM