Программируем Arduino. Профессиональная работа со скетчами. - [7]
Давайте добавим эту переменную в скетч Blink, чтобы вместо жестко зашитого значения 200, определяющего продолжительность паузы, можно было использовать имя переменной:
int led = 13;
int delayPeriod = 200;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(delayPeriod);
digitalWrite(led, LOW);
delay(delayPeriod);
}
Везде в скетче, где прежде использовалось число 200, сейчас стоит ссылка на переменную delayPeriod.
Если теперь вы пожелаете заставить светодиод мигать еще чаще, достаточно будет изменить значение delayPeriod в одном месте.
If
Обычно строки программы выполняются по порядку, одна за другой, без исключений. Но как быть, если потребуется изменить порядок выполнения? Что если какая-то часть скетча должна выполняться только при определенном условии?
Хорошим примером может служить выполнение фрагмента, только когда нажата кнопка, подключенная к плате Arduino. Такой код мог бы выглядеть примерно так:
void setup()
{
pinMode(5, INPUT_PULLUP);
pinMode(9, OUTPUT);
}
void loop()
{
if (digitalRead(5) == LOW)
{
digitalWrite(9, HIGH);
}
}
В этом случае условие (после оператора if) выполняется, если с контакта 5 прочитано значение LOW. Два знака «равно» == обозначают операцию определения равенства двух значений. Ее легко спутать с единственным знаком «равно», обозначающим операцию присваивания значения переменной. Оператор if говорит: если условие истинно (то есть выполняется), то должны быть выполнены команды в фигурных скобках. В данном случае команда, устанавливающая уровень напряжения HIGH на цифровом выходе 9.
Если условие ложно (не выполняется), то Arduino просто перешагнет через фигурные скобки и продолжит выполнение программы. В данном случае будет достигнут конец функции loop, и она запустится снова.
Циклы
По аналогии с выполнением некоторых операций по условию иногда в скетчах возникает необходимость повторять операции снова и снова. Конечно, вы и так получаете это поведение, помещая команды в функцию loop. То есть именно так действует Blink.
Но иногда требуется выполнить команды определенное число раз. Добиться этого можно с помощью команды for, позволяющей использовать переменную-счетчик. Например, напишем скетч, который мигает светодиодом 10 раз. Далее вы узнаете, почему это решение нельзя признать идеальным при определенных обстоятельствах, но сейчас оно вполне отвечает нашим потребностям.
// sketch 01_01_blink_10
int ledPin = 13;
int delayPeriod = 200;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
for (int i = 0; i < 10; i++)
{
digitalWrite(ledPin, HIGH);
delay(delayPeriod);
digitalWrite(ledPin, LOW);
delay(delayPeriod);
}
}
ПРИМЕЧАНИЕ
Это наш первый законченный скетч, поэтому его имя указано в строке комментария в начале файла. Все скетчи с подобными именами можно загрузить на веб-сайте автора www.simonmonk.org. Чтобы установить все скетчи в окружение Arduino, распакуйте файл со скетчами в каталог Arduino, который находится в папке Documents (Документы). Среда разработки Arduino IDE автоматически создает эту папку при первом запуске.
Команда for определяет переменную с именем i и присваивает ей начальное значение 0. За точкой с запятой (;) следует текст i<10. Это условие продолжения цикла. Иными словами, пока значение i остается меньше 10, продолжают выполняться команды, заключенные в фигурные скобки.
Последний элемент в команде for — i++. Это сокращенная форма записи выражения i = i + 1, которое прибавляет 1 к значению i. Увеличение значения i на единицу происходит в конце каждого цикла. Это выражение гарантирует прекращение цикла, потому что, увеличивая i на 1, вы в конечном счете получите значение больше 10.
Функции
Функции — это способ группировки программных команд в удобный для использования блок. Функции помогают поделить скетч на управляемые и простые в использовании фрагменты.
Например, напишем скетч, который сначала быстро мигает светодиодом 10 раз, а затем начинает мигать с частотой один раз в секунду.
Прочитайте следующий листинг, а потом я объясню, как он работает.
// sketch 01_02_blink_fast_slow
int ledPin = 13;
void setup()
{
pinMode(ledPin, OUTPUT);
flash(10, 100);
}
void loop()
{
flash(1, 500);
}
void flash(int n, int delayPeriod)
{
for (int i = 0; i < n; i++)
{
digitalWrite(ledPin, HIGH);
delay(delayPeriod);
digitalWrite(ledPin, LOW);
delay(delayPeriod);
}
}
Функция setup теперь включает строку flash(10, 100);. Она означает: «мигнуть 10 раз с периодом задержки delayPeriod 100 мс». Команда flash не является встроенной командой Arduino — вы создадите эту очень полезную функцию сами.
Определение функции находится в конце скетча. Первая строка в определении функции
void flash(int n, int delayPeriod)
сообщает Arduino, что определяется новая функция с именем flash, которая принимает два параметра, оба типа int. Первый параметр, с именем n, определяет, сколько раз светодиод должен мигнуть, а второй, с именем delayPeriod, определяет величину паузы после включения или выключения светодиода.
Эти два параметра можно использовать только внутри функции. Так, n используется в команде for, где определяет количество повторений цикла, а delayPeriod — внутри команд delay.
На первый взгляд процедура удаления Windows 8 ничем не отличается от вполне обычного форматирования винчестера с последующей установкой системы. К сожалению, все гораздо сложней.
Вы приобрели нетбук? И теперь хотите понять, чем он отличается от привычного всем ноутбука? Тогда вы держите в руках действительно необходимую книгу. Прочитав ее, вы не только освоите все тонкости, относящиеся к работе с нетбуками, но и узнаете о том, как работать на компьютере. Вы научитесь выбирать мобильный компьютер и аксессуары к нему, узнаете, как установить и настроить операционную систему, научитесь пользоваться пакетом Microsoft Office, выясните, какие программы следует иметь на жестком диске, как защитить сам ноутбук и данные на нем, можно ли модернизировать нетбук и что делать в случае его поломки.
В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера.
В книге даны детальные рекомендации по выбору и покупке ноутбука. Приведены описания работы, настройки и ремонта компонентов мобильного компьютера – винчестера, карты Wi-Fi, PCMCIA, ЖК-экрана и т. д. Читатель найдет в ней подробные рекомендации по ускорению работы мобильных компьютеров с операционными системами Windows 98, Windows XP и Windows Vista, а также пути решения проблем при поломках, попадании ноутбука в воду, заражении вирусами, сбоях программ. Даны полезные советы по увеличению времени работы от батареи, настройкам, доступу в Интернет.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Жизнь современного человека — это движение. Мобильность для нас становится одним из самых важных моментов для работы, для общения, для жизни. Многие из нас сейчас уже не представляют жизнь без сотовых телефонов, которые из средства роскоши превратились в предмет, без которого жизнь современного человека стала просто немыслима. Многие уже оценили все преимущества Bluetooth, GPRS. Эти устройства превратили наши телефоны из средств связи в незаменимых помощников в работе. К сожалению, один из самых главных недостатков этих беспроводных технологий — малый радиус действия и низкая скорость передачи данных, что сейчас становится очень важным фактором для всех нас.