Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Мигаем двумя светодиодами с разной частотой на Arduino без delay()

Компоненты и материалы

О проекте

Этот урок возник в ответ на частый вопрос: как заставить два светодиода мигать с разной частотой? Если один должен мигать каждые 1000 мс, а второй — каждые 500 мс, можно обойтись delay(), разбив задержку на части. Но как только интервалы становятся некратными (например, 300 мс и 1000 мс), подход с delay() ломается — код становится нечитаемым или вообще невозможным.

Решение: отказаться от delay(). В Arduino IDE уже есть пример BlinkWithoutDelay. Мы просто дублируем логику для второго светодиода с нужным интервалом.

Код

const int ledPin = LED_BUILTIN;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 1000;

const int ledPin2 = 12;
int ledState2 = LOW;
unsigned long previousMillis2 = 0;
const long interval2 = 300;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

void loop() {
  unsigned long currentMillis = millis();

  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    ledState = (ledState == LOW) ? HIGH : LOW;
    digitalWrite(ledPin, ledState);
  }

  if (currentMillis - previousMillis2 >= interval2) {
    previousMillis2 = currentMillis;
    ledState2 = (ledState2 == LOW) ? HIGH : LOW;
    digitalWrite(ledPin2, ledState2);
  }
}

Каждый светодиод имеет свои переменные состояния, время последнего переключения и интервал. В loop() мы просто проверяем, не прошло ли нужное время для каждого — и переключаем. Никаких блокирующих задержек.

Схема подключения

Второй светодиод подключён к пину 12 через токоограничивающий резистор (220–330 Ом). Первый — встроенный на плате (пин 13). Общий GND.

Производственный процесс

  1. Защита алюминия от коррозии: экспертные стратегии для долговечности
  2. Мастерство облачных вычислений с нуля: практическое руководство для начинающих
  3. Почему переход с C на C++ может усилить встроенную разработку
  4. Реально-временный мониторинг температуры и влажности через веб на Raspberry Pi 4
  5. Учебник для начинающих по IoT: стриминг данных температуры с Raspberry Pi
  6. Потоковая передача данных температуры с ppDAQC Pi-Plate в InitialState на headless Raspberry Pi
  7. Создание WiFi-робота на Raspberry Pi и Android-смартфоне
  8. Управление задержками в Verilog: техники таймингов и лучшие практики
  9. Происхождение концепции пиления: от древних инструментов к современным машинам
  10. Серый чугун: свойства, производство и автомобильное применение