/* (12 LED RUNNING SOFT LIGHTS)
int ledNum = 12;
byte ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay;
int potPin = A0;
int reading;
int bright;
int intensePin = A1;
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < ledNum; i++) {
pinMode(ledPin[i], OUTPUT);
}
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0; i < 12; i++) {
ledDelay = analogRead(potPin);
digitalWrite(ledPin[i], HIGH);
delay(ledDelay);
digitalWrite(ledPin[i], LOW);
}
for (int i = 12; i >=0; i--){
ledDelay = analogRead(potPin);
digitalWrite(ledPin[i], HIGH);
delay(ledDelay);
digitalWrite(ledPin[i], LOW);
}
}*/
/* (2 POTENTIOMETER)
const int numLEDs = 12; // Number of LEDs in the running lights
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Pins connected to LEDs
const int speedPotPin = A0; // Pin connected to the speed potentiometer
const int brightnessPotPin = A1; // Pin connected to the brightness potentiometer
int delayTime; // Variable to store delay time
int brightness; // Variable to store brightness level
void setup() {
// Set LED pins as output
for (int i = 0; i < numLEDs; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Initialize serial communication for debugging (optional)
//Serial.begin(9600);
}
void loop() {
// Read the potentiometers
int speedVal = analogRead(speedPotPin);
int brightnessVal = analogRead(brightnessPotPin);
// Map the potentiometer values to appropriate ranges
delayTime = map(speedVal, 0, 1023, 50, 500); // Adjust speed range as needed
brightness = map(brightnessVal, 0, 1023, 0, 255);
// Print values for debugging (optional)
//Serial.print("Speed: ");
//Serial.print(delayTime);
//Serial.print(" ms, Brightness: ");
//Serial.println(brightness);
// Loop through each LED and set the brightness
for (int i = 0; i < numLEDs; i++) {
analogWrite(ledPins[i], brightness);
delay(delayTime);
analogWrite(ledPins[i], 0);
}
} */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define NUM_LEDS 12
// LED pin assignments
const int ledPins[NUM_LEDS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
// Potentiometer pins
const int speedPotPin = A0;
const int brightnessPotPin = A1;
// LCD settings
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
// Initialize the LCD
lcd.init();
lcd.backlight();
// Set LED pins as outputs
for (int i = 0; i < NUM_LEDS; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Read potentiometer values
int speedValue = analogRead(speedPotPin);
int brightnessValue = analogRead(brightnessPotPin);
// Map the potentiometer values to usable ranges
int delayTime = map(speedValue, 0, 1023, 500, 50); // Speed control
int brightness = map(brightnessValue, 0, 1023, 0, 255); // Brightness control
//int delayTime = map(speedValue, 0, 1023, 50, 1000);
//int brightness = map(brightnessValue, 0, 1023, 0, 255);
// Calculate percentage values for display
int speedPercent = map(speedValue, 0, 1023, 0, 100);
int brightnessPercent = map(brightnessValue, 0, 1023, 0, 100);
// Display values on the LCD
lcd.setCursor(0, 0);
lcd.print("20x4 LCD Displaying");
lcd.setCursor(0, 1);
lcd.print("Speed: ");
lcd.print(speedPercent);
lcd.print("%");
lcd.setCursor(0, 2);
lcd.print("Brightness: ");
lcd.print(brightnessPercent);
lcd.print("%");
// Running lights loop
for (int i = 0; i < NUM_LEDS; i++) {
analogWrite(ledPins[i], brightness);
delay(delayTime);
analogWrite(ledPins[i], 0);
}
for (int i = NUM_LEDS - 2; i > 0; i--) {
analogWrite(ledPins[i], brightness);
delay(delayTime);
analogWrite(ledPins[i], 0);
}
}