Blink на ESP32: перший скетч і вбудований світлодіод
Найперша програма для будь-якої плати: блимаємо світлодіодом на GPIO2. Розбираємо setup() і loop(), pinMode, digitalWrite, delay і монітор порту — фундамент для всіх наступних проєктів.
Про проєкт
«Blink» — це «Hello, world!» мікроконтролерів. Скетч вмикає й вимикає світлодіод раз на секунду. Звучить просто, але саме на ньому видно, як влаштована будь-яка програма Arduino, як плата керує виводами і як бачити, що відбувається всередині, через монітор порту.
На більшості плат ESP32 DevKit уже є синій світлодіод, підключений до GPIO2, тож нічого паяти не потрібно.
Що знадобиться
- ESP32 DevKit (DOIT DevKit V1, ESP32-DevKitC тощо)
- USB-кабель із передачею даних (не лише для заряджання)
- Arduino IDE з пакетом плат esp32 від Espressif
Схема
Зовнішніх деталей немає: світлодіод і резистор уже стоять на платі між GPIO2 і GND.
Якщо на вашій платі світлодіод не блимає, він може висіти на іншому виводі або його немає зовсім. Тоді підключіть зовнішній світлодіод через резистор 220 Ом — як у статті про макетну плату.
Як це працює
Кожна програма Arduino має дві обов'язкові функції:
setup()виконується один раз після ввімкнення або перезавантаження. Тут налаштовують виводи, послідовний порт, датчики.loop()викликається знову і знову, поки на плату подано живлення.
Три функції, які знадобляться майже в кожному проєкті:
pinMode(pin, OUTPUT)— робить вивід виходом. Без цьогоdigitalWrite()нічого не вмикає.digitalWrite(pin, HIGH / LOW)— подає на вивід 3.3 В або 0 В.delay(ms)— чекає задану кількість мілісекунд.
Serial.begin(115200) відкриває зв'язок із комп'ютером. У моніторі порту (швидкість теж 115200) ви побачите повідомлення з Serial.println(). Це головний інструмент налагодження.
Код
// Blink: вбудований світлодіод підключений до GPIO2
const int LED_PIN = 2;
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
Serial.println("Blink запущено");
}
void loop() {
digitalWrite(LED_PIN, HIGH);
Serial.println("Світлодіод увімкнено");
delay(500);
digitalWrite(LED_PIN, LOW);
Serial.println("Світлодіод вимкнено");
delay(500);
}
Типові помилки
- Не завантажується скетч («Failed to connect»). Затисніть кнопку BOOT на платі, поки в IDE не з'явиться «Connecting…», потім відпустіть.
- Кракозябри в моніторі порту. Швидкість у моніторі не збігається з
Serial.begin(). Виставте 115200. - Забули
pinMode(). Вивід залишається входом, і світлодіод ледь жевріє або не світиться зовсім. Симулятор про це попередить.
Що далі
- Змініть затримки, щоб світлодіод коротко блимав раз на дві секунди, як індикатор роботи.
- Замініть
delay()на перевіркуmillis(): тодіloop()зможе робити ще щось, поки світлодіод чекає. Цей прийом використовується в кнопці з антидребезгом.