Помогите в написании программы с тремя светодиодами

Помогите написать программу, где три светодиода переключаются n количество раз. Причем один раз считается не весь цикл, а только переключение между одним и другим светодиодом. Например, n=10, значит должны последовательно загораться: 1, 2, 3, 1, 2, 3, 1, 2, 3, 1 (остановится на 1 светодиоде, который останется гореть).
Если n=5, то последовательно загораются 1, 2, 3, 1, 2 и переключение останавливается, на последнем светодиоде 2.

Это заказ?

Тема перенесена в коммерческий раздел, где делают за деньги.

Сделай два счётчика в лупе. Один считает с 1 до 3 по кругу, второй с 1 до N. По первому светодиоды вкллючаешь, по второму останавливаешься.

пока ( N > 0) {
    если (кнопка нажата)  { увеличить номер текущего светодиода на 1}
    если (номер светодиода > 3)  { номер светодиода = 1}
    включить текущий светодиод
    уменьшить N на 1
}

Ещё нужно все светодиоды выключить перед включением нужного :wink:

“… доработать напильником…”

Что-то как-то не видно благодарностей от ТС.
Вот и помогай после этого…

1 лайк

За що? Где готовый, проверенный код? Где блюдечко с голубой каёмочкой? Нифига ведь не помогаете, а благодарности требуете :frowning:

Ваще, тема в коммерческом разделе, но почему-то ни одного коммерческого предложения не поступило! Где Бармалей? На Троицу в Храм пошёл?

за комплектухой :rofl:

Или в хлам наотмечался))

Всем спасибо, всё сделал:

void setup() {
  
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);


    for (int i = 0; i < n/3; i++) {
   
    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    
    delay(delayTime);
    
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, LOW);
    
    delay(delayTime);
    
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, HIGH);
    
    delay(delayTime);
    
  }

  int k = n % 3;

  if (k == 1) {

    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
      
  }

  if (k == 2) {

    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
    
    delay(delayTime);
    
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, LOW);

  }
    

  
}  

чЁ сделал то?

решил задачу

А если пины поместить в массив, то код будет покороче

const byte ledPin[3] = {LED1, LED2, LED3};

for (byte i = 0; i < n; i++) {
  digitalWrite(ledPin[i % 3], HIGH);
  digitalWrite(ledPin[(i+1) % 3], LOW);
  digitalWrite(ledPin[(i+2) % 3], LOW);
}

зачем так криво? Ведь дан же пример выше

затем, что ему на амперке на бедность подали. А дареному коду в строки не заглядывают :slight_smile:

и сразу все сделал! Сам!

какой молодец

Вот сумел же, когда захотел