Пишем свой первый скетч: Урок № 1
Урок № 1
Это продолжение цикла уроков про Ардуино для начинающих.
Предыдущие уроки можно посмотреть здесь.
Урок № 0 — «Введение в программирование Ардуино»
Урок № 0.5 — «Продолжение вводного урока. Первое подключение Ардуино к компьютеру.»
В этом уроке, видео на который можно посмотреть на канале YOUTUBE
рассказано как подключить светодиод, рассчитать значение токоограничивающего резистора, про закон Ома, и многое другое.
Что такое функция void setup() и void loop(), вообщем посмотрите, не пожалеете.
Для этого урока, для основной его части потребуются:
Ардуино Нано v 3.0
Макетная плата (беспаечная) Breadboard
Провода 5 шт.
Резисторы 220 Ом 3 шт.
Светодиоды 3 шт.
Плату Ардуино и макетную плату вы покупаете всего 1 раз, а использовать будете на протяжении всех уроков.
Для дополнительного занятия потребуется ещё:
Этот урок надо использовать вместе с видео.
Теперь, как и обещал некоторые интересности.
Вот наш код из первого скетча:
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
мигает встроенным светодиодом на пине 13.
включает его на 1 секунду.
выключает на 1 секунду.
повторяет бесконечно.
Теперь как и обещал сократим код в функции loop()
И вместо 4 строчек написать всего 2:
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, !digitalRead(LED));
delay(1000);
}
Мы получаем текущее значение светодиода digitalRead(LED) и !digitalRead(LED) переворачиваем его (инвертируем).
Если светодиод горел, то гасим его
Если светодиод не горел, то зажигаем его.
с Логическими операторами мы познакомимся в следующих уроках:
&& (логическое И) Истина, если оба операнда истина.
|| (логическое ИЛИ) Истина, если хотя бы один операнд истина.
! (логическое отрицание) Истина, если операнд Ложь, и наоборот.
Замена delay()
Эта функция служит для остановки микроконтроллера.
Как я и говорил в видео, функцию delay() надо применять очень осторожно.
Означает остановить выполнение всех программ (ну почти всех) и ждать пока не пройдёт время, указанное в скобках. Оно указывается в миллисекундах (1000 миллисекунд = 1 секунде) и пока это время не закончится ARDUINO будет бездействовать.
Есть ещё прерывания, но это мы будем изучать в следующих уроках.
Правильнее будет использовать функцию millis();
Она возвращает количество миллисекунд с момента начала выполнения программы.
Количество миллисекунд в millis() ограничено 50 днями. При наступлении этого времени счётчик сбросится 0.
Вот что у нас теперь получилось:
#define LED 13
#define STOP 1000 // 1000 миллисекунд = 1 секунда
unsigned long prev_ms = 0; // время последнего изменения состояния светодиода
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
/*
Проверяем, настало ли время изменить состояние светодиода.
Если с момента последнего переключения прошло больше STOP миллисекунд —
меняем состояние.
*/
if (millis() - prev_ms > STOP) {
digitalWrite(LED, !digitalRead(LED)); // инверсия состояния
prev_ms = millis();
}
/*
Здесь может выполняться любой другой код.
Светодиод будет переключаться независимо от него.
*/
}
мигает светодиодом на пине 13 каждую секунду.
использует millis() вместо delay() — неблокирующий подход.
позволяет выполнять другой код в loop без прерываний.
Теперь переходим к самому интересному.
Дополнительной части урока.
Напишу её сегодня-завтра. Хочу, чтобы на выходные вам было чем заняться.
Удачи вам в освоении этого непростого, но интересного дела.
Изучив эти уроки, вы освоите новую, интересную профессию – Программист. Освоив её, вы можете быть спокойны за свою будущее, ведь по статистике, программист самый востребованный и высокооплачиваемый специалист в наше время.
Смотрите новые уроки. Подписывайтесь на канал. И удачи.
Необходимые компоненты
- Arduino Nano v3.0
- Макетная плата Breadboard
- Провода (5 шт.)
- Резисторы 220 Ом (3 шт.)
- Светодиоды (3 шт.)
Подключение
- Светодиод: анод к пину 13 через резистор 220 Ом, катод к GND.
Как это работает
pinMode(LED, OUTPUT)— настраивает пин как выход.digitalWrite(HIGH/LOW)— включает/выключает LED.delay(1000)— пауза 1 секунда.millis()— позволяет не блокировать выполнение.
Пример кода (оптимизированный)
// Мигаем встроенным светодиодом без блокировки
#define LED 13
#define INTERVAL 1000
unsigned long prev = 0;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
if (millis() - prev >= INTERVAL) {
digitalWrite(LED, !digitalRead(LED));
prev = millis();
}
// Здесь можно выполнять другие задачи
}
Разбор кода
millis() — prev: проверяет, прошло ли 1000 мс.
!digitalRead(): инвертирует состояние LED.
prev = millis(): обновляет время последнего переключения.
Заключение
Первый скетч — основа работы с Arduino. Вы научились мигать светодиодом, использовать setup() и loop(), а также заменили delay() на millis() для неблокирующего кода. Продолжайте экспериментировать!
FAQ — Первый скетч на Arduino (Урок №1)
Что изучается в первом уроке Arduino?
В первом уроке показано, как подключить светодиод, рассчитать резистор, понять работу функций setup() и loop(), а также написать свой первый скетч с мигающим LED на Arduino.
Что делает первый скетч Arduino?
Первый скетч включает и выключает светодиод с интервалом в одну секунду. Это демонстрация базовой работы цифровых выходов и циклического выполнения программы.
Какие компоненты нужны для урока?
Используются Arduino Nano v3.0, макетная плата, провода, три резистора 220 Ом и три светодиода. Эти компоненты подходят для всех последующих уроков.
Как подключить светодиод к Arduino?
Анод светодиода подключается к пину 13 через резистор 220 Ом, катод — к контакту GND. Такое подключение позволяет безопасно управлять LED с помощью Arduino.
Чем отличается delay() от millis()?
delay() останавливает выполнение программы на заданное время, а millis() позволяет отслеживать время без блокировки работы микроконтроллера, что удобно для одновременного выполнения нескольких задач.
Почему важно избегать delay() в проектах Arduino?
delay() временно блокирует выполнение программы, из-за чего Arduino не может реагировать на события. millis() решает эту проблему, позволяя создавать неблокирующие задержки.
📁 Скачать примеры
- Мигание 1 светодиодом
- Мигание 3 светодиодами
- Мигание светодиодом без delay
- Светофор из 3-х светодиодов
- Светодиодный модуль RGB. Случайное смешение цветов
- Светодиодный модуль RGB. Поочерёдное включение цветов
- Светодиодный модуль «Светофор». Имитация работы светофора
- Плавное включение светодиодов.
- Случайное значение яркости светодиодов.
- Передаём сигнал SOS.
- Бегущая волна из 5 светодиодов.