LEDCUBE!

LEDCUBEとは

LEDCUBEとは、LEDを立方体状に並べ、光らせるものです。

今回は8x8x8のLEDCUBEを作りました。

本当は8x8x8を完成させて展示させる予定だったのですが、間に合わず、3x3x3の展示と8x8x8の途中までの展示となっています。3x3x3だと、シフトレジスタ (後で出てきます)を使わないだけで基本的な仕組みは同じです。

ここでは8x8x8で解説を行なっています。

参考にしたのは以下のURLです。

https://www.youtube.com/watch?v=T5Aq7cRc-mU&

LEDCUBEの仕組み

LEDCUBEは、

の3つのパーツからできています。

このそれぞれのパーツの特徴を紹介します。

ダイナミック点灯方式

まず、「LEDの繋がったもの」はレイヤーで分けられます。今回は8x8x8なのでレイヤーは8つあります。これらのレイヤー同士とその中身は「ダイナミック点灯方式」という点灯方式に沿った繋げ方をされています。これの特徴は少ない導線で大量のLEDを制御できるということです。今回のLEDCUBEは8x8x8=512個のLEDを使うので、これを一つ一つArduinoにつなげることはできません。なので、LEDCUBEでは少ない導線で大量のLEDを制御できる工夫がなされています。

シフトレジスタ

「ダイナミック点灯方式」は工夫の一つなのですが、もう一つの工夫が「シフトレジスタ 」です。シフトレジスタ は、たった3本の信号用の導線(電源を除く)でLEDをいくらでも制御できる部品です。これを回路に組み込むことで大量のLEDを簡単に制御することができます。

プログラム

多くのLEDCUBEはArduinoから制御できるのですが、今回はRaspberryPiから制御しています。これは、今後音楽と合わせてLEDCUBEを光らせたいと思い、それにはArduinoよりもRaspberryPiの方が向いていると思うからです。

Raspberry Piのコードは以下をクリックまたはタップすると展開されます。(とても長いです)

ここをクリックまたはタップして展開 ``` import RPi.GPIO as GPIO import time

interval_time = 0.1 loop_num = 3

SCK = 19 RCK = 13 SI = 21

GPIO.setmode(GPIO.BCM)

GPIO.setup(SCK, GPIO.OUT) GPIO.setup(RCK, GPIO.OUT) GPIO.setup(SI, GPIO.LOW)

def reset(): GPIO.output(SCK, GPIO.LOW) GPIO.output(RCK, GPIO.OUT) GPIO.output(SI, GPIO.OUT)

def shift(PIN_NUM): GPIO.output(PIN_NUM, GPIO.HIGH) GPIO.output(PIN_NUM, GPIO.LOW)

def send_bits(data): for d in data: if d == 0: GPIO.output(SI, GPIO.LOW) else: GPIO.output(SI, GPIO.HIGH)

def lighting(): reset()

for num in range(loop_num): lighting()

send_bits([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ,1, 1, 1, 1]) time.sleep(3) send_bits([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) GPIO.cleanup() def render_all_layers(data): for dd in data: send_bits(dd)

参考にしたサイト

LEDキューブの作り方!!! -ど素人電子工作

8x8x8 LED CUBE WITH ARDUINO UNO -Youtube

[RaspberryPiにシフトレジスタ【74HC595】 を使って、複数のLEDをチカチカさせてパーリィーナイしてみた【Python使用】](http://raspi.seesaa.net/article/417590857.html)

最後に

LEDCUBEを作るのはとても大変でしたが、その分やりがいも大きかったです。

これからも頑張っていこうと思います。

長くなってしまいましたが、読んでくださりありがとうございました。