How to Make a LED Cube with ATMEGA8 ?

Arduino Tutorial: How to Make a LED Cube

 hello, In this tutorial you will learn to make LED Cube using arduino board based on atmega chip. is cheap and simple to use.
To make this prototype I am using:
  • Led
  • Resistor
  • atmega8l-8pu
  • Jumper wire
  • Breadboard 

Schema



download

 Geekcreit® 375pcs 3MM 5MM LED Light Emitting Diode Beads Resistance Lights Kits Bulb Lamp 5Pcs DIP28 ATmega328P-PU MCU IC Chip With Arduino UNO Bootloader
Geekcreit® 375pcs 3MM 5MM LED Light Emitting Diode Beads Resistance Lights Kits Bulb Lamp


5Pcs DIP28 ATmega328P-PU MCU IC Chip With Arduino UNO Bootloader

Code

Code



  int Anode[4]={A5,A4,A3,A2}; //led Anodes
  int Led[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,A0,A1}; //led rows

  
 
void setup()
{
  
  for(int i = 0; i<16; i++)   
  {
    pinMode(Led[i], OUTPUT);  //setting rows to ouput
  }
  
  for(int i = 0; i<4; i++)
  {
    pinMode(Anode[i], OUTPUT);  //setting Anodes to output
  }
  
  
}

void loop()
{
  allOff();
  EdgeDown();
  flicker();
  EdgeDown1();
  flicker();
  turnhor();
  turnver();
  turnverr();
}
//turn all off
void allOff()
 {
   allledOff();
   allanodeOff();
 }
 

void turnver()
{
 for(int y = 0; y<6; y++)
 {  
  for(int i = 0; i<4; i++)
  {  
    digitalWrite(Anode[i], 1);
    turnallledOn();
    turnallledOff();
    digitalWrite(Anode[i], 0);
  }
 }
}
void turnverr()
{
   allanodeOff();
    allledOn();
 for(int y = 0; y<6; y++)
 {  
    turnallanodeOn();
    turnallanodeOff;
 }
}
void turnhor()
{ 
  allanodeOn();
 for(int y = 0; y<5; y++)
  {  
    turnallledOn();
    turnallledOff();
  }
}
void EdgeDown()
{
    allanodeOn();
  for(int x = 600; x != 0; x -=50)
  {
    allledOff();
      digitalWrite(Led[0], 0);
      digitalWrite(Led[1], 0);
      digitalWrite(Led[2], 0);
      digitalWrite(Led[3], 0);
      delay(x);
      digitalWrite(Led[0], 1);
      digitalWrite(Led[1], 1);
      digitalWrite(Led[2], 1);
      digitalWrite(Led[3], 1);
      digitalWrite(Led[4], 0);
      digitalWrite(Led[13], 0);
      digitalWrite(Led[12], 0);
      digitalWrite(Led[11], 0);
      delay(x);
      digitalWrite(Led[4], 1);
      digitalWrite(Led[13], 1);
      digitalWrite(Led[12], 1);
      digitalWrite(Led[11], 1);
      digitalWrite(Led[10], 0);
      digitalWrite(Led[15], 0);
      digitalWrite(Led[14], 0);
      digitalWrite(Led[5], 0);
      delay(x);
      digitalWrite(Led[10], 1);
      digitalWrite(Led[15], 1);
      digitalWrite(Led[14], 1);
      digitalWrite(Led[5], 1);
      digitalWrite(Led[6], 0);
      digitalWrite(Led[7], 0);
      digitalWrite(Led[8], 0);
      digitalWrite(Led[9], 0);
      delay(x);
  }
}
void EdgeDown1()
{
    allanodeOn();
  for(int x = 600; x != 0; x -=50)
  {
    allledOff();
      digitalWrite(Led[0], 0);
      digitalWrite(Led[11], 0);
      digitalWrite(Led[10], 0);
      digitalWrite(Led[9], 0);
      delay(x);
      digitalWrite(Led[0], 1);
      digitalWrite(Led[11], 1);
      digitalWrite(Led[10], 1);
      digitalWrite(Led[9], 1);
      digitalWrite(Led[1], 0);
      digitalWrite(Led[12], 0);
      digitalWrite(Led[15], 0);
      digitalWrite(Led[8], 0);
      delay(x);
      digitalWrite(Led[1], 1);
      digitalWrite(Led[12], 1);
      digitalWrite(Led[15], 1);
      digitalWrite(Led[8], 1);
      digitalWrite(Led[2], 0);
      digitalWrite(Led[13], 0);
      digitalWrite(Led[14], 0);
      digitalWrite(Led[7], 0);
      delay(x);
      digitalWrite(Led[2], 1);
      digitalWrite(Led[13], 1);
      digitalWrite(Led[14], 1);
      digitalWrite(Led[7], 1);
      digitalWrite(Led[3], 0);
      digitalWrite(Led[4], 0);
      digitalWrite(Led[5], 0);
      digitalWrite(Led[6], 0);
      delay(x);
  }
}
//flicker off
void flicker()
{
  allanodeOn();
  for(int i = 0; i< 150; i+=5)
  {
    allledOff();
    delay(i+50);
    allledOn();
    delay(i);
  }
}
 void allledOn()
{
  for(int j = 0; j<16; j++)
  {
    digitalWrite(Led[j], 0);
  }
}
void allledOff()
{
  for(int j = 0; j<16; j++)
  {
    digitalWrite(Led[j], 1);
  }
}
void turnallledOn()
{
  for(int j = 0; j<12; j++)
  {
    digitalWrite(Led[j], 0);
  delay(15);
  }
}
void turnallledOff()
{
  for(int j = 0; j<12; j++)
  {
    digitalWrite(Led[j], 1);
  delay(25);
  }
}
void allanodeOn()
{
  for(int j = 0; j<4; j++)
  {
    digitalWrite(Anode[j], 1);
  }
}
void allanodeOff()
{
  for(int j = 0; j<4; j++)
  {
    digitalWrite(Anode[j], 0);
  }
}
void turnallanodeOff()
{
  for(int j = 0; j<4; j++)
  {
    digitalWrite(Anode[j], 0);
  delay(10);
  }
}
void turnallanodeOn()
{
  for(int j = 0; j<4; j++)
  {
    digitalWrite(Anode[j], 1);
  delay(10);
  }
}

No comments:

Post a Comment