Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino

2:16 PM

 

LED Cube Anduino adalah proyek yang menarik untuk dibuat, karena dapat digunakan sebagai hiasan atau digunakan dengan peralatan lain seperti mikrofon atau sensor gerak untuk berbagai aplikasi. Pada dasarnya LED Cube adalah kubus 3 dimensi yang terbuat dari Light Emitting Diodes (LED). Kubus dapat dibuat dengan berbagai cara tetapi untuk proyek ini akan menggunakan cara yaitu dikendalikan oleh mikrokontroler Arduino Uno.

Seperti yang terlihat pada gambar di bawah, kubus terdiri dari sumbu XY dan 4 lapisan yang ditumpuk satu sama lain. Lapisan bawah adalah nomor 0 dan yang atas adalah nomor 3. Demikian pula, LED diberi nomor seperti matriks 3 dimensi. Jadi, LED kiri bawah adalah (1,1) pada layer 0. Yang di atasnya juga (1,1) tetapi pada layer 1. Yang di sebelah kanan LED sudut ini adalah (2,1) pada layer 0 dan seterusnya. Semua lapisan horizontal adalah pin positif dari LED yang disolder bersama.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino

Semua pin negatif LED diletakkan pada kolom kubus matriks ini. Jadi akan memiliki 4 lapisan dan 16 kolom yang menjadikannya 20 kabel yang terhubung ke Arduino. Pin positif (lapisan) memiliki resistor 100 Ohm untuk membatasi aliran arus hingga 20mA (arus standar untuk LED).

Proses Pembuatan

Mikrokontroler – dalam kasus ini digunakan Arduino Uno, arduino uno memiliki batasan sumber arus pada pinoutnya, yaitu hanya dapat mengirimkan arus dalam jumlah yang aman sebelum terjadi kerusakan. Dalam kasus Arduino Uno, ini memiliki sumber arus 40mA. Jadi kalian pasti bertanya-tanya, tunggu dulu, jika sebuah LED membutuhkan 20mA, kenapa kita bisa menyalakan semua lampu secara bersamaan dan masih tidak membakar board Arduino? Ini karena pada waktu tertentu, hanya satu LED yang menyala.

Mata manusia (karena kegigihan penglihatan) tidak dapat melihat kedipan cepat LED jika dinyalakan dan dimatikan dengan sangat cepat. Karena kode pada Arduino berjalan sangat cepat, mata kita memikirkan beberapa LED seperti menyala. Ini juga membatasi arus ke tingkat yang aman karena pada waktu tertentu hanya satu LED yang menyala dan bahkan jika kita mengambil arus rata-rata dalam 1 detik, itu jauh di bawah ambang batas bahaya. Misalnya Anda ingin menyalakan LED di kiri bawah kubus, Anda akan memberikan sinyal positif dari mikrokontroler ke lapisannya yaitu lapisan 0, ini akan memberi tegangan positif pada pin positif LED. Kemudian Anda harus menginstruksikan mikrokontroler untuk membumikan pin kolom yang relevan dari LED itu, ini akan menghubungkan pin negatif LED ke ground dan Anda memiliki rangkaian bias maju lengkap yang akan menyalakan LED.

Bahan yang perlu disiapkan yaitu :

  • Karton atau kayu (tebal sekitar 1 inci)
  • baterai 3V
  • Amplas (kelas sedang)
  • 64 x Dioda Pemancar Cahaya Biru (LED)
  • 4 x 100 Ohm Resistor
  • 24 x Kabel Pita Berwarna Pria-Pria
  • 1 x Female Pin Socket/Header (harus memiliki 20 pin socket inline)
  • PCB Perfboard (sekitar 24×10 cm)
  • Arduino Uno + Kabel USB
  • Adaptor soket daya Arduino Uno
  • Adaptor baterai 9V
  • Baterai 9V
  • Zip-dasi (25 cm)
  • Pistol Lem + Tongkat Lem
  • Besi Solder + Kawat Solder + Busa Basah
  • Pompa Pematrian (jika penyolderan buruk)
  • Kaca pembesar (untuk melihat penyolderan Anda)
  • Pemotong Kawat Mini
  • Tang Hidung Mini
  • Kabel koneksi untuk kabel di bawah PCB (sekitar 1m) dan selotip

Tahap pembuatan led cube

Pertama-tama, Anda membutuhkan karton atau kayu yang cukup tebal (kira-kira satu inci sudah cukup). Bor lubang ke dalamnya sehingga membentuk pola kubus 4x4 dengan jarak yang sama antara semua lubang.

Dalam hal ini, pola tercetak ditempatkan di atas karton dan lubang 5mm (setiap lubang berjarak 2,4cm dari lubang berikutnya (tengah-tengah) dibor untuk LED. Pada gambar di bawah, Anda dapat melihat panah yang menunjuk ke arah kaki LED.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Sekarang, Anda harus menguji dan menyiapkan LED Anda. Anda dapat menggunakan baterai dengan daya 3V untuk tujuan ini. Uji semua LED agar Anda terhindar dari masalah nanti kaerna jika ada led yang bermasalah akan susah menggantinya dan cukup memakan waktu ketika setelah dirangkai secara keseluruhan.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Jika Anda ingin cahaya keluar dari semua sisi LED, Anda dapat menggosok keseluruhan kaca LED dengan amplas seperti pada gambar dibawah ini.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Pada gambar di bawah, LED di sebelah kiri menyebar dan yang di sebelah kanan dalam bentuk transparan aslinya. Terlihat perbedaan pada cahaya yang dihasilkan.

Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Ingat, bahwa kaki LED yang pendek adalah Katodanya (- pin) dan kaki panjangnya adalah Anode (+ pin). Jika Anda tidak yakin, maka Anda dapat mengujinya dengan multimeter atau baterai 3v untuk menemukan polaritasnya. Sekarang, dengan tang tekuk katoda (kaki pendek) pada sudut 90 derajat ke kanan dan tekuk lagi ke atas untuk membuat bentuk seperti yang ditunjukkan pada gambar di bawah.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino

Tempatkan LED di karton tetapi hati-hati dengan orientasinya. Ingat panah pada gambar di atas? Pin negatif dari LED yang ditekuk harus disejajarkan seperti panah. Ini karena kita akan membuat empat lapisan seperti itu dan mudah untuk menyoldernya. Tekuk semua kaki positif dari semua LED dan lakukan sedemikian rupa sehingga menghubungkan semua terminal positif LED bersama-sama, ini akan membuat lapisan arus positif





Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Namun, Anda akan melihat bahwa dua area di tengah lapisan ini dibiarkan tidak terhubung seperti yang ditunjukkan oleh lingkaran merah. Anda dapat menghubungkan pin ini dengan kabel tunggal atau kaki dari LED yang dipotong.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Sekarang, dengan menggunakan baterai 3v, buat penguji sederhana untuk memeriksa apakah semua LED berfungsi. Hubungkan kabel positif ke sembarang tempat pada lapisan dan satu per satu periksa semua kolom dengan kabel negatif.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Sekarang telah jadi lapisan pertama, kemudian buat 3 lapisan lagi sehingga menjadi 4 lapisan


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Dalam proyek ini, potongan karton sederhana dipotong dan ditempatkan di antara lapisan yang akan disolder. Ini membuatnya mudah untuk menyoldernya tetapi Anda selalu dapat menggunakan alat lain seperti dudukan PCB, dll.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Setelah menyolder tiga lapisan, ada baiknya untuk memeriksa semua LED sekali lagi untuk berjaga-jaga. Seperti sebelumnya, hubungkan pin positif tester sel tombol Anda ke layer dan kemudian pin negatif ke semua kolom LED (- pin) satu per satu

Akhirnya, kubus LED disolder dan seperti inilah tampilannya:


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Solder 20 pin (atau lebih) inline female header (celah 0,1 inci antara pin) ke PCB perfboard siap pakai dan letakkan Kubus di atasnya (pin kolom). Anda dapat menekuk beberapa kaki kubus LED di bawah papan untuk sementara agar tidak jatuh tetapi belum menyoldernya. Mereka akan disolder dengan kabel yang berasal dari pin header perempuan nanti.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Solder resistor dengan satu kaki terhubung ke pin header perempuan dan satu lagi untuk dihubungkan ke setiap lapisan terpisah pada kubus. Ingatlah untuk melihat pengaturan koneksi. Dalam proyek ini sisi paling kiri adalah pin nomor 0 pada Arduino hingga pin nomor 13 dan kemudian empat pin Analog untuk lapisan dan kemudian dua pin Analog untuk kolom yang tersisa. Lakukan beberapa pengujian cepat melalui soket header perempuan juga.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino


Hubungkan semua wirings menggunakan kabel pita jumper (male-male) sesuai dengan tabel koneksi yang ditunjukkan di bawah ini. Arduino dapat ditempel ke papan dengan doubletape sehingga dapat dengan mudah dilepas untuk digunakan dalam proyek lain. Anda dapat menyalakan Arduino dengan baterai 9V dan colokan listrik Arduino (setelah mengupload kode program ke papan arduino)

Setelah mengupload kode ke Arduino Uno, LED Cube 4x4x4 Anda sudah siap dinikmati.


Tutorial Cara Membuat Led Cube 4 X 4 X 4 Dengan Arduino
[program]

/*
  4x4x4 LED Cube
  Connection Setup: 
  Columns
  [(x,y)-Pin]
  (1,1)-13
  (1,2)-12
  (1,3)-11
  (1,4)-10
  (2,1)-9
  (2,2)-8
  (2,3)-7
  (2,4)-6
  (3,1)-5
  (3-2)-4
  (3-3)-3
  (3,4)-2
  (4,1)-1
  (4,2)-0
  (4,3)-A5
  (4,4)-A4
  Layers
  [layer-Pin]
  a-A0
  b-A1
  c-A2
  d-A3
*/
//initializing and declaring led rows
  int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,1,0,A5,A4};
//initializing and declaring led layers
  int layer[4]={A3,A2,A1,A0};

  int time = 250;
 
void setup()
{
  //setting rows to ouput
  for(int i = 0; i<16; i++)
  {
    pinMode(column[i], OUTPUT);
  }
  //setting layers to output
  for(int i = 0; i<4; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
  //seeding random for random pattern
  randomSeed(analogRead(10));
}
//xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

void loop()
{
  turnEverythingOff();//turn all off
  flickerOn();
  turnEverythingOn();//turn all on
  delay(time);
  turnOnAndOffAllByLayerUpAndDownNotTimed();
  layerstompUpAndDown();
  turnOnAndOffAllByColumnSideways();
  delay(time);
  aroundEdgeDown();
  turnEverythingOff();
  randomflicker();
  randomRain();
  diagonalRectangle();
  goThroughAllLedsOneAtATime();
  propeller();
  spiralInAndOut();
  flickerOff();
  turnEverythingOff();
  delay(2000);
}


//xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

///////////////////////////////////////////////////////////turn all off
void turnEverythingOff()
 {
   for(int i = 0; i<16; i++)
   {
     digitalWrite(column[i], 1);
   }
   for(int i = 0; i<4; i++)
   {
     digitalWrite(layer[i], 0);
   }
 }
 
////////////////////////////////////////////////////////////turn all on
void turnEverythingOn()
{
  for(int i = 0; i<16; i++)
  {
    digitalWrite(column[i], 0);
  }
  //turning on layers
  for(int i = 0; i<4; i++)
  {
    digitalWrite(layer[i], 1);
  }
}
///////////////////////////////////////////////////////turn columns off
void turnColumnsOff()
{
  for(int i = 0; i<16; i++)
  {
    digitalWrite(column[i], 1);
  }
}
/////////////////////////////////////////////////////////////flicker on
void flickerOn()
{
  int i = 150;
  while(i != 0)
  {
    turnEverythingOn();
    delay(i);
    turnEverythingOff();
    delay(i);
    i-= 5;
  }
}
//////////////turn everything on and off by layer up and down NOT TIMED
void turnOnAndOffAllByLayerUpAndDownNotTimed()
{
  int x = 75;
  for(int i = 5; i != 0; i--)
  {
    turnEverythingOn();
    for(int i = 4; i!=0; i--)
    {
      digitalWrite(layer[i-1], 0);
      delay(x);
    }
    for(int i = 0; i<4; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
      for(int i = 0; i<4; i++)
    {
      digitalWrite(layer[i], 0);
      delay(x);
    }
    for(int i = 4; i!=0; i--)
    {
      digitalWrite(layer[i-1], 1);
      delay(x);
    }
  }
}
//////////////////////////turn everything on and off by column sideways
void turnOnAndOffAllByColumnSideways()
{
  int x = 75;
  turnEverythingOff();
  //turn on layers
  for(int i = 0; i<4; i++)
  {
    digitalWrite(layer[i], 1);
  }
  for(int y = 0; y<3; y++)
  {
    //turn on 0-3
    for(int i = 0; i<4; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 4-7
    for(int i = 4; i<8; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 8-11
    for(int i = 8; i<12; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 12-15
    for(int i = 12; i<16; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn off 0-3
    for(int i = 0; i<4; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 4-7
    for(int i = 4; i<8; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 8-11
    for(int i = 8; i<12; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 12-15
    for(int i = 12; i<16; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn on 12-15
    for(int i = 12; i<16; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 8-11
    for(int i = 8; i<12; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 4-7
    for(int i = 4; i<8; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn on 0-3
    for(int i = 0; i<4; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //turn off 12-15
    for(int i = 12; i<16; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 8-11
    for(int i = 8; i<12; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 4-7
    for(int i = 4; i<8; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //turn off 0-3
    for(int i = 0; i<4; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
  }
}
/////////////////////////////////////////up and down single layer stomp
void layerstompUpAndDown()
{
  int x = 75;
  for(int i = 0; i<4; i++)
  {
    digitalWrite(layer[i], 0);
  }
  for(int y = 0; y<5; y++)
  {
    for(int count = 0; count<1; count++)
    { 
      for(int i = 0; i<4; i++)
      {
        digitalWrite(layer[i], 1);
        delay(x);
        digitalWrite(layer[i], 0);
      }
      for(int i = 4; i !=0; i--)
      {
        digitalWrite(layer[i-1], 1);
        delay(x);
        digitalWrite(layer[i-1], 0);
      }
    }
    for(int i = 0; i<4; i++)
    {
      digitalWrite(layer[i], 1);
      delay(x);
    }
    for(int i = 4; i!=0; i--)
    {
      digitalWrite(layer[i-1], 0);
      delay(x);
    }
  }
}
////////////////////////////////////////////////////////////flicker off
void flickerOff()
{
  turnEverythingOn();
  for(int i = 0; i!= 150; i+=5)
  {
    turnEverythingOff();
    delay(i+50);
    turnEverythingOn();
    delay(i);
  }
}
///////////////////////////////////////////around edge of the cube down
void aroundEdgeDown()
{
  for(int x = 200; x != 0; x -=50)
  {
    turnEverythingOff();
    for(int i = 4; i != 0; i--)
    {
      digitalWrite(layer[i-1], 1);
      digitalWrite(column[5], 0);
      digitalWrite(column[6], 0);
      digitalWrite(column[9], 0);
      digitalWrite(column[10], 0);
      
      digitalWrite(column[0], 0);
      delay(x);
      digitalWrite(column[0], 1);
      digitalWrite(column[4], 0);
      delay(x);
      digitalWrite(column[4], 1);
      digitalWrite(column[8], 0);
      delay(x);
      digitalWrite(column[8], 1);
      digitalWrite(column[12], 0);
      delay(x);
      digitalWrite(column[12], 1);
      digitalWrite(column[13], 0);
      delay(x);
      digitalWrite(column[13], 1);
      digitalWrite(column[15], 0);
      delay(x);
      digitalWrite(column[15], 1);
      digitalWrite(column[14], 0);
      delay(x);
      digitalWrite(column[14], 1);
      digitalWrite(column[11], 0);
      delay(x);
      digitalWrite(column[11], 1);
      digitalWrite(column[7], 0);
      delay(x);
      digitalWrite(column[7], 1);
      digitalWrite(column[3], 0);
      delay(x);
      digitalWrite(column[3], 1);
      digitalWrite(column[2], 0);
      delay(x);
      digitalWrite(column[2], 1);
      digitalWrite(column[1], 0);
      delay(x);
      digitalWrite(column[1], 1);
    }
  }
}
/////////////////////////////////////////////////////////random flicker
void randomflicker()
{
  turnEverythingOff();
  int x = 10;
  for(int i = 0; i !=750; i+=2)
  {
  int randomLayer = random(0,4);
  int randomColumn = random(0,16);
  
  digitalWrite(layer[randomLayer], 1);
  digitalWrite(column[randomColumn], 0);
  delay(x);
  digitalWrite(layer[randomLayer], 0);
  digitalWrite(column[randomColumn], 1);
  delay(x); 
  }
}
////////////////////////////////////////////////////////////random rain
void randomRain()
{
  turnEverythingOff();
  int x = 100;
  for(int i = 0; i!=60; i+=2)
  {
    int randomColumn = random(0,16);
    digitalWrite(column[randomColumn], 0);
    digitalWrite(layer[0], 1);
    delay(x+50);
    digitalWrite(layer[0], 0);
    digitalWrite(layer[1], 1);
    delay(x);
    digitalWrite(layer[1], 0);
    digitalWrite(layer[2], 1);
    delay(x);
    digitalWrite(layer[2], 0);
    digitalWrite(layer[3], 1);
    delay(x+50);
    digitalWrite(layer[3], 0);
    digitalWrite(column[randomColumn], 1);
  }
}
/////////////////////////////////////////////////////diagonal rectangle
void diagonalRectangle()
{
  int x = 350;
  turnEverythingOff();
  for(int count = 0; count<5; count++)
  {
    //top left
    for(int i = 0; i<8; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[3], 1);
    digitalWrite(layer[2], 1);
    delay(x);
    turnEverythingOff();
    //middle middle
    for(int i = 4; i<12; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[1], 1);
    digitalWrite(layer[2], 1);
    delay(x);
    turnEverythingOff();
    //bottom right
    for(int i = 8; i<16; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 1);
    delay(x);
    turnEverythingOff();
    //bottom middle
    for(int i = 4; i<12; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 1);
    delay(x);
    turnEverythingOff();
    //bottom left
    for(int i = 0; i<8; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[0], 1);
    digitalWrite(layer[1], 1);
    delay(x);
    turnEverythingOff();
    //middle middle
    for(int i = 4; i<12; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[1], 1);
    digitalWrite(layer[2], 1);
    delay(x);
    turnEverythingOff();
    //top right
    for(int i = 8; i<16; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[2], 1);
    digitalWrite(layer[3], 1);
    delay(x);
    turnEverythingOff();
    //top middle
    for(int i = 4; i<12; i++)
    {
      digitalWrite(column[i], 0);
    }
    digitalWrite(layer[2], 1);
    digitalWrite(layer[3], 1);
    delay(x);
    turnEverythingOff();
  }
  //top left
  for(int i = 0; i<8; i++)
  {
    digitalWrite(column[i], 0);
  }
  digitalWrite(layer[3], 1);
  digitalWrite(layer[2], 1);
  delay(x);
  turnEverythingOff();
}
//////////////////////////////////////////////////////////////propeller
void propeller()
{
  turnEverythingOff();
  int x = 90;
  for(int y = 4; y>0; y--)
  {
    for(int i = 0; i<6; i++)
    {
      //turn on layer
      digitalWrite(layer[y-1], 1);
      //a1
      turnColumnsOff();
      digitalWrite(column[0], 0);
      digitalWrite(column[5], 0);
      digitalWrite(column[10], 0);
      digitalWrite(column[15], 0);
      delay(x);
      //b1
      turnColumnsOff();
      digitalWrite(column[4], 0);
      digitalWrite(column[5], 0);
      digitalWrite(column[10], 0);
      digitalWrite(column[11], 0);
      delay(x);
      //c1
      turnColumnsOff();
      digitalWrite(column[6], 0);
      digitalWrite(column[7], 0);
      digitalWrite(column[8], 0);
      digitalWrite(column[9], 0);
      delay(x);
      //d1
      turnColumnsOff();
      digitalWrite(column[3], 0);
      digitalWrite(column[6], 0);
      digitalWrite(column[9], 0);
      digitalWrite(column[12], 0);
      delay(x);
      //d2
      turnColumnsOff();
      digitalWrite(column[2], 0);
      digitalWrite(column[6], 0);
      digitalWrite(column[9], 0);
      digitalWrite(column[13], 0);
      delay(x);
      //d3
      turnColumnsOff();
      digitalWrite(column[1], 0);
      digitalWrite(column[5], 0);
      digitalWrite(column[10], 0);
      digitalWrite(column[14], 0);
      delay(x);
    }
  }
  //d4
  turnColumnsOff();
  digitalWrite(column[0], 0);
  digitalWrite(column[5], 0);
  digitalWrite(column[10], 0);
  digitalWrite(column[15], 0);
  delay(x);
}
//////////////////////////////////////////////////////spiral in and out
void spiralInAndOut()
{
  turnEverythingOn();
  int x = 60;
  for(int i = 0; i<6; i++)
  {
    //spiral in clockwise
    digitalWrite(column[0], 1);
    delay(x);
    digitalWrite(column[1], 1);
    delay(x);
    digitalWrite(column[2], 1);
    delay(x);
    digitalWrite(column[3], 1);
    delay(x);
    digitalWrite(column[7], 1);
    delay(x);
    digitalWrite(column[11], 1);
    delay(x);
    digitalWrite(column[15], 1);
    delay(x);
    digitalWrite(column[14], 1);
    delay(x);
    digitalWrite(column[13], 1);
    delay(x);
    digitalWrite(column[12], 1);
    delay(x);
    digitalWrite(column[8], 1);
    delay(x);
    digitalWrite(column[4], 1);
    delay(x);
    digitalWrite(column[5], 1);
    delay(x);
    digitalWrite(column[6], 1);
    delay(x);
    digitalWrite(column[10], 1);
    delay(x);
    digitalWrite(column[9], 1);
    delay(x);
    ///////////////////////////////////////spiral out counter clockwise
    digitalWrite(column[9], 0);
    delay(x);
    digitalWrite(column[10], 0);
    delay(x);
    digitalWrite(column[6], 0);
    delay(x);
    digitalWrite(column[5], 0);
    delay(x);
    digitalWrite(column[4], 0);
    delay(x);
    digitalWrite(column[8], 0);
    delay(x);
    digitalWrite(column[12], 0);
    delay(x);
    digitalWrite(column[13], 0);
    delay(x);
    digitalWrite(column[14], 0);
    delay(x);
    digitalWrite(column[15], 0);
    delay(x);
    digitalWrite(column[11], 0);
    delay(x);
    digitalWrite(column[7], 0);
    delay(x);
    digitalWrite(column[3], 0);
    delay(x);
    digitalWrite(column[2], 0);
    delay(x);
    digitalWrite(column[1], 0);
    delay(x);
    digitalWrite(column[0], 0);
    delay(x);
    ///////////////////////////////////////spiral in counter clock wise
    digitalWrite(column[0], 1);
    delay(x);
    digitalWrite(column[4], 1);
    delay(x);
    digitalWrite(column[8], 1);
    delay(x);
    digitalWrite(column[12], 1);
    delay(x);
    digitalWrite(column[13], 1);
    delay(x);
    digitalWrite(column[14], 1);
    delay(x);
    digitalWrite(column[15], 1);
    delay(x);
    digitalWrite(column[11], 1);
    delay(x);
    digitalWrite(column[7], 1);
    delay(x);
    digitalWrite(column[3], 1);
    delay(x);
    digitalWrite(column[2], 1);
    delay(x);
    digitalWrite(column[1], 1);
    delay(x);
    digitalWrite(column[5], 1);
    delay(x);
    digitalWrite(column[9], 1);
    delay(x);
    digitalWrite(column[10], 1);
    delay(x);
    digitalWrite(column[6], 1);
    delay(x);
    //////////////////////////////////////////////spiral out clock wise
    digitalWrite(column[6], 0);
    delay(x);
    digitalWrite(column[10], 0);
    delay(x);
    digitalWrite(column[9], 0);
    delay(x);
    digitalWrite(column[5], 0);
    delay(x);
    digitalWrite(column[1], 0);
    delay(x);
    digitalWrite(column[2], 0);
    delay(x);
    digitalWrite(column[3], 0);
    delay(x);
    digitalWrite(column[7], 0);
    delay(x);
    digitalWrite(column[11], 0);
    delay(x);
    digitalWrite(column[15], 0);
    delay(x);
    digitalWrite(column[14], 0);
    delay(x);
    digitalWrite(column[13], 0);
    delay(x);
    digitalWrite(column[12], 0);
    delay(x);
    digitalWrite(column[8], 0);
    delay(x);
    digitalWrite(column[4], 0);
    delay(x);
    digitalWrite(column[0], 0);
    delay(x);
  }
}
//////////////////////////////////////go through all leds one at a time
void goThroughAllLedsOneAtATime()
{
  int x = 15;
  turnEverythingOff();
  for(int y = 0; y<5; y++)
  {
    //0-3
    for(int count = 4; count != 0; count--)
    {
      digitalWrite(layer[count-1], 1);
      for(int i = 0; i<4; i++)
      {
        digitalWrite(column[i], 0);
        delay(x);
        digitalWrite(column[i], 1);
        delay(x);
      }
    digitalWrite(layer[count-1], 0);
    }
    //4-7
    for(int count = 0; count < 4; count++)
    {
      digitalWrite(layer[count], 1);
      for(int i = 4; i<8; i++)
      {
        digitalWrite(column[i], 0);
        delay(x);
        digitalWrite(column[i], 1);
        delay(x);
      }
    digitalWrite(layer[count], 0);
    }
    //8-11
    for(int count = 4; count != 0; count--)
    {
      digitalWrite(layer[count-1], 1);
      for(int i = 8; i<12; i++)
      {
        digitalWrite(column[i], 0);
        delay(x);
        digitalWrite(column[i], 1);
        delay(x);
      }
    digitalWrite(layer[count-1], 0);
    }
    //12-15
    for(int count = 0; count < 4; count++)
    {
      digitalWrite(layer[count], 1);
      for(int i = 12; i<16; i++)
      {
        digitalWrite(column[i], 0);
        delay(x);
        digitalWrite(column[i], 1);
        delay(x);
      }
    digitalWrite(layer[count], 0);
    }
  }
}
Next Article
« Prev Post
Previous Article
Next Post »
Disqus
Tambahkan komentar Anda

No comments