I need help with writing an LED Pattern code

Is there a way to write this code without having to copy and paste numerous times? This code works, but I want it to use for(int i=0, i<13; i++) for the first pattern have a break with the LED's off for 750ms and then blink both LEDs for 500ms 6 times and break with the LEDs off for 1 second. I'm just not sure how to accomplish this.

void setup() {
  // put your setup code here, to run once:
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  

}

void loop() {
  // put your main code here, to run repeatedly:

digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //1
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //2
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //3
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //4
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //5
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //6
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //7
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //8
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //9
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200);  //10
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200); //11
digitalWrite(11, HIGH); 
digitalWrite(12, LOW); delay(200);
digitalWrite(11, LOW); 
digitalWrite(12, HIGH); delay(200); //12

digitalWrite(11, LOW); 
digitalWrite(12, LOW); delay(750);
 
  digitalWrite(11, HIGH); 
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);
  digitalWrite(11, HIGH); 
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);
    digitalWrite(11, HIGH); 
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);
    digitalWrite(11, HIGH); 
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);
    digitalWrite(11, HIGH); ;
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);
    digitalWrite(11, HIGH); 
  digitalWrite(12, HIGH); delay(500);
  digitalWrite(11, LOW); 
  digitalWrite(12, LOW); delay(500);

  digitalWrite(11, LOW); delay(1000);
  digitalWrite(12, LOW); delay(1000);

}

void swap(int swap_delay) {
    digitalWrite(11, HIGH); 
    digitalWrite(12, LOW); delay(swap_delay);
    digitalWrite(11, LOW); 
    digitalWrite(12, HIGH); delay(swap_delay);
}

void loop() {
    swap(200);
    swap(1000);
    for (int index = 0; index < 10; index++) {
        swap(200);
    }
    // etc
}

This is what I need it to do. I am still very new at this stuff and I'm not sure what to do with what er_name_not_found posted.
https://youtube.com/shorts/xBWBxAHsU7U?feature=share

You replace your loop function with the one in the reply.
You add the swap function before your new loop function.
Everything else in your code remains the same.

Hello
Below you will find a simple LED sequncer using the delay() function.
You have to change these array´s to you timing requierements only.

constexpr unsigned long TimesFirstSeq[] {1000, 1000, 1000, 500};
constexpr unsigned long TimesSecondSeq[] {1000, 1000, 1000, 500};

Test it.

constexpr unsigned long TimesFirstSeq[] {1000, 1000, 1000, 500};
constexpr unsigned long TimesSecondSeq[] {1000, 1000, 1000, 500};
const byte LED1 {11};
const byte LED2 {12};

void toogle(byte ledPin)
{
  digitalWrite(ledPin, !digitalRead(ledPin));
}
void makeSequence(unsigned long delayTimes)
{
  delay(delayTimes);
  toogle(LED1);
  toogle(LED2);
}
void setup()
{
  Serial.begin(9600);
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  Serial.println(F("let's go"));
}
void loop()
{
  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, LOW);
  for (auto Time : TimesFirstSeq) makeSequence(Time);

  digitalWrite(LED1, HIGH);
  digitalWrite(LED2, HIGH);
  for (auto Time : TimesSecondSeq) makeSequence(Time);
}

Have nice day and enjoy coding in C++

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