LED_BUILTIN
Константа LED_BUILTIN хранит номер вывода встроенного светодиода платы — используйте её вместо 13, чтобы скетч работал корректно на любой плате.
Полная статья
Описание
LED_BUILTIN — это константа, которая хранит номер цифрового вывода, соединённого со встроенным светодиодом платы. Она определена в ядре Arduino для каждой поддерживаемой платы, поэтому вам не нужно знать конкретный номер вывода заранее.
На большинстве классических плат, например Arduino Uno, встроенный светодиод подключён к выводу 13. Однако это не универсальное правило: на других платах номер может отличаться. Если вы напишете в коде просто 13, скетч может не работать на другой плате или, хуже, управлять совсем не тем выводом. Использование LED_BUILTIN решает эту проблему: код остаётся корректным вне зависимости от того, на какой плате он запущен.
Помимо переносимости, LED_BUILTIN делает код более читаемым — сразу понятно, что речь идёт именно о встроенном светодиоде, а не о каком-то произвольном выводе.
Где применяется
- Быстрая проверка работоспособности платы без внешних компонентов.
- Индикация состояния программы: мигание при ошибке, ожидании или завершении задачи.
- Учебные скетчи и примеры, которые должны работать на разных платах без изменений.
- Отладка: мигание встроенным светодиодом как альтернатива выводу в
Serial Monitor, когда порт недоступен.
Пример кода
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Практические замечания
LED_BUILTINопределяется в ядре платы автоматически — вам не нужно объявлять или задавать это значение вручную.- Если вы пишете скетч, который должен работать на нескольких разных платах, всегда используйте
LED_BUILTINвместо числового литерала13. - Встроенный светодиод — пассивный компонент платы, резистор уже включён в схему. Для внешнего светодиода, подключённого к любому другому выводу, токоограничивающий резистор нужно добавлять самостоятельно.
- На некоторых платах встроенный светодиод подключён к выводу, который одновременно используется для SPI или другого интерфейса. Если вы задействуете такой интерфейс, светодиод может мигать сам по себе — это нормальное поведение, а не ошибка.
- Если плата не имеет встроенного светодиода,
LED_BUILTINможет быть не определена или указывать на несуществующий вывод. В таком случае вызовpinModeиdigitalWriteс этим значением не приведёт к видимому результату, но и ошибки компиляции не вызовет.