Автоматический нотификатор

В данном уроке вы узнаете как заставить контроллер отслеживать выполнение нескольких параллельных заданий, научитесь вычислять задержки без функции delay, а также освоите новый способ управления ходом выполнения программы. Кроме того, будет рассмотрен способ создания собственных функций.
Структура switch..case выглядит следующим образом:
switch(переменная)
{ case 1: { } break;
case 2: {} break;
default: {} }
Оператор switch сравнивает значение переменной, указанной в скобках, со значениями обозначенными после операторов case. Когда найден соответствующий case, выполняются команды, обозначенные после этого оператора. Если ни один case не найден, выполняются команды после оператора default. Обычно, после каждого case используется команда break, после которой происходит выход из структуры case. Если не использовать команду break, то будут выполняться все case подряд.

millis() - команда, возвращающая время, прошедшее с момента начала выполнения программы в миллисекундах.

Процедура - сегмент программного кода, состоящий из нескольких команд и не возвращающий в место вызова какое-либо значение.
Пример объявления процедуры: void message(int a)

Служебное слово void говорит, что этот сегмент кода является процедурой и возвращает «пустое» значение (от англ. void - пустота).

message() - имя функции, int a - аргумент процедуры (описан в качестве примера). Значение, которое может передаваться внутрь процедуры во время её вызова из любой точки программы. В примере - значение типа int, но можно использовать и другие типы данных.

Функция - сегмент программного кода, состоящий из нескольких команд и возвращающий в место вызова какое-либо значение.
Пример объявления функции: int sum(int a, int b)

Служебное слово int говорит, что этот сегмент кода является функцией и возвращает целочисленное значение.

sum() - имя функции, int a и int b - аргументы функции. Значения, которые могутпередаваться внутрь функции во время её вызова из любой точки программы. return(значение) - команда, возвращающая значение указанное в скобках в место вызова функции.

Совет: используйте функции и процедуры для уменьшения объема написанного кода. Например, если какой-либо набор команд повторяется больше 3х раз, его целесообразнее «упаковать» в процедуру или функцию. Кроме того, использование процедур и функций позволяет структурировать код на смысловые блоки, улучшает его читаемость, уменьшают возможность появления ошибки, а также делают код «модульным», что позволяет использовать его в других программах.

Массив - пронумерованный набор переменных, имеющих порядковые номера (индексы).
Пример объявления массива: int array[4] = {10, 20, 30, 40};
int - тип элементов массива. array - имя массива. В квадратных скобках указывается количество элементов массива[...].
Внутри фигурных скобок {...} указываются значения элементов массива, перечисляемые через запятую .

Обратите внимание: индексация элементов массива начинается с 0, то есть, для того, чтобы обратиться к элементу массива из нашего примера со значением 10 (десять), необходимо написать: array[0], а к элементу со значением 40(сорок): array[3].

Массивы позволяют хранить данные, объединенные общим смыслом. Например, вы можете создать массив с номерами пинов, к которым будут подключены светодиоды. Кроме того, массивы позволяют сортировать данные, вычислять их среднее значение и многое другое, но эти примеры не входят в рамки нашего курса.

Задание. Создайте виртуальное устройство безопасности с тремя клавишами, которое отправляет на компьютер сообщения об успешном или неуспешном вводе пароля. Устройство должно иметь 3 кнопки и 3 индикаторных светодиода, позволяющих пользователю узнать сколько символов пароля было введено. Паролем является правильная последовательность нажатия кнопок.

Кнопки подключаются с подтяжкой к земле. Светодиоды подключаются к микроконтроллеру через резисторы.

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


Логика работы программы следующая: при нажатии на любую из кнопок для ввода пароля, в массив password записывается номер нажатой кнопки и увеличивается индекс элемента массива (который является одновременно и счетчиком количества нажатий). Как только значение этого счетчика становится равным 3, проверяется правильность введенного пароля путём сравнения массива password , в который записывался вводимый пароль и массива correct, хранящего правильную последовательность нажатий.

Индикация количества нажатий происходит следующим образом: если значение счетчика количества нажатий равно нулю, все светодиоды отключены, одному - включается один светодиод, двум - два. Если пароль введён верно, светодиоды совершают 3 коротких мигания, если неверно - два долгих мигания.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website