Найти в Дзене

Мигаем светодиодом без delay, включаем мигание светодиода кнопкой

Сборка схемы урока на макетной плате.
Сборка схемы урока на макетной плате.

Скачайте и откройте Arduino IDE 1.8.5

Скопируйте код из статьи в окно программы.

Подключите Arduino к ПК и Загрузите скетч в микроконтроллер

// константы
const int ledPin = 5; // контакт светодиода
const int btnPin = 2; // контакт кнопки
// переменные
int ledState = LOW; //для определения статуса светодиода
int btnState = 0; // для отслеживание нажатия кнопки
long interval = 100; // интервал с которым мигает светодиод(миллисекуны)
unsigned long predMillis = 0; // хранит последнее время переключения светодиода
unsigned long timeMillis; //хранит текущее время таймера
void setup() {
// определяем входы и выходы микроконтроллера
pinMode(ledPin, OUTPUT); //Выход
pinMode(btnPin, INPUT_PULLUP); //Вход с поддтягивающим резистором( кнопка нажата-0 кнопка не нажата-1)
}
void loop() {
//Бесконечный цикл
btnState = !digitalRead(btnPin); // скитываем (!)инвертированое значения кнопки в переменную btnState
if (btnState == HIGH) {
//если кнопка нажата начинаем мигать светодиодом
timeMillis = millis(); //записываем текушее время таймера
if (timeMillis - predMillis >= interval) {
predMillis = timeMillis; //сохраняем последнее изменение светодиода
//если светодиод выключен, то включаем его и наоборот
// если светодиод включен, то выключаем
if (ledState == LOW) {
ledState = HIGH;
}
else {
ledState = LOW;
}
digitalWrite(ledPin, ledState); //передаем сигнал светодиоду
}
}
else {
digitalWrite(ledPin, LOW); // если кнопка не нажата светодиод не горит
}
}

Домашнее задание:

Читая комментарии к коду, попробуйте изменить программу так, чтобы светодиод светился когда кнопка не нажата и мигал, когда кнопка нажата.