Hack star
Published © CC0

Virtual Arduino Simulator LED chaser - 20 LEDs - 2022

Enjoy these LED simulations and make your own. use wokwi Arduino simulator to create beautifully looking LED chasers!

BeginnerFull instructions provided1 hour3,718

Things used in this project

Story

Read more

Schematics

Schematics

Code

LED chaser code

Arduino
  void setup()
  {
    for (int pin = 0; pin <= 19; pin++)
    {
      pinMode(pin, OUTPUT);
    }
  }
//Main Loop - Switches different LED Patterns
void loop()
{
  for (int j = 0; j < 10 ; j++) {
    // onrun(20);
    //offrun(50);
    //flash(200);
    //alternate(200);
    //stack(20);
    //drawstack(random(1,20));
    chaser(50);
  }
}
void clearall()
{
  for (int pin = 0; pin <= 19; pin++)
  {
    digitalWrite(pin, LOW);
  }
}
void fillall()
{
  for (int pin = 0; pin <= 19; pin++)
  {
    digitalWrite(pin, HIGH);
  }
}
//One ON LED Run and all other OFF
void onrun(int delaytime)
{
  for (int pin = 0; pin <= 19; pin++)
  {
    clearall();
    digitalWrite(pin, HIGH);
    delay(delaytime);
  }
  for (int pin = 19; pin >= 0; pin--)
  {
    clearall();
    digitalWrite(pin, HIGH);
    delay(delaytime);
  }
}
//One OFF LED Run and all other OFF
void offrun(int delaytime)
{
  for (int pin = 0; pin <= 19; pin++)
  {
    fillall();
    digitalWrite(pin, LOW);
    delay(delaytime);
  }
  for (int pin = 19; pin >= 0; pin--)
  {
    fillall();
    digitalWrite(pin, LOW);
    delay(delaytime);
  }
}
//Flashing all LEDs ON and OFF
void flash(int delaytime)
{
  for (int i = 0; i <= 19; i++)
  {
    clearall();
    delay(delaytime);
    fillall();
    delay(delaytime);
  }
}
//Alternate Flash - Similar to Flash but alternate LEDs
void alternate(int delaytime)
{
  for (int n = 1; n <= 5; n++)
  {
    clearall();
    for (int i = 0; i <= 19; i += 2)
    {
      digitalWrite(i, HIGH);
    }
    delay(delaytime);
    clearall();
    for (int j = 1; j <= 19; j += 2)
    {
      digitalWrite(j, HIGH);
    }
    delay(delaytime);
  }
}
//Putting all LEDs one by one in a stack
void stack(int delaytime)
{
  int stack = 0;
  while (stack < 20)
  {
    for (int pos = 0; pos <= (19 - stack); pos++)
    {
      clearall();
      digitalWrite(pos, HIGH);
      drawstack(stack);
      delay(delaytime);
    }
    stack++;
  }
}
//Subfunction of the stack function
void drawstack(int stack)
{
  for (int n = 19; n > (19 - stack); n--)
  {
    if (n >= 0)
    {
      digitalWrite(n, HIGH);
      delay(20);
    }
  }
  clearall();
}
//One LED chases another LED front and back
void chaser(int delaytime)
{
  int div = 40;
  int flashtime = delaytime / div;
  int A = random(2, 7);
  int B = random(7, 12);
  int Av = 1;
  int Bv = 1;
  if (random(0, 2))
  {
    Av *= -1;
  }
  if (random(0, 2))
  {
    Bv *= -1;
  }
  for (int time = 1; time < 100; time++)
  {
    if (abs(A - B) == 1 && (Av * Bv) == -1)
    {
      for (int f = 1; f < round(div / 4); f++)
      {
        clearall();
        delay(flashtime);
        digitalWrite(A, HIGH);
        digitalWrite(B, HIGH);
        delay(flashtime);
      }
      Av *= -1;
      Bv *= -1;
      A += Av;
      B += Bv;
    }
    else
    {
      clearall();
      digitalWrite(A, HIGH);
      digitalWrite(B, HIGH);
      A += Av;
      B += Bv;
      delay(delaytime);
    }
    if (A < 0)
    {
      A = 1;
      Av *= -1;
    }
    if (B > 19)
    {
      B = 18;
      Bv *= -1;
    }
    if (A >= B)
    {
      A = B - 1;
    }
  }
}

Credits

Hack star

Hack star

75 projects • 120 followers
an Arduino enthusiast and an electronic hobbyist

Comments