Подчиняем Ардуино. 2 урок. Заставляем светодиод выключаться когда надо разными способами.

Приветствую всех, сегодня хочу поделиться работой с Ардуино, но прежде чем Вы вздохнёте в состоянии всезнания скажу, что сегодня будут программы разных уровней. Если Вы начинающий, то Вам тем более стоит прочитать эту статью.

Подчиняем Ардуино. 2 урок. Заставляем светодиод выключаться когда надо разными способами.

Программирование контроллеров и написание компьютерных программ сильно отличается друг от друга. Но теперь переходим к следующему.

Прежде чем приступать к созданию программы, необходимо понять основную цель контроллера - это взаимодействие электронного мира с окружающей средой.

То есть мы сперва учимся через "бездушную" железяку "чувствовать" этот мир, а затем по программе, написанной человеком, создавать возмущения в среде. Это может быть мигание светодиодом, писк зуммера или просто управление сервоприводом.

Самое простое, что мы можем делать - это просто давать команды контроллеру и наблюдать как он их выполняет.

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

Итак, первая программа выглядит так.

Код команды рабочий, добавлять комментарии в него не буду. Да и вы найдете подобную программу на многих ресурсах. (в видеоматериале будут пояснения)

Когда у вас получить мигать светодиодом, то это на самом маленький шажок на пути к большим задачам.

Для начала попробуйте изменять частоту мерцания, скважность сигнала (когда светодиод включен дольше по времени чем выключен или наоборот),

Подчиняем Ардуино. 2 урок. Заставляем светодиод выключаться когда надо разными способами.

В нашем случае время периода -2 секунды, значит частота 0.5 Гц. Скважность при этом 2. Вот пара небольших заданий:

1. Сделать частоту 5 Гц, скважность 2.

2. Сделать частоту 2 Гц, скважность 5

3. Сделать частоту 10 Гц, скважность 10.(это мы сейчас и выполним)

Итак, немного поигрались, замечательно.

Как я уже говорил в видеоматериале это будет, использование команды delay() крайне нежелательно, так ведет к массе нехороших последствий в случае изменений кода или перехода на другой процессор. Поэтому рассмотрим второй способ написания этой же программы без использования команды delay();

Обратите внимание, что здесь я добавил команды вывода на порт значений трех переменных времени.

Упрощенная программа выглядит так:

Основная идея в том, что мы ввели три переменные

time в эту переменную мы каждый цикл будем записывать с помощью команды milles() значения времени со старта программы, будет оно в миллисекундах.

timeUp - эта переменная хранит время, когда в следующий раз включится светодиод. Именно поэтому в начале программы записываем значение на 1000 больше, чем текущее время.

timeDown - эта переменная хранит время, когда в следующий раз выключится светодиод. Именно поэтому в начале программы записываем значение на 2000 больше, чем текущее время.

То есть мы начали в 0, затем в то время, когда таймер перескочил за 1000 (time>timeUp)мс включили диод и установили новое время через 2000 мс и переходим дальше

Затем проверяем на отключение аналогичным образом. Для данного кода не имеет значения, что мы будем вперед проверять

(time>timeUp) или

(time>timeDown), так как у нас идет привязка к внутреннему таймеру и времени включения. Можете поэкспериментировать.

Итак, мы с вами рассмотрели 2 способа включения светодиода, один совсем простой, но непрактичный, второй уже похож на код, но он тоже имеет свои недостатки.

Вам задачи

1. Выполнить задания с частотой и скважностью, которые даны выше со вторым кодом

2. Придумать еще один вариант, хотя бы алгоритмически как еще можно управлять светодиодом.

Хорошо бы в голове держать 5 разных способов. Если Вы способны сделать 10 или найдёте как это сделать, разными способами, то у Вас наверняка есть талант к программированию железа (это на полном серьёзе).

Во второй программе за основу взята команда millis(), у неё есть особенность, через 50 дней, счетчик сбросится на ноль и пойдет снова, поэтому через этот период диод погаснет и необходимо будет что-то придумывать. Хотя может и не погаснет, но произойдет переполнение, это важно помнить.

Поделись!