Собирал мигалку с разными режимами. Режимы переключатся должны на пульте ик. После запуска одного режима, игнорируются другие команды от ик пульта. Для мигалки использовал for циклы и delay.
delay такая функция, которая останавливает исполнение всего. Ее использовать можно лишь тогда, когда реально надо ВСЕ остановить. В противном случае надо пользоваться функцией, которая определяет текущее время и планирует действие с наступлением другого времени. Это функция millis(). Определите текущее время, определите, когда следует выполнить некоторое действие, проверяйте время, как наступило - выполняйте это действите. И включите мозги - придумайте сами как это реализовать.
const int ledPin = 4; // номер выхода, подключенного к светодиоду // Variables will change: int ledState = LOW; // этой переменной устанавливаем состояние светодиода long previousMillis = 0; // храним время последнего переключения светодиода long interval = 30; // интервал между включение/выключением светодиода (1 секунда) void setup() { // задаем режим выхода для порта, подключенного к светодиоду pinMode(ledPin, OUTPUT); } void loop() { for (int i=0; i<5; i++) { // здесь будет код, который будет работать постоянно // и который не должен останавливаться на время между переключениями свето unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; // если светодиод не горит, то зажигаем, и наоборот if (ledState == LOW) ledState = HIGH; else ledState = LOW; // устанавливаем состояния выхода, чтобы включить или выключить светодиод digitalWrite(ledPin, ledState); } } delay (4000); } мне нужно чтобы светодиод мигнул 4 раза с частотой 30 милисекунд, потом цикл остановился на 4 секунды. Но с этим кодом светодиод загорается 4 секунды и тухнет тоже на 4
Не останавливает. А есть прмеры как воспользоваться в прерывании но и в delay? Здесь один перец уже показал два мастера на 1wire - работающий пример при неработающей программе. Изврат - это уже мода на ардуино?