# Simultaneously led blinking

**URL:** <https://forum.arduino.cc/t/simultaneously-led-blinking/1214713>\
**Category:** LEDs and Multiplexing\
**Created:** [January 23, 2024, 6:05am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713 "2024-01-23T06:05:33Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![anonymous\_232665](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/anonymous_232665/32/1036838_2.png) [@anonymous\_232665](https://forum.arduino.cc/u/anonymous_232665)\
**Post date:** [January 23, 2024, 6:05am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/1 "2024-01-23T06:05:33Z")

</div>

i am wondering how to create an aurdino code where an led blinks every half second forever, while another led blinks 5 times every seconds, then stops. how can i do these simultaneously?

---

<div class="post-metadata">

**Author:** ![Coding\_Badly](https://avatars.discourse-cdn.com/v4/letter/c/f14d63/32.png) [@Coding\_Badly](https://forum.arduino.cc/u/Coding_Badly)\
**Post date:** [January 23, 2024, 6:06am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/2 "2024-01-23T06:06:53Z")

</div>

School assignment?

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 23, 2024, 6:31am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/3 "2024-01-23T06:31:59Z")

</div>

If you have an Arduino UNO/NANO/MEGA board, you can accomplish the task using the _millis()_ function.

---

<div class="post-metadata">

**Author:** ![noiasca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/noiasca/32/1126910_2.png) [@noiasca](https://forum.arduino.cc/u/noiasca)\
**Post date:** [January 23, 2024, 6:57am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/4 "2024-01-23T06:57:07Z")

</div>

> [@anonymous\_232665](#):
>
> how can i do these simultaneously?

You have to write code which is doing the blinking on one LED while blinking the other LED in a different interval.

Start with the Example from the IDE "Blink Without Delay"

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [January 23, 2024, 7:41am UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/5 "2024-01-23T07:41:10Z")

</div>

> [@anonymous\_232665](#):
>
> how can i do these simultaneously?

Hello [anonymous\_232665](https://forum.arduino.cc/u/anonymous_232665)

Welcome to the world's best Arduino forum ever.

Consider this example for your own sketch design studies.

```arduino
//https://forum.arduino.cc/t/simultaneously-led-blinking/1214713
//https://europe1.discourse-cdn.com/arduino/original/4X/7/e/0/7e0ee1e51f1df32e30893550c85f0dd33244fb0e.jpeg
#define ProjectName "Simultaneously led blinking"
#define NotesOnRelease "Arduino MEGA tested"
enum TimerControl {Halt, Run};
enum Timer {One, Two};
enum OnOff {Off, On};
// make variables
constexpr uint8_t LedPins[] {9, 12};
constexpr uint8_t NumberOfBlinks {7};
constexpr uint32_t Interval[] {1000, 1000};
constexpr uint32_t SwitchedOnTime[] {50, 50};
// make structures
struct LEDBLINKS
{
  uint8_t name;
  uint8_t pin;
  uint32_t interval[2];
  uint8_t control;
  uint32_t now;
  void run(uint32_t currentMillis)
  {
    if (currentMillis - now >= interval[digitalRead(pin)] and control)
    {
      now = currentMillis;
      digitalWrite(pin, digitalRead(pin) ? LOW : HIGH);
      if (name == One) control--;
    }
  }
};
LEDBLINKS ledBlinks[]
{
  {One, LedPins[One], Interval[One] - SwitchedOnTime[One], SwitchedOnTime[One] , NumberOfBlinks * 2, 0},
  {Two, LedPins[Two], Interval[Two] - SwitchedOnTime[Two], SwitchedOnTime[Two] , Run, 0},
};
// make support
void heartBeat(const uint8_t LedPin, uint32_t currentMillis)
{
  static bool setUp = false;
  if (setUp == false) pinMode (LedPin, OUTPUT), setUp = true;
  digitalWrite(LedPin, (currentMillis / 500) % 2);
}
// make application
void setup()
{
  Serial.begin(115200);
  Serial.print("Source: "), Serial.println( __FILE__ );
  Serial.print(ProjectName), Serial.print(" - "), Serial.println(NotesOnRelease);
  Serial.print("led test");
  for (auto LedPin : LedPins)
  {
    Serial.print(" . ");
    pinMode(LedPin, OUTPUT);
    digitalWrite(LedPin, HIGH);
    delay(1000);
    digitalWrite(LedPin, LOW);
    delay(1000);

  }
  Serial.println("done\n");
  Serial.println(" =-> and off we go\n");
}
void loop()
{
  uint32_t currentMillis = millis();
  heartBeat(LED_BUILTIN, currentMillis);
  for (auto &ledBlink : ledBlinks) ledBlink.run(currentMillis);
}

```

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

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 23, 2024, 3:00pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/6 "2024-01-23T15:00:58Z")

</div>

@anonymous_232665

> [@GolamMostafa](#):
>
> If you have an Arduino UNO/NANO/MEGA board, you can accomplish the task using the _millis()_ function.

**Sketch:**

```arduino
unsigned long present1Millis = millis(); //record current time
unsigned long present2Millis = millis(); //record current time
#define LED1 13
#define LED2 10
byte blinkCounter = 0;
bool flag = false;
int led1State = LOW;
int led2State = LOW;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  digitalWrite(LED1, led1State); //LED1 is off
  digitalWrite(LED2, led2State);
}

void loop()
{
  if (millis() - present1Millis >= 250) //testing
  {
    led1State = !led1State;
    digitalWrite(LED1, led1State);
    present1Millis = millis();
  }

  if (flag == false)
  {
    if (millis() - present2Millis >= 100) //testing
    {
      led2State = !led2State;
      digitalWrite(LED2, led2State);
      present2Millis = millis();
      blinkCounter++;
      if (blinkCounter == 10)
      {
        blinkCounter = 0;
        flag = true;
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 23, 2024, 3:05pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/7 "2024-01-23T15:05:15Z")

</div>

Did you compile your sketch -- I have some errors?

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [January 23, 2024, 3:52pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/8 "2024-01-23T15:52:20Z")

</div>

It´s fine for me.

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 23, 2024, 3:55pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/9 "2024-01-23T15:55:11Z")

</div>

Which Arduino you have used?

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [January 23, 2024, 3:56pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/10 "2024-01-23T15:56:45Z")

</div>

Arduino MEGA tested

```arduino
Sketch uses 3508 bytes (1%) of program storage space. Maximum is 253952 bytes.
Global variables use 469 bytes (5%) of dynamic memory, leaving 7723 bytes for local variables. Maximum is 8192 bytes.

```

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [January 23, 2024, 4:36pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/11 "2024-01-23T16:36:19Z")

</div>

This time, the sketch is compiled/Upload fine in my UNO; however, both LEDs are blinking indefenitely at their respective rates. Short intervaled LED should stop after making five blinks.

---

<div class="post-metadata">

**Author:** ![paulpaulson](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/paulpaulson/32/363643_2.png) [@paulpaulson](https://forum.arduino.cc/u/paulpaulson)\
**Post date:** [January 23, 2024, 4:55pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/12 "2024-01-23T16:55:24Z")

</div>

Configure it:

```arduino
constexpr uint8_t LedPins[] {9, 12};
constexpr uint8_t NumberOfBlinks {7};
constexpr uint32_t Interval[] {1000, 1000};
constexpr uint32_t SwitchedOnTime[] {50, 50};

```

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [January 23, 2024, 6:22pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/13 "2024-01-23T18:22:19Z")

</div>

Code dump pileon... just using the Uno/Nano...

```arduino
#define LED_BUILTIN 13 // for clarity
#define FIVETIM 5 // "blink" five times
#define FIVESEC 5000 // five seconds timer
#define HALFsec 500 // half second blink

long oldTimerHALFsec = 0; // HALF second timer
long oldTimerFIVEsec = 0; // FIVE seconds timer

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if (millis() - oldTimerHALFsec > HALFsec) {
    oldTimerHALFsec = millis();
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    if (digitalRead(LED_BUILTIN))
      Serial.print("ON");
    else Serial.println(" OFF");
  }
  if (millis() - oldTimerFIVEsec > FIVESEC) {
    oldTimerFIVEsec = millis();
    for (int i = 0; i < FIVETIM; i++) {
      Serial.print(" blink_");
      Serial.print(i + 1); // 1, 2, 3, 4, 5
      delay(50);
    }
    Serial.println();
  }
}

```

---

<div class="post-metadata">

**Author:** ![Coding\_Badly](https://avatars.discourse-cdn.com/v4/letter/c/f14d63/32.png) [@Coding\_Badly](https://forum.arduino.cc/u/Coding_Badly)\
**Post date:** [January 23, 2024, 6:50pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/14 "2024-01-23T18:50:10Z")

</div>

> [@xfpd](#):
>
> Code dump pileon...

If that's what we're doing... Which version does not drift? And how can that drift be avoided?

---

<div class="post-metadata">

**Author:** ![xfpd](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/xfpd/32/1120236_2.png) [@xfpd](https://forum.arduino.cc/u/xfpd)\
**Post date:** [January 23, 2024, 7:11pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/15 "2024-01-23T19:11:10Z")

</div>

> [@Coding\_Badly](#):
>
> Which version does not drift?

The one using cesium.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [July 21, 2024, 7:11pm UTC](https://forum.arduino.cc/t/simultaneously-led-blinking/1214713/16 "2024-07-21T19:11:56Z")

</div>

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