Здравствуйте. Образовалась проблема. Мне нужно было ардуиной при подаче минуса на контакт последовательно включать диоды. Задача простая и спокойно выполнимая. Код (Text): const int LED13 =13; const int LED12 =12; const int LED11 =11; const int LED10 =10; const int LED9 =9; const int input1 =8; const int input2 =7; int state1 = 0; int state2 =0; void setup() { pinMode (LED13, OUTPUT); pinMode (LED12, OUTPUT); pinMode (LED11, OUTPUT); pinMode (LED10, OUTPUT); pinMode (LED9, OUTPUT); pinMode (input, INPUT); digitalWrite(input, HIGH); } void loop() { buttonState = digitalRead (input); if (buttonState == LOW) { digitalWrite (LED13, HIGH); delay (1000); digitalWrite (LED12, HIGH); delay (1000); digitalWrite (LED11, HIGH); delay (1000); digitalWrite (LED10, HIGH); delay (1000); digitalWrite (LED9, HIGH); delay (10000); } else { digitalWrite (LED13, LOW); delay (1000); digitalWrite (LED12, LOW); delay (1000); digitalWrite (LED11, LOW); delay (1000); digitalWrite (LED10, LOW); delay (1000); digitalWrite (LED9, LOW); delay (10000); } } НО, оказывается, что существует два канала, к каждому из которых подсоединены свои диоды. Нужно, чтобы при подаче минуса на цифровой вход, как это реализовано выше, выполнялась программа. Теперь к проблеме. Это все должно происходить одновременно. И как это реализовать, я не знаю. Можно попробовать с каналами поиграть. Допустим, включать все от одного канала, а с другого половину выключать, и.т.д..
Одновременно делается не через delay, и вообще про delay надо забыть, т.к. он не кашерен. Используйте таймеры.
Я поставил делей для того, чтобы паузы прописать между включением диодов. А инфу о тймерах где искать? millis() micros() delay() delayMicroseconds() Это оно?
Вообще millis, но там читать особо нечего. Главное идея: перед началом цикла в переменные типа long записывается значение millis, затем в цикле постоянно идет проверка текущего millis с записанным плюс требуемое время задержки, если больше или равно,то выполняется нужное действие, после чего в таймер мнова записывается millis и так по кругу. Таких таймеров можно запустить несколько, чем реализуется псевдопараллельная работа.
а для определения сколько раз нужно мигнуть светиком заводим переменную count и с каждым интервалом её увеличиваем. когда достигли нужного количества миганий вырубаем таймер и обнуляем count