LED Cube 3x3x3 Menggunakan Arduino

Bismillahirrahmanirrahim

Assalamu’alaikum warahmatullahi wabarakatuh

Pada Project kali ini saya akan membuat LED Cube 3x3x3 Menggunakan Arduno UNO dan saya akan menggunakan pin 2, sampai dengan pin 13 pada Arduino UNO untuk menyalakan sebuah Project Lampu LED Cube 3x3x3 Menggunakan Arduno UNO, serta saya akan menjelaskan mulai dari hardware dan software berserta cara kerjanya yang bermaksud membuat para pembaca dapat mengerti dengan apa yang saya sampaikan . Aamiin.

Alat dan Bahan

  • 27 Buah LED 5mm atau LED 3mm (Warna Bebas)
  • 3 Buah Resistor 22k Ω (Ohm)
  • 9 Buah Resistor 220 Ω (Ohm)
  • 3 Buah NPN Transistor 2N2222 (atau bebas asalkan sama type)
  • Kabel Jumper secukupnya
  • 1 Buah Protoboard
  • 1 Buah Arduino

.

Rangkaian LED Cube 3x3x3 Menggunakan Arduno

rangkaian-lec-cube-3x3x3-menggunakan-arduino-uno4

Gambar 1. Rangkaian LED Cube pada LED layer 1

rangkaian-lec-cube-3x3x3-menggunakan-arduino-uno-layer-21

Gambar 2. Rangkaian LED Cube pada LED layer 2

Gambar 3. Rangkaian LED Cube pada LED layer 3

.

Sketch Program LED Cube 3x3x3 Menggunakan Arduno

#include <LedCube.h>

#define SIZE 3
#define COLS (SIZE*SIZE)

byte levelPins[SIZE] = {11,12,13};
byte colPins[COLS] = {2,3,4,5,6,7,8,9,10};

LedCube cube(SIZE, levelPins, colPins);

//#define DEBUG
#ifdef DEBUG
#include <memdebug.h>
void showmem(const char label[] = "")
{
 char buffer[100];
 
 sprintf(buffer,"%s: %04u %04u : used/free",
 label,
 getMemoryUsed(),
 getFreeMemory()
 );
 
 Serial.println(buffer);
}
#endif

void setup ()
{
#ifdef DEBUG
 Serial.begin(9600);
#endif
}

void loop ()
{
 delay(10);
 
#ifdef DEBUG
 showmem("start");
#endif
 // paste UI output here (https://rawgithub.com/gzip/arduino-ledcube/master/ui/index.html)
 cubeFrame* f[] = {
 cube.createFrame((const byte[]) {0,6, 1,6, 2,6}, 6, 80),
 cube.createFrame((const byte[]) {0,7, 1,7, 2,7}, 6, 70),
 cube.createFrame((const byte[]) {0,8, 1,8, 2,8}, 6, 60),
 cube.createFrame((const byte[]) {0,5, 1,5, 2,5}, 6, 50),
 cube.createFrame((const byte[]) {0,2, 1,2, 2,2}, 6, 40),
 cube.createFrame((const byte[]) {0,1, 1,1, 2,1}, 6, 30),
 cube.createFrame((const byte[]) {0,0, 1,0, 2,0}, 6, 20),
 cube.createFrame((const byte[]) {0,3, 1,3, 2,3}, 6, 10)
 };
#ifdef DEBUG
 showmem("before free");
#endif
 cube.lightFrames(f, 8);
 
 // light each light one at a time
 for(byte level=0; level<cube.getLevels(); level++)
 {
 for(byte col=0; col<cube.getCols(); col++)
 {
 cube.lightPulse(level, col, 100);
 }
 }
 
 // light one level at a time, increasing speed each time
 for(byte d=25; d>2; d-=2)
 {
 for(byte l=1; l <= cube.getLevels(); l++)
 {
 cube.lightLevel(l, d);
 }
 }
 
 // light each row on each level
 for(byte level=1; level<=cube.getLevels(); level++)
 {
 for(byte row=1; row<=cube.getLevels()*2; row++)
 {
 cube.lightRow(row, level);
 }
 }
 
 // light each plane
 for(byte i=3; i; i--)
 {
 for(byte row=1; row<=cube.getLevels()*2; row++)
 {
 cube.lightPlane(row, 10*i);
 }
 }
 
 // single random light at a time
 cube.randomLight(random(25,100),100);
 
 // random column drop
 for(byte x=0; x<=15; x++)
 {
 cube.lightDrop(random(0,cube.getCols()), random(50,150));
 }
 
 // circle around cube at a random level
 for(byte x=0; x<=5; x++)
 {
 cube.lightPerimeter(random(0,cube.getLevels()), random(1,5), random(25,100));
 }
 
 // light each face
 byte planes[] = {cube.getLevels()+1,cube.getLevels(),cube.getLevels()*2,1};
 for(byte i=5; i; i--)
 {
 for(byte p=0; p<sizeof(planes); p++)
 {
 cube.lightPlane(planes[p], 5*i);
 }
 }
 
 // random columns
 cube.randomColumn(25);
 
 // turn off a single column randomly
 cube.enableBuffer();
 for(byte c=0; c<30; c++)
 {
 cube.fillBuffer();
 cube.invertBuffer();
 cube.randomColumn();
 cube.drawBuffer(7);
 }
 cube.enableBuffer(false);
 
 // cols in and out
 for(byte c=1, d=0; c<=10; c++)
 {
 if(c%2 == 0)
 {
 for(d=0; d<20; d++)
 {
 cube.lightColumn(2,1);
 cube.lightColumn(4,1);
 cube.lightColumn(6,1);
 cube.lightColumn(8,1);
 }
 }
 else if(c%4 == 1)
 {
 for(d=0; d<30; d++)
 {
 cube.lightColumn(1,1);
 cube.lightColumn(3,1);
 cube.lightColumn(7,1);
 cube.lightColumn(9,1);
 }
 }
 else
 {
 for(d=0; d<70; d++)
 {
 cube.lightColumn(5,1);
 }
 }
 }
 
 // diamond and box
 byte diamond[] = {0,4, 1,1, 1,3, 1,4, 1,5, 1,7, 2,4};
 byte box[] = {
 2,0, 2,1, 2,2, 2,3, 2,5, 2,6, 2,7, 2,8,
 1,0, 1,2, 1,6, 1,8,
 0,0, 0,1, 0,2, 0,3, 0,5, 0,6, 0,7, 0,8
 };
 cube.lightSequence(box, sizeof(box), 200);
 cube.lightSequence(diamond, sizeof(diamond), 400);
 
 // helicopter effect
 byte topSeq[8] = {0,3,6,7,8,5,2,1};
 byte botSeq[8] = {8,5,2,1,0,3,6,7};
 for(byte loops = 0, delay = 50; loops<=8; loops++)
 {
 for(byte s=0; s<8; s++)
 {
 byte seq[] = {2,topSeq[s], 1,4, 0,botSeq[s]};
 cube.lightSequence(seq, sizeof(seq), delay);
 } 
 if(loops < 5) delay-=10; else delay += 10;
 }
 
 // turn off one light at a time
 cube.lightsOut();
}

Untuk mencoba project ini anda harus download Library nya, pada link dibawah ini.

https://drive.google.com/open?id=0B2ChxtuRzSJ3eVh6OW1kakNRQXc

Untuk Cara Menambahkan Library pada Arduino IDE dapat dilihat pada link berikut ini.

http://www.warriornux.com/cara-menambahkan-atau-include-library-pada-software-arduino-ide-berserta-gambar/

.

DEMO LED Cube 3x3x3 Menggunakan Arduno UNO

Terimakasih, saya harap project ini dapat bermanfaat, dan apa bila ada pertanyaan jangan malu untuk bertanya

Wassalamu’alaikum warahmatullahi wabarakatuh

Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments