С digitalWrite я погорячился (опять признаю), но вот delay тормозит весь скетч (это я прочитал на просторах интернета). Возможно это не соответствует действительности. Я не знаю. Я только учусь.
В общем случае это верно, но в вашем коде так и надо.
delay плохо, когда одновременно с ним надо делать что-то еще. А у вас код строго последовательный, он выполняет действия одно за другим. Тут никаких проблем от delay нет
delay просто даёт паузу. Если у вас программа выполняется последовательно и не предполагает органов управления, то чему там тормозится?
Каждому оператору - своё место. В Вашей программе delay необходим и достаточен.
Вот тут как раз и основная моя проблема! Изначально я думал как можно запустить одновременно несколько действий (ближний свет фар, задние габариты и вместе с ними стоп сигналы(стоп сигналы горят 3сек, не горят 2сек, цикл 4 прохода) Но в настоящее время для меня эта задача сродни высшей математики второго уровня. Но я очень бы хотел реализацию именно параллельного выполнения нескольких действий. А пока мне нужно освоить последовательное выполнение действий.
Для этого есть millis();
Тут есть много подходов. Наиболее понятный, ИМХО, тактовать все сигналы по самому короткому импульсу.
К примеру - самый короткий - стробоскоп. Тогда поворотник, к примеру, будет 10 сигналов стробоскопа, фары - 100 и т.д.
А начать надо с мигания диодиком без delay
Я благодарю всех за участие и помощь. Для меня сейчас задача стоит реализовать последовательное выполнение действий. Реализую эту задачу, потом перейду к следующей. Нужно прочитать про millis() понять как это работает. Чтобы мы могли говорить на одном языке.
Еще раз всем огромное СПАСИБО за участие!
Тогда Вы явно рано написали на форум. И уже успели создать о себе неблагоприятное впечатление.
Чтобы не задавать такие глупые вопросы (а тем более делать такие глупые утверждения), следовало повозиться с Ардуино хотя бы полгодика. rkit совершенно рав: ни за 15 минут, ни за 15 дней научиться программировать невозможно.
А если у Вас за неделю уже успело закончиться терпение, то Ардуино явно не для Вас.
И, кстати, Arduino Pro Mini меньше по размеру, чем nano.
Весьма вероятно.
И Ваши желания разделяю. Отсюда сразу вопрос: сколько строк в скетче. Если больше 2-3 десятков, то - да, желательно переписать “чтобы глаз радовало”.
Возможно.
Это называется вложенный цикл.
Да, это, пожалуй, самый важный момент для начинающих. Ему на форуме специально посвятили целую тему:
Благодарю за пример. Реализовал на монтажной плате. Сижу и радуюсь.
из всего этого не понял что такое стробоскоп от слова совсем И еще нахрена эта демонстрация, если эта светомузыка не связывается с реальным движением модели?
Стробоскоп - это прибор способный быстро воспроизводить световые вспышки различной частоты.
Что касается “нахрена”, так это просто такая “хотелка” моя. Я ранее писал, что пришел к вам на форум из другого мира. Мира стендового моделизма, это когда приобретают коробочку с разными пластикатовыми деталями и собирают модель (прототип в масштабе). Только мне пришла идея сделать на своем Subaru BRZ в масштабе 1/24 свет, как на реальном авто. Что касается движения модели, так в масштабном моделизме движения и нет.
А ещё в дальнейшем можно “прикрутить” управление через пульт, была тут недавно тема. Мой пример оттуда.
Извините не понял сразу
Вообще-то это не совсем так.
Поэтому вопрос точнее сформулировать так: что в масштабном моделизме принято называть стробоскопом?
Ответ желательно не ограничивать одной фразой, а расписать подробно, включая все технические детали, в том числе диапазоны изменения характерных времен.
Постараюсь описать своими словами. Хотя мне дилетанту это сделать будет крайне сложно.
Как я ошибочно написал в предыдущем посте “ПРИБОР” не является точным, это эффект, стробоскопический эффект. Для данного эффекта необходим источник света. Как и в 19 веке, когда был изобретен данный эффект. Между источником света и объектом помещали две пластины с прорезями ( как это называется правильно не помню). Одна пластина статична, другая вращается. При совмещении прорезей на двух пластинах свет попадал на объект. В настоящее время используют газоразрядные импульсные лампы или импульсные лазеры. А с появлением ярких (холодный свет) светодиодов стало возможно использовать и их для создания стробоскопического эффекта. Что касается диапазона изменения, это выше моих сил. И как я понимаю эффект основан не только на частоте включения и выключения источника света, но и на физиологии человека, а точнее на возможности восприятия человеком( органами зрения) светового потока.
Конкретно для масштабного моделизма я называю стробоскопами источники света установленные в головных фарах автомобиля работающий с определенной частотой. Мы все видели на дорогах машины сопровождения в кортежах, у которых попеременно мерцают головные фары или отдельно установленные для этого световые приборы вне головных фар автомобиля.
Простите за дилетантский язык, но как смог.
Хотел бы поблагодарить всех кто не остался равнодушным к моей теме.
Вот я и доделал свой скетч. Это моя первая работа, но этой работой я доволен, так как достиг желаемого результата.
Сам скетч:
int led_5 = 5; // пин подключения 5
int led_3 = 3; // пин подключения 3
int led_6 = 6; // пин подключения 6
int led_4 = 4; // пин подключения 4
int led_8 = 8; // пин подключения 8
int led_9 = 9; // пин подключения 9
int led_7 = 7; // пин подключения 7
int led_2 = 2; // пин подключения 2
int interval[8]={700, 700, 700, 700, 700, 700, 700, 700}; // интервал включения/выключения LED
int interval1[6]={25, 60, 45, 100, 65, 325}; // интервал включения/выключения LED
void setup()
{
// два вывода на выход
pinMode(led_5, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
pinMode(led_6, OUTPUT);
pinMode(led_8, OUTPUT);
pinMode(led_9, OUTPUT);
pinMode(led_7, OUTPUT);
pinMode(led_2, 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 j=0; j<6; j++)
{
for (int y=0; y<6; y++)
{ // цикл 6 проходов
digitalWrite(led_4, HIGH); // включение аварийка (левый/правый)
delay(interval1[y]);
digitalWrite(led_4, LOW); // выключение аварийка (левый/правый)
digitalWrite(led_6, HIGH); // включение аварийка (левый/правый)
delay(interval1[y]);
digitalWrite(led_6, LOW); // выключение аварийка (левый/правый)
}
}
for (int k=0; k<6; k++)
{
digitalWrite(led_8, HIGH); // включение головной света/задний габарит (левый/правый)
digitalWrite(led_9, HIGH); // включение головной света/задний габарит (левый/правый)
delay(5000);
digitalWrite(led_8, LOW); // выключение головной света/задний габарит (левый/правый)
digitalWrite(led_9, LOW); // выключение головной света/задний габарит (левый/правый)
delay(1000);
}
for (int i=0; i<6; i++)
{
digitalWrite(led_2, HIGH); // включение стоп сигнал (левый/правый)
delay(2000);
for (int z=0; z<6; z++)
{
digitalWrite(led_7, HIGH); // включение третий стоп сигнал (мерцание)
delay(interval1[z]);
digitalWrite(led_7, LOW); // выключение третий стоп сигнал (мерцание)
delay(interval1[z]);
}
digitalWrite(led_2, LOW); // выключение стоп сигнал (левый/правый)
delay(1000);
}
}
неплохо вышло, хотя Субарой лучше овладевать в масштабе 1:1