The Project gives you examples of a few chaser patterns. Feel free to tinker with the code. Kindly share your versions in the comments. I will be glad to include them in the article as well. In this project, I am using 20 Blue LEDs and a series resistor of 220 ohms. You can change the colours of the LEDs by going to the diagram.json file.
https://wokwi.com/arduino/projects/303372512437207617
Code for the LED chaservoid 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;
}
}
}
Brief description of the main functions in the LED chaserclearall();
The above function turns off all the LEDs
fillall();
The Above function turns on all the LEDs
onrun(20);
This function will turn on LEDs from Left to right (initially all the LEDs will be made off). The parameter sent in the function is the delay in milliseconds.
offrun(20);
This function will turn OFF LEDs from right to the left(initially all the LEDs will be turned on). The parameter sent in the function is the delay in milliseconds.
alternate(200);
This function will toggle alternate LEDs. The delay will be mentioned in milliseconds. this will control the toggle speed.
stack();
This function will stack the LEDs (turns on LEDs one by one)
drawstack();
This function will remove the LEDs (turns off all the LEDs on by one)
Help + Support + feedback:Please hop on the Wokwi Discord server we can discuss with the growing community there :)
Please hit the like button if you liked it ;-)
Share your interesting projects and browse through several curious projects from fellow developers and makers on Facebook Wokwi Group!
Stay Safe!
Don't stop learning!
#wokwiMakes
Comments