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

Тема в разделе "Arduino & Shields", создана пользователем AmadeusEvg, 3 июн 2023.

  1. AmadeusEvg

    AmadeusEvg Нуб

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

    parovoZZ Гуру

    Код (C++):
    Rgb1 = on;
    Rgb2 = off;
    Rgb3 = off;
    sleep;
    Ну и далее по аналогии
     
  3. Asper Daffy

    Asper Daffy Иксперд

    К ChatGPT обратитесь, он напишет.
     
  4. AmadeusEvg

    AmadeusEvg Нуб

    Обращался, он из 10 генераций выдаёт одно и тоже - в цикле for (int i = 0; i < 10; i++) { Rgb1 = on; Rgb2 = off; Rgb3 = off; delay(500); Rgb1 = off; Rgb2 = on; Rgb3 = off; delay(500); Rgb1 = ogg; Rgb2 = off; Rgb3 = on) , а это не то что мне нужно!
     
  5. Asper Daffy

    Asper Daffy Иксперд

    Значит, он неправильно понял задачу. Надо объяснять более внятно.
     
  6. ostrov

    ostrov Гуру

    Решили?
     
  7. AmadeusEvg

    AmadeusEvg Нуб

    пока нет
     
  8. parovoZZ

    parovoZZ Гуру

    Ну конечно. Я ж больше ничего не писал.
     
  9. Ariadna-on-Line

    Ariadna-on-Line Гуру

    При произвольных N действо раскладывается на два варианта - исполнение полного цикла и неполного.
    Полный цикл исполняется
    P = int(N / 3) количество раз.
    А неполный - один или два раза. K = N - P.
    Вот и напишите подпрограмму для полного цикла - {
    D1 = on;
    D2 = off;
    D2 = off;
    delay(t);
    D0 = off;
    D1 = on;
    D2 = off;
    delay(t);
    D0 =off;
    D1 = off;
    D2 = on;
    delay(t);
    }
    и две подпрограммы для неполных (K = 1, K = 2)
     
    Последнее редактирование: 4 июн 2023
  10. rad2

    rad2 Нерд

    Держи для n=10. Светодиоды подключены к 2,3,4
     

    Вложения:

  11. AmadeusEvg

    AmadeusEvg Нуб

    Всем спасибо, особенно Ariadna-on-Line! Всё сделал:
    Код (C++):
    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);

      }
     


    }  
     
  12. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Учись студент.
     
  13. ostrov

    ostrov Гуру

    Двухмерный массив: кадр, положение переключателей. Один цикл который эти кадры гоняет. Строк несколько.