LED chaser projects - 20 LEDs and Arduino UNO

Introduction

You will get about 6 functions for LED animations. You can tinker with the Arduino code online, save your version of the project, and share it with others online. I am sure I will be happy to share your projects as well here. In this project, I am using 20 Blue LEDs and a series resistor of 220 ohms, in the simulations, any value of the resistors will work, but in real cases, you have to care about power dissipation across LEDs and resistors. Diagram.json can be edited to change the parameters of the LEDs.

Online Arduino Project link - Wokwi Arduino Simulator

https://wokwi.com/arduino/projects/303372512437207617

Wokwi Arduino Simulator - LED chaser code project

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;
}
}
}

Description of the main functions

clearall();

 As the name suggests, this function will turn off all the LEDs

fillall();

This function turns on all the LEDs in one go

onrun(20);

This function will turn on the LEDs in the LED chaser project (from LEft to right). This will first turn off all the LEDs. the parameter you send is the delay in milliseconds. 

offrun(20);

This function will turn off LEDs in the opposite way as the above function. The parameter you send is the delay in milliseconds between two LEDs.

alternate(200);

 This function will toggle the LEDs.  The parameter sent is the delay in milliseconds.

stack();

This function will stack...

Read more »