Introduction: Arduino Simulator - LED Chaser With 20 LEDs and Arduino UNO

Welcome to this instructable. There are hundreds of LED chaser projects already available. why one more? I really don't know. Maybe, we are fond of light and never get enough fun, maybe!

I am using Wokwi Arduino Simulator to demonstrate all the LED effects online easily without burning my hand or pocket ;)

Supplies

Arduino UNO

20 LEDs

Connecting wires

Time and mood ;)

Step 1: The Arduino Code

The live simulation link is here

The code pasting here doesn't look good. You can always refer to the link above which presents the code in the state of the art editor

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

Step 2: Connection Diagram

Step 3: Help / Support / Comments /suggestions /feedback / Interested?

Please leave a comment here or hop on to Wokwi Discord channel