I have this code:
//LED Patterns
int L1 = 23;
int L2 = 22;
int L3 = 21;
int L4 = 20;
int L5 = 19;
int L6 = 18;
int L7 = 17;
int L8 = 16;
int L9 = 15;
int L10 = 14;
int buttonPin = 39; //the number of the pushbutton pin
int de=50; // delay time
int p=0; // variable for pattem
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
pinMode(L9, OUTPUT);
pinMode(L10, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
{
p++;
delay(100);
}
if(p==1)
{
digitalWrite(L1,1);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,1);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,1);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,1);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,1);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,1);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,1);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,1);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,1);
digitalWrite(L10,0);
delay(de);
digitalWrite(L1,0);
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,1);
delay(de);
}
}
It is part of a longer code I put together to emulate Christmas Tree lights. I show you only this part for proof of concept.
I'm struggling to incorporate a Potentiometer input into the code which can dim/brighten the lights without interuppting the blinking patterns. I've tried several variations but they either end up blocking or changing the lights to be constant.
One attempt was this:
//LED Patterns
int L1 = 23;
int L2 = 22;
int L3 = 21;
int L4 = 20;
int L5 = 19;
int L6 = 18;
int L7 = 17;
int L8 = 16;
int L9 = 15;
int L10 = 14;
int buttonPin = 39; //the number of the pushbutton pin
[b]int potPin = 38;[/b]
int de=50; // delay time
int p=0; // variable for pattem
int buttonState = 0; // variable for reading the pushbutton status
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);
pinMode(L7, OUTPUT);
pinMode(L8, OUTPUT);
pinMode(L9, OUTPUT);
pinMode(L10, OUTPUT);
pinMode(buttonPin, INPUT);
[b]pinMode(potPin, INPUT);[/b]
}
void loop()
{
buttonState = digitalRead(buttonPin);
[b]potPinValue = analogRead(potPin);[/b]
if (buttonState == HIGH)
{
p++;
delay(100);
}
if(p==1)
{
digitalWrite(L1,1);
[b]analogWrite(L1, potPinValue/4); [/b] <-- do this every time a light is ON.
digitalWrite(L2,0);
digitalWrite(L3,0);
digitalWrite(L4,0);
digitalWrite(L5,0);
digitalWrite(L6,0);
digitalWrite(L7,0);
digitalWrite(L8,0);
digitalWrite(L9,0);
digitalWrite(L10,0);
delay(de);
....
}
But of course it just blocks.
Is there anyway to add a potentiometer on another pin and dim the LEDs. The request is also that the delay stays (can this be done using delays?). I will move onto states in my next hobby project. I already know that delays are bad, but I like to start from the ground up and work at more and more eloquent tasks.
TL;DR
I'm trying to blink LEDs (using a set delay pattern) and dim them using a potentiometer at the same time. How can I go about doing this?
Many thanks!