Arduino Simulator - LED Chaser With 20 LEDs and Arduino UNO
by sharepksn in Circuits > Arduino
18 Views, 0 Favorites, 0 Comments
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 ;)
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; } } }
Connection Diagram
Help / Support / Comments /suggestions /feedback / Interested?
Please leave a comment here or hop on to Wokwi Discord channel