digitalWrite(ledPin, HIGH);
}
}
Как можно видеть, текст программы довольно прост. Сначала пин устанавливается как “вход” командой pinMode(buttonPin, INPUT), затем в функции loop состояние входа читается с помощью функции digitalRead. Напомним, что функция loop вызывается постоянно, пока схема включена и контроллер работает.
Сделаем программу чуть более полезной. Например, создадим таймер для чистки зубов - при нажатии кнопки светодиод будет гореть ровно 2 минуты. Для создания задержки будем использовать функцию delay, которая в качестве параметра принимает длительность в миллисекундах.
Нам достаточно изменить функцию loop.
void loop() {
// Ждем пока кнопка будет нажата
while (digitalRead(buttonPin) == HIGH) delay(100);
// Зажигаем светодиод
digitalWrite(ledPin, HIGH);
delay(120*1000);
// Гасим светодиод
digitalWrite(ledPin, LOW);
}
Логика работы программы достаточно проста, и не требует отдельных пояснений. Программа ждет нажатия кнопки, для чего используется функция while - она выполняет нужный фрагмент кода, пока условие истинно. После нажатия кнопки, программа включает светодиод, затем запускается 2х-минутная пауза с помощью функции delay, затем цикл повторяется.
Самостоятельная работа #1: Изменить таймер так, чтобы во время 2х-минутного интервала светодиод мигал с частотой 1 раз в секунду. Для этого, функцию delay следует заменить на цикл, внутри которого светодиод будет включаться и выключаться.
Самостоятельная работа #2: Усложнить программу, сделав так, чтобы к концу интервала (например, последние 10 секунд) светодиод мигал чаще, показывая что время подходит к концу.
Как мы видели в предыдущей главе, получить состояние кнопки весьма просто - она или нажата или нет, что соответствует либо “0”, либо “1”. Но Arduino также имеет возможность измерять напряжение напрямую, для этого есть специальные аналоговые входы (analog Inputs). Это часто бывает полезно, например, сопротивление фоторезистора зависит от освещенности, и мы можем использовать это в программе для включения света, сопротивление датчика влажности может показывать, что пора полить цветок, и т.д.
Другой пример использования аналоговой величины: диджейский пульт.
Сам принцип основан на работе делителя напряжения: если переменный резистор подключить к источнику напряжения, то значение его выхода будет