4 led will blink simultaneously

Hi dear, i need help, i am new Arduino ide.
I want to make 4 led blink for esp32.
All led will work same time. Not lime by line. All led blink start after esp32 switch on. How to write code?
I write code but that code work one after another. But i need simultaneously.
Please help me..

Could you explain further what you mean with "not line by line" and also post the code that does not work?

1 Like

const int PIN4 = 4 ;
const int PIN5 = 5 ;
const int PIN13 = 13 ;
const int PIN14 = 14;
const int PIN15 = 15;
const int PIN18 = 18;
const int PIN21 =21 ;
const int PIN22 = 22 ;
const int PIN33 = 33 ;

void setup() {
pinMode(PIN4, OUTPUT);
pinMode(PIN5, OUTPUT);
pinMode(PIN13, OUTPUT);
pinMode(PIN14, OUTPUT);
pinMode(PIN15, OUTPUT);
pinMode(PIN18, OUTPUT);
pinMode(PIN21, OUTPUT);
pinMode(PIN22, OUTPUT);
pinMode(PIN33, OUTPUT);
}

void loop() {

//pin4
digitalWrite(PIN4, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second, 2 min
digitalWrite(PIN4, LOW); // turn LED off (0V)
delay(1800000); // wait for a second , 30 min

// pin5
digitalWrite(PIN5, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN5, LOW); // turn LED off (0V)
delay(600000); // 10min

// pin13
digitalWrite(PIN13, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1 min
digitalWrite(PIN13, LOW); // turn LED off (0V)
delay(1200000); // wait for a second , 20 min

// pin14
digitalWrite(PIN14, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 30 min
digitalWrite(PIN14, LOW); // turn LED off (0V)
delay(1800000); // 1 min

// pin15
digitalWrite(PIN15, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second, 10 min
digitalWrite(PIN15, LOW); // turn LED off (0V)
delay(600000); // 1 min

// pin18
digitalWrite(PIN18, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 15 min
digitalWrite(PIN18, LOW); // turn LED off (0V)
delay(900000); // 1 min

// pin21
digitalWrite(PIN21, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second 2 min
digitalWrite(PIN21, LOW); // turn LED off (0V)
delay(1200000); // 20 min

// pin22
digitalWrite(PIN22, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN22, LOW); // turn LED off (0V)
delay(900000); // 15 min

// pin33
digitalWrite(PIN33, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1min
digitalWrite(PIN33, LOW); // turn LED off (0V)
delay(300000); // 5 mn

}

I want to all led work simultaneously. But this code running one after another.

Better place your sketch inside "code" tags:

image

const int PIN4 = 4 ;
const int PIN5 = 5 ;
const int PIN13 = 13 ;
const int PIN14 = 14;
const int PIN15 = 15;
const int PIN18 = 18;
const int PIN21 =21 ;
const int PIN22 = 22 ;
const int PIN33 = 33 ;

void setup() {
pinMode(PIN4, OUTPUT);
pinMode(PIN5, OUTPUT);
pinMode(PIN13, OUTPUT);
pinMode(PIN14, OUTPUT);
pinMode(PIN15, OUTPUT);
pinMode(PIN18, OUTPUT);
pinMode(PIN21, OUTPUT);
pinMode(PIN22, OUTPUT);
pinMode(PIN33, OUTPUT);
}

void loop() {

//pin4
digitalWrite(PIN4, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second, 2 min
digitalWrite(PIN4, LOW); // turn LED off (0V)
delay(1800000); // wait for a second , 30 min

// pin5
digitalWrite(PIN5, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN5, LOW); // turn LED off (0V)
delay(600000); // 10min

// pin13
digitalWrite(PIN13, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1 min
digitalWrite(PIN13, LOW); // turn LED off (0V)
delay(1200000); // wait for a second , 20 min

// pin14
digitalWrite(PIN14, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 30 min
digitalWrite(PIN14, LOW); // turn LED off (0V)
delay(1800000); // 1 min

// pin15
digitalWrite(PIN15, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second, 10 min
digitalWrite(PIN15, LOW); // turn LED off (0V)
delay(600000); // 1 min

// pin18
digitalWrite(PIN18, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 15 min
digitalWrite(PIN18, LOW); // turn LED off (0V)
delay(900000); // 1 min

// pin21
digitalWrite(PIN21, HIGH); // turn LED on (3.3V)
delay(120000); // delay is in milliseconds; so wait one second 2 min
digitalWrite(PIN21, LOW); // turn LED off (0V)
delay(1200000); // 20 min

// pin22
digitalWrite(PIN22, HIGH); // turn LED on (3.3V)
delay(30000); // delay is in milliseconds; so wait one second , 0.5 min
digitalWrite(PIN22, LOW); // turn LED off (0V)
delay(900000); // 15 min

// pin33
digitalWrite(PIN33, HIGH); // turn LED on (3.3V)
delay(60000); // delay is in milliseconds; so wait one second , 1min
digitalWrite(PIN33, LOW); // turn LED off (0V)
delay(300000); // 5 mn

}

Maybe if you got rid of all the delays.
And used more descriptive pin names

Hello gmneamul

Consider

  • not tested - compiled -
constexpr uint8_t LedPins[] {4, 5, 13, 14, 15, 18, 21, 22, 33};
constexpr uint32_t BlinkTime {1000};

void setup()
{
  for (auto &LedPin : LedPins) pinMode(LedPin, OUTPUT);
}
void loop()
{
  for (auto &LedPin : LedPins) digitalWrite(LedPin, digitalRead(LedPin) ? LOW : HIGH);
  delay(BlinkTime);
}

Have a nice day and enjoy coding in C++.

@paulpaulson:

Tested and works:

https://wokwi.com/projects/363277074001096705

:wink:

here's another way..


struct LED {
  byte Pin;
  bool On;
  unsigned long OnTime;
  unsigned long OffTime;
  unsigned long lastMillis;
};

LED LEDS[9] = {{4, false, 1000, 1000, 0}, {5, false, 5000, 5000, 0}, {13, false, 1000, 2000, 0}
  , {14, false, 1000, 1000, 0}, {15, false, 2000, 2000, 0}, {18, false, 500, 500, 0}
  , {21, false, 5000, 5000, 0}, {22, false, 300, 300, 0}, {33, false, 100, 100, 0}
};





void setup() {
  //set leds pins to outputs
  for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++)
  {
    pinMode(LEDS[i].Pin, OUTPUT);
  }

}

void loop() {

  for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++) {

    if (LEDS[i].On) {
      //led is on
      if (millis() - LEDS[i].lastMillis >= LEDS[i].OnTime) {
        LEDS[i].lastMillis = millis();
        digitalWrite(LEDS[i].Pin, LOW);
        LEDS[i].On = false;
      }
    } else {
      //led is off
      if (millis() - LEDS[i].lastMillis >= LEDS[i].OffTime) {
        LEDS[i].lastMillis = millis();
        digitalWrite(LEDS[i].Pin, HIGH);
        LEDS[i].On = true;
      }

    }

  }


}

change the on times and off times for what you desire..
good luck.. ~q

1 Like

just in case

const byte Leds [] = { 10, 11, 12, 13 };

void loop () {
    for (unsigned n = 0; n < sizeof(Leds); n++)
        digitalWrite (Leds [n], ! digitalRead (Leds [n]));

    delay (250);
}

void setup () {
    for (unsigned n = 0; n < sizeof(Leds); n++)
        pinMode (Leds [n], OUTPUT);
}

1 Like

thank you so much for helping me. and my problem is solved.

1 Like

need another help, i want to when will esp board start then all led will high, but this code when led start then all led stay off.

like this..

struct LED {
  byte Pin;
  bool On;
  unsigned long OnTime;
  unsigned long OffTime;
  unsigned long lastMillis;
};

LED LEDS[9] = {{4, true, 1000, 1000, 0}, {5, true, 5000, 5000, 0}, {13, true, 1000, 2000, 0}
  , {14, true, 1000, 1000, 0}, {15, true, 2000, 2000, 0}, {18, true, 500, 500, 0}
  , {21, true, 5000, 5000, 0}, {22, true, 300, 300, 0}, {33, true, 100, 100, 0}
};





void setup() {
  //set leds pins to outputs
  for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++)
  {
    pinMode(LEDS[i].Pin, OUTPUT);
    digitalWrite(LEDS[i].Pin, HIGH);
  }

}

void loop() {

  for (int i = 0; i < sizeof(LEDS) / sizeof(LED); i++) {

    if (LEDS[i].On) {
      //led is on
      if (millis() - LEDS[i].lastMillis >= LEDS[i].OnTime) {
        LEDS[i].lastMillis = millis();
        digitalWrite(LEDS[i].Pin, LOW);
        LEDS[i].On = false;
      }
    } else {
      //led is off
      if (millis() - LEDS[i].lastMillis >= LEDS[i].OffTime) {
        LEDS[i].lastMillis = millis();
        digitalWrite(LEDS[i].Pin, HIGH);
        LEDS[i].On = true;
      }
    }
  }
}

have fun.. ~q

1 Like

thanks a lot.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.