Демонстрация светотехники масштабной модели на Arduino

Значит так написали. Кто за вас должен задавать правильные задержки - Пушкин?

Возможно, но 90% криво сделано. А хочется чтобы глаз радовало. ))))

Честно говоря сама программа около 20 строк кода. Проблемы там только если надо задний и тормоза включать в соответствии с движением модели. Если к движению не привязывать, то вообще проблем нет.

Дак может и не криво, а экономически оправдано для задачи.

Все это бесполезное сотрясание воздуха без кода.

Никогда не понимал, нафига люди открывают ветку на форуме по программированию, если “кода под рукой нет”? Нравится флуд?

Когда будет код - тогда и приходите.

Я понял. Без текста скетча у нас ничего не получится. Я вечером, из дома, выложу то что смог своять. Думаю тогда мы сможем понимать друг друга лучше.

тут народ предпочитает гранёные стаканы

Но это же помешало Вам заявить

но почему-то при этом

У меня создалось впечатление, вам ничего не удобно!

У меня такое было. Когда я взял в руки сварочную маску, она мне показалось жутко неудобной - сквозь неё ничего не видно!

1 лайк

это да, классические маски такие, зайчиков нахватаешь пока научишься в маске дугу зажигать, то ли дело сейчас…дороговато конечно, но совсем другой коленкор

Благодарю всех за высказывания!
Теперь к сути. Вот сам скетч который “сотворил”

int led_5 = 5; // пин подключения 5
int led_3 = 3; // пин подключения 3
int led_6 = 6; // пин подключения 6
int led_4 = 4; // пин подключения 4

int interval[8]={700, 700, 700, 700, 700, 700, 700, 700};    // интервал включения/выключения LED
int interval1[6]={25, 60, 45, 100, 75, 325};    // интервал включения/выключения LED



void setup()  

{ 
  // два вывода на выход
  pinMode(led_5, OUTPUT);
  pinMode(led_3, OUTPUT);
  pinMode(led_4, OUTPUT);
  pinMode(led_6, OUTPUT);
} 

void loop()  

{ 
     for (int x=0; x<8; x++) 
   { // цикл 8 проходов, поворот (левый/правый)
            digitalWrite(led_3, HIGH); // включение поворота
             delay(interval[x]);       // включение по циклу
            digitalWrite(led_3, LOW); // выключение поворота
             delay(interval[x]);      // выключение по циклу
     
   } 

      for (int x=0; x<8; x++) 
   { // цикл 8 проходов, поворот (левый/правый)
            digitalWrite(led_5, HIGH); // включение поворота
             delay(interval[x]);       // включение по циклу
            digitalWrite(led_5, LOW);  // выключение поворота
             delay(interval[x]);      // выключение по циклу 

   }
                          
      for (int x=0; x<4; x++)
   { // цикл 4 проходов, аварийка
       digitalWrite(led_3, HIGH); // включение аварийка (левый/правый)
       digitalWrite(led_5, HIGH); // включение аварийка (левый/правый)
         delay(interval[x]);
       digitalWrite(led_3, LOW); // выключение аварийка (левый/правый)
       digitalWrite(led_5, LOW); // выключение аварийка (левый/правый)
        delay(interval[x]);
   }
      for (int y=0; y<6; y++) 
   { // цикл 6 проходов
       digitalWrite(led_4, HIGH); // включение стробоскопа(левый/правый)
       digitalWrite(led_6, HIGH); // включение стробоскопа (левый/правый)
         delay(interval[y]);
       digitalWrite(led_4, LOW); // выключение стробоскопа (левый/правый)
       digitalWrite(led_6, LOW); // выключение стробоскопа (левый/правый)
        delay(interval1[y]); 
      
   }        



}

Что касается поворотов и аварийки работает. Что касается стробоскопа то этот цикл отрабатывает один раз и понять что это стробоскоп невозможно.

Вопрос! Возможно ли последний цикл запускать “N” кол-во раз?

Буду признателен за подсказки.

вложенный цикл смотрите

Я был бы признателен Вам более развернутый ответ. что именно нужно посмотреть в цикле?

Пхайте этот цикл внутрь другого цикла. И тот другой (внешний) N раз и крутите

почему на поворотники 8 циклов, если в ТЗ прописано четыре?

а что вы хотели, он у вас длиной всего-то 0.6 секунды

обернуть его в цикл for от 0 до N не думали?

for (int j=0; j <N; j++){
 for (int y=0; y<6; y++) 
   { // цикл 6 проходов
       digitalWrite(led_4, HIGH); // включение стробоскопа(левый/правый)
       digitalWrite(led_6, HIGH); // включение стробоскопа (левый/правый)
         delay(interval[y]);
       digitalWrite(led_4, LOW); // выключение стробоскопа (левый/правый)
       digitalWrite(led_6, LOW); // выключение стробоскопа (левый/правый)
        delay(interval1[y]); 
      
   }  
}      
1 лайк

На поворотники и прописано 8, это на аварийки 4.

я цифру 4 от 8 отличаю пока

От всей души благодарю.

Извиняюсь что ошибся. Признаю. Сам запутался.

Ну и отлично.
Теперь можно вернутся к давешнему вопросу, что вам не нравится в коде из операторов digitalWrite() и delay()