Два дела сразу: millis() вместо delay()
Светодиоды мигают с разными периодами: delay() так не умеет — он останавливает всё.

Что понадобится
- Arduino Uno
- Резистор (220 Ом) × 2
- Светодиод (красный)
- Светодиод (зелёный)
Как подключить
| Откуда | Куда | |||
|---|---|---|---|---|
| Arduino Uno | D8 | → | Резистор 1 | 1 |
| Резистор 1 | 2 | → | Светодиод 1 | A |
| Светодиод 1 | C | → | Arduino Uno | GND |
| Arduino Uno | D9 | → | Резистор 2 | 1 |
| Резистор 2 | 2 | → | Светодиод 2 | A |
| Светодиод 2 | C | → | Arduino Uno | GND |
Скетч
// Красный мигает раз в 300 мс, зелёный — раз в 1100 мс.
// Никаких delay(): каждый светодиод помнит своё время переключения.
const int LED_RED = 8;
const int LED_GREEN = 9;
unsigned long tRed = 0;
unsigned long tGreen = 0;
bool red = false;
bool green = false;
void setup() {
pinMode(LED_RED, OUTPUT);
pinMode(LED_GREEN, OUTPUT);
}
void loop() {
unsigned long now = millis();
if (now - tRed >= 300) {
tRed = now;
red = !red;
digitalWrite(LED_RED, red ? HIGH : LOW);
}
if (now - tGreen >= 1100) {
tGreen = now;
green = !green;
digitalWrite(LED_GREEN, green ? HIGH : LOW);
}
}
Коротко о детали: Arduino Uno
Плата на микроконтроллере ATmega328P: 14 цифровых выводов, 6 аналоговых входов, тактовая частота 16 МГц и логика 5 В. Скетч выполняется на ней: setup() один раз при старте, loop() — по кругу, пока есть питание. На выводе 13 распаян встроенный светодиод «L».
Ещё примеры с деталью «Arduino Uno»
- Плата без единого проводаСветодиод «L» встроен в плату и сидит на выводе 13 — мигать можно сразу.Начальный
- Монитор порта: плата отвечаетПлата читает строку из монитора порта и отвечает на неё.Средний
- Две платы: одна командует, другая слушаетПровод между выводами — простейшая связь двух плат. Обязательна общая земля: без неё «высокого уровня» просто не от чего отсчитывать.Средний
Попробуйте сами
Симулятор работает прямо в браузере: схему можно менять, код — править, а результат видно сразу. Бесплатно, без установки и регистрации.
Открыть «Два дела сразу: millis() вместо delay()» в симуляторе