Электроника для начинающих (2-е издание) - Чарльз Платт
Шрифт:
Интервал:
Закладка:
Точка с запятой указывает на конец инструкции.
Внимание!
В конце каждой команды должна быть точка с запятой. Всегда. Не забывайте об этом!
Теперь перейдем к пустой строке под сообщением, которое гласит:
// put your main code here, to run repeatedly
По наличию двух слешей вы можете догадаться, что это очередной комментарий. Компилятор проигнорирует его. В строках под комментарием наберите такие инструкции:
void loop() {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13, LOW);
delay(100);
}
Если вы ранее уже имели дело с платой Arduino, то тяжко вздохнете, подумав: «Опять эта проверка мигания светодиодов!» Да, это так, и именно поэтому я назвал данный раздел «Программа Blink». Это программа, которую почти все используют для предварительной проверки (хотя я изменил время задержки по причинам, которые станут ясными далее). Порадуйте меня, набрав эту программу в окне IDE. Очень скоро мы перейдем к более сложным проектам.
Возможно также, вы смутно догадываетесь, что означают некоторые команды.
Команда void означает то же, что и раньше.
Команда loop() – это инструкция, приказывающая плате Arduino повторять какое-либо действие снова и снова. Какое действие? Процедуру, указанную между фигурными скобками.
Команда digitalWrite служит для отправки чего-либо с какого-то контакта. Какого? Я указал 13, потому что его режим был определен ранее.
Замечание
Вы не сможете использовать цифровой вывод, пока заранее не укажете, в каком режиме он должен функционировать.
Что должен сделать этот вывод? Перейти в высокое состояние (HIGH).
В конце инструкции не забудьте точку с запятой.
Команда delay заставляет плату Arduino немного подождать. Сколько? Число 100 означает 100 миллисекунд. В одной секунде 1000 миллисекунд, и поэтому плата Arduino подождет одну десятую секунды. В этот период времени вывод 13 будет оставаться в высоком состоянии.
Думаю, вы сможете догадаться, что означают следующие две строки.
Совсем скоро вы сможете запустить эту программу. Но сначала вернитесь к плате и вставьте выводы светодиода между разъемом 13 и разъемом, обозначенным GND, рядом с ним.
Замечание
Убедитесь в том, что короткий вывод светодиода находится в гнезде GND. Светодиоду не нужен токоограничительный резистор, поскольку тот встроен в разъем 13.
Маленький желтый светодиод на моей плате уже мигал по умолчанию, как только я подключил плату. Светодиод, который я вставил только что, также начинает мигать, поскольку желтый светодиод, который установлен на плате с помощью поверхностного монтажа, тоже подключен к выводу 13.
В первых версиях Arduino Uno встроенный светодиод не начинал мигать при подключении платы. В будущих версиях разработчики Arduino могут отключить это «мигание по умолчанию». В любом случае, это неважно, потому что ваша программа изменит частоту мигания.
Проверка и компилирование
Далее вы должны проверить, не допустили ли вы какую-либо опечатку. В меню Скетч (Sketch) выберите команду Проверить/Компилировать (Verify/Compile), как показано на рис. 5.85. Среда IDE проверит ваш код и выдаст сообщение, если обнаружит какую-то проблему.
Можно проверить, как компилятор реагирует на ошибки. В листинге программы измените pinMode на piMode, а затем выполните команду Проверить/Компилировать (Verify/Compile), чтобы увидеть, что произойдет.
Рис. 5.85. Прежде чем отправлять свою программу на плату Arduino, выполните команду Проверить/Компилировать
В нижней части окна IDE, в черной области, появится сообщение об ошибке. Вы можете растянуть эту область, перетаскивая мышью верхнюю границу так, чтобы можно было без прокрутки увидеть больше двух строк. Сообщение об ошибке, которое получил я, гласит «piMode was not declared in this scope» («переменная piMode не была описана в этой области действия»).
Видите ли, в языке С есть зарезервированные слова и определенные функции, которые имеют особое значение. Пару из них – digitalWrite и delay – вы уже использовали.
Но переменная piMode не существует ни как зарезервированное слово, ни как определенная функция, и поэтому компилятор сообщает, что вы ее не объявили, чтобы указать, что она собой представляет.
Исправляйте текст вашей программы до тех пор, пока команда Проверить/Компилировать (Verify/Compile) не перестанет находить ошибки.
Загрузка и запуск
Теперь в меню Скетч (Scetch) выберите команду Загрузка (Upload). Лично я всегда представляю, что я переписываю программу с моего большого компьютера на маленький компьютер Arduino, но все называют этот процесс загрузкой, и поэтому будем считать, что так оно и есть.
Если загрузка прошла успешно, то чуть выше черной области сообщений об ошибках вы увидите сообщение Загрузка завершена (Done Uploading).
Если же процесс загрузки слишком долго не завершается – это плохо. Это означает, что по-прежнему есть какие-то проблемы со связью, возможно, потому что конфигурация СОМ-порта настроена неверно. Вернитесь к приведенному ранее разделу поиска и устранения неисправностей для вашего компьютера. Но вначале сохраните программу. В меню Файл (File) выберите команду Сохранить (Save) и введите имя для своей программы. После того как вы исправите проблемы с COM-портом, вы сможете заново загрузить программу, если необходимо, и попробовать снова.
Если все работает как предполагалось, то теперь встроенный светодиод и ваш светодиод быстро мигают – включаются на одну десятую секунды и выключаются на десятую секунды, в соответствии с инструкциями в вашей программе.
Вам может показаться, что после стольких усилий полученное достижение невелико, но мы ведь должны были с чего-то начать, а программирование микроконтроллера обычно начинается с мигания светодиода. В следующем эксперименте вы создадите новую программу, которая делает нечто более полезное.
Кратко подведем итог тому, что вы уже узнали и что необходимо делать для программирования платы Arduino.
• Создайте новую программу (или «эскиз», как его предпочитает называть среда Arduino).
• Выберите в меню Файл (File) пункт Новый (New), если это необходимо.
• Каждая программа должна начинаться с функции задания конфигурации setup(), которая выполняется один раз.
• Прежде чем что-либо делать с каким-либо контактом платы, вы должны объявить его номер и режим работы, используя команду pinMode.
• Для контакта может быть указан режим INPUT (Вход) или OUTPUT (Выход).
• Некоторые номера контактов недопустимы. Посмотрите на вашу плату, чтобы увидеть используемую систему нумерации.
• Каждую функцию или блок программы следует заключать в фигурные скобки. Скобки могут быть расположены на разных строках.
• Компилятор игнорирует