Добрый день. Сегодня поговорим о базой структуре программ, которые пишутся для Ардуино.
Я писал об Arduino IDE тут, а про Ардуино здесь, теперь же настало время поподробней рассказать о том, что означают функции setup(), loop(), pinMode(), digitalWrite(), delay() и их параметры.
Но для начала, для понимания, нам необходимо понять, что же такое функция в языке программирования?
Функция - это набор команд в виде кода, маленький или большой этот набор не важно. Строки кода были когда-то и кем-то написаны для выполнения задачи, например сложения двух чисел. Так как сложение может применяться очень часто в программе то, чтобы иметь возможность использовать этот код и далее в теле программы не повторяя его написание, придумали "упаковывать" код под именем. В свою очередь имя упакованного кода должно ясно давать понять, что делает этот код, какую функцию он выполняет с приходящими к нему данными.
Набор команд - это строки кода, идущие одна под другой, одна строка написанная на языке программирования - одна команда, которую мы даем контроллеру на выполнение. Так удобно читать код, поэтому это своего рода правило красивого кода. Строк с кодом, может быть сколь угодно много, все упирается в размер памяти программ вашего микроконтроллера.
Если наш код выполняет сложение двух чисел, то разумнее нашей функции дать имя - summ и обязательно поставить две скобки открывающую и закрывающую (). Выглядит теперь имя нашей функция так - summ().
Скобки в функциях ставятся для того, чтобы отделить имя самой функции от вводимых данных, так удобно передавать в них данные для операций (без математики тут не обошлось) в нашем случае это данные с которыми оперирует (выполняет действие) код внутри нашей функции.
К примеру: summ(3, 5) функция вернет значение 8.
Скобки ставятся всегда! Независимо от того, передаются параметры или нет.
1. Функция setup():
Это одна из двух функций, которые должны быть в каждой программе Arduino. Она ничего не возвращает и код, который будет записан внутри этой функции выполнится только один раз. Дословно переводится как ("установка"). Для примера мы можем задать режим работы выходов нашей платы, на ввод или выход. Включить или выключить порт передачи данных (коммуникационный интерфейс) и т.д. Главное помнить, что эта функция используется для установки необходимых параметров микроконтроллера и работы нашего кода в дальнейшем.
2. Функция loop():
Вторая функция после setup() - это loop(). Дословно переводится как ("петля") но означает цикл, бесконечный цикл. Код, который находится внутри этой функции будет выполняться строка за строкой до тех пор, пока не будет отключено питание. Эта функция тоже ничего не возвращает.
3. Функция pinMode():
Контакты Arduino, могут быть запрограммированы как на ввод, так и на вывод данных. По умолчанию все контакты платы установлены на ввод. Чтобы изменить назначение выводов и сконфигурировать их как нам хочется применяется функция pinMode(). Эта функция имеет два параметра, записывающихся в круглых скобках через запятую:
pinMode(первый, второй)
Первый - определяет номер контакта, которому будет назначено направление работы.
Второй - устанавливает режим работы контакта, их два: INPUT(вход) и OUTPUT (выход). Обращаю ваше внимание на заглавные буквы, это обязательно условие для работы кода.
В программировании Ардуино очень важно соблюдать регистр букв.
Таким образом функция будет иметь вид:
pinMode(13, OUTPUT) - контакт под №13 у нас будет работать на выход. Это означает, что записав на него высокий уровень (HIGH) или ( 1 ) мы получим максимальное значение напряжение для платы 5 Вольт. Как это сделать нам покажет следующая функция.
4. Функция digitalWrite():
Позволяет установить значение выходного контакта в высокое 5 В, или низкое 0 В состояние. Принимает два параметра для оперирования:
digitalWrite(первый, второй):
Первый - номер контакта, на который будет записано состояние.
Второй - значение, которое нужно задать на контакт: 5 В - соответствует (HIGH) или (1), для 0 В - соответствует (LOW) или ( 0 ).
digitalWrite(13, HIGH) - на контакте №13 появится сигнал высокого уровня = 5 В.
На контакте будет держаться установленное значение до тех пор, пока вы снова не измените его функцией digitalWrite() в коде программы.
5. Функция delay():
Эта функция принимаем на вход (задается в скобках) всего один параметр (аргумент) - это время задержки выполнения программы в миллисекундах. При выполнении кода, дойдя до данной функции Ардуино останавливает выполнение программы на интервал времени указанный в скобках функции:
delay(параметр):
Параметр - указывается в миллисекундах : например 10, 100, 3000, 4500 и т.д.
delay(1000) - Ардуино приостановит выполнение программы на время = 1 секунде.
Вкратце - это то, что нужно знать для начала. Конечно, существует разного рода нюансы работы функций, правильная запись, частные случаи использования и многое другое. Все это мы разберем далее с примерами.
А сейчас не забываем подписываться на ROBOTIP - впереди много интересного!