Blink Without Delay
Иногда вам нужно делать две вещи одновременно. Например, вы можете мигать светодиодом (или некоторые другие требовательные к процессорному времени функции) пока считывается нажатие кнопки или другие данные. В этом случае, вы не можете использоватьdelay ()
, или вам придется остановить все остальные программы, а индикатор моргнул. Программа может пропустить нажатие кнопки, если она происходит во время delay (). Этот скетч показывает, как мигать индикатором без использования delay ()
. Он следит когда Arduino переключил светодиод последний раз. Затем каждый раз через loop ()
, он проверяет, достаточно ли прошло времени. Если достаточно, он переключает индикатор (включен или выключен).Необходимое оборудование
Цепь
Чтобы построить схему, возьмите светодиод и подключите его длинную, положительную ногу (т. н. анод) к контакту 13. Подцепите отрицательную ногу (т. н. анод) на землю. Затем подключите вашу плату Arduino на ваш компьютер, запустите программу Arduino и введите код.
Схема
Код
Код ниже используетmillis ()
, функцию, которая возвращает количество миллисекунд, прошедших со старта текущей программы на плате Arduino для мигания светодиода.
const int ledPin = 13;
int ledState = LOW;
long previousMillis = 0;
long interval = 1000;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}
int ledState = LOW;
long previousMillis = 0;
long interval = 1000;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;
digitalWrite(ledPin, ledState);
}
}
Комментариев нет:
Отправить комментарий