/***************************************************************************
here is a summary of the code:
The code imports the Arduino.h library, which contains the necessary functions for controlling LEDs.
The code defines an array of LED pins, and the number of LEDs.
The code defines a delay time between LED changes.
The code defines a variable to store the current LED pattern.
The setup() function sets the LED pins as outputs.
The loop() function changes the LED pattern and does the appropriate thing for the current pattern.
The code has 8 different LED patterns:
All LEDs on
Left to right chase
Right to left chase
Scrolling diagonal chase
Random on/off
Blinking
Fading
Breathing
The code also defines a delay time between LED changes.
This delay time can be adjusted to change the speed of the patterns.
I hope this summary is helpful. Let me know if you have any other questions.
**********************************************/
#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
const int numLEDs = 13;
const int delayTime = 1000;
int currentPattern = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4); // Change the address if needed
void setup() {
lcd.init();
lcd.backlight();
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
currentPattern = (currentPattern + 1) % 8;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pattern: ");
lcd.setCursor(0, 1);
lcd.print("by arvind patil 23/08/23: ");
lcd.print(currentPattern);
switch (currentPattern) {
case 0:
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH);
}
break;
case 1:
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
}
break;
case 2:
for (int i = numLEDs - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
}
break;
case 3:
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
if (i < numLEDs - 1) {
digitalWrite(ledPins[i + 1], HIGH);
}
}
for (int i = numLEDs - 1; i >= 1; i--) {
digitalWrite(ledPins[i], LOW);
if (i > 0) {
digitalWrite(ledPins[i - 1], HIGH);
}
}
break;
case 4:
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], random(0, 2));
}
break;
case 5:
for (int i = 0; i < numLEDs; i++) {
digitalWrite(ledPins[i], HIGH);
delay(delayTime);
digitalWrite(ledPins[i], LOW);
delay(delayTime);
}
break;
case 6:
for (int i = 0; i < 255; i++) {
for (int j = 0; j < numLEDs; j++) {
analogWrite(ledPins[j], i);
}
delay(delayTime);
}
for (int i = 255; i >= 0; i--) {
for (int j = 0; j < numLEDs; j++) {
analogWrite(ledPins[j], i);
}
delay(delayTime);
}
break;
case 7:
for (int i = 0; i < 255; i++) {
for (int j = 0; j < numLEDs; j++) {
analogWrite(ledPins[j], i);
}
delay(delayTime / 2);
for (int j = 0; j < numLEDs; j++) {
analogWrite(ledPins[j], 255 - i);
}
delay(delayTime / 2);
}
break;
}
}