Заставим светодиоды мигать с разной частотой.
Перейдем сразу к коду программы или скетчу:
------------------------------
// 13 вывод имеет светодиод, подключенный на большинстве плат Arduino.
// заставим мигать два светодида подключеных последовательно к 13 pin
int led = 13;
int x=5; // используем переменную которая будет влиять на время горения светодиода
void setup() {
// инициализируем цифровой PIN в качестве выхода.
pinMode(led, OUTPUT);
digitalWrite(led, HIGH); // зажигаем светодиоды при первом включении
delay(3000); // задежрка на 3 сек (светодиоды при этом продолжают гореть)
digitalWrite(led, LOW); // гасим светодиоды
}
// эта часть программы работает в бесконечном цикле
void loop() {
digitalWrite(led, HIGH); // зажигаем светодиоды
delay(x); // значение переменной Х определят времяя задержки в мс
digitalWrite(led, LOW); // гасим светодиоды
delay(x); // задержка
x=x+15; // увеличиваем время задержки на 15 мс
if (x > 300)x=5; // проверяем если переменная Х станет больше 300
// то тогда ей присваиваем начальное значение равное 5
}
-----------------------------
обратите внимание на математический оператор: х=х+15 , это оператор присваивания. Работает он так: к ранее значению переменной х он прибавляет еще 15. И таким образом с каждым новым циклом переменная увеличивается на 15.
Все бы ничего но в бесконечном цикле это привело бы к тому что светодиод начал бы слишком долго светиться и слишком долго не горел (причем до бесконечности). Чтобы избежать этого мы ввели еще и условный оператор:
if (x > 300)x=5;
работает он так: если значение переменной х меньше 3000 то команда после оператора х=5 (вы уже знаете что это значит, но все же я еще раз напомню что это оператор присваивания) опускаются и не выполняются. И таким образом вновь идет выполнение бесконечного цикла.
Но как только значение х станет больше 300 (например 315) то условие выполнено и тогда выполниться оператор присваивания: х=5, то есть значение 315 будет "уменьшено" до 5. И цикл снова повторяется.
То есть оператор усливия if (x > 300)x=5; является "контрогайкой" которая не дает беконечно увеличивать значения переменной х и тем самым избежим "вечного" цикла мигания светодиода.
ДЗ
1) что будет если в операторе if (x > 300)x=5; значение 300 заменить на 100? А что при этом измениться если значение 300 увеличить до 1000?
2) что нужно изменить в схеме и скетче чтобы два светодиода мигали независимо друг от друга с разной частотой?
Комментариев нет:
Отправить комментарий