Reputation: 59
I want to build a circuit with 8 LEDs glow in sequence from left to right 3 at a time. I have written the code, but 3 LEDs are not working at all. Please let me know why is this.
tinkercad link:
code:
int ledpin[] = {
5,
6,
7,
8,
9,
10,
11,
12
};
int switchPinStatus = 0;
int delay1 = 50;
void setup() {
pinMode(4, INPUT);
for (int i = 0; i <= 7; i++)
pinMode(ledpin[i], OUTPUT);
}
void sequence() {
for (int i = 0; i <= 8; i++) {
for (int j = i; j <= i + 2; j++) {
analogWrite(ledpin[j], 100);
delay(delay1);
}
analogWrite(ledpin[i], 0);
}
//for backwards
for (int i = 7; i >= -1; i--) {
for (int j = i; j >= i - 2; j--) {
analogWrite(ledpin[j], 100);
delay(delay1);
}
analogWrite(ledpin[i], 0);
}
}
void loop() {
switchPinStatus = digitalRead(4);
while (switchPinStatus == 1) {
for (int i = 0; i < 3; i++) {
{
sequence();
}
switchPinStatus = digitalRead(4);
}
}
}
Upvotes: 0
Views: 363
Reputation: 404
This code turns each LED on in order and turns off the third one behind.
int ledpin[] = {5,6,7,8,9,10,11,12};
int delay1 = 100;
void setup(){
pinMode(4, INPUT);
for(int i = 0; i <= 7; i++)
pinMode(ledpin[i], OUTPUT);
}
void sequence(){
for(int i=0;i <= 10;i++)
{
if(i <= 7){
digitalWrite(ledpin[i],HIGH);
}
if(i >= 3){
digitalWrite(ledpin[i-3], LOW);
}
delay(delay1);
}
//for backwards
for(int i=7;i >= -3;i--)
{
if(i >= 0){
digitalWrite(ledpin[i],HIGH);
}
if(i <= 4){
digitalWrite(ledpin[i+3], LOW);
}
delay(delay1);
}
}
void loop(){
if(digitalRead(4) == 1){
for (int i = 0; i < 3; i++) {
{
sequence();
}
}
}
}
Upvotes: 1