Основы работы с arduino. Ардуино — что же ты такое? Где купить Arduino

Новости 23.06.2019
Новости

Arduino - это открытая платформа прототипирования, которая даже превосходит по популярности Raspberry Pi. Всего было продано более трех миллионов устройств, и это только оригинальных, не учитывая большое количество клонов и копий.

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

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

Arduino воспринимает окружающую среду с помощью различных кнопок, датчиков и других сенсоров. Также можно воздействовать на окружение путем контроля светодиодов, моторов, сервоприводов и реле. Проекты Arduino могут оставаться автономными или взаимодействовать с программным обеспечением, установленным на компьютере. Они могут взаимодействовать с другими Arduino, Raspberry Pi, NodeMCU и любыми другими устройствами.

Микроконтроллер Arduino очень сильно упрощает процесс создания проекта, даже если вы раньше не делали ничего в сфере программируемой электроники. В сети есть тысячи руководств среди которых вы сможете найти то, что нужно.

В дополнение к простоте Arduino, эта плата стоит достаточно дешево и имеет открытый исходный код. Самая популярная модель arduino для начинающих - Arduino Uno, основная на микроконтроллере ATMEGA 16U2 от фирмы Atmel. Есть много различных моделей, которые отличаются размером, мощностью, спецификациями и другими параметрами.

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

Что можно сделать c Arduino?

На основе Arduino можно создать огромное количество вещей. На их основе создаются 3D принтеры, квадрокоптеры, беспилотники, модели транспорта и многое другое. Arduino может получать данные от различных аналоговых датчиков, а значит, на его основе очень удобно делать различные сенсорные приборы.

Характеристики Arduino

Как я уже говорил, существует множество типов плат Arduino, но самая популярная из них - это Arduino Uno, именно на ней мы остановимся в этой статье. Вот ее характеристики:

  • Процессор: ATmega16U2 16 МГц;
  • Флеш память: 32 Кб;
  • Оперативная память 2 Кб;
  • Рабочее напряжение: 5 Вольт;
  • Входное напряжение: 7-12 Вольт;
  • Количество аналоговых входов: 6;
  • Количество цифровых входов/выходов: 14;
  • Количество выходов ШИМ: 6.

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

Что нам понадобится?

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

  • Плата Arduino Uno;
  • Кабель USB AB;
  • Макетная плата;
  • Фоторезистор;
  • Пъезо-динамик;
  • Резистор на 220 ом;
  • Резистор на 1000 ом;
  • Резистор на 10 000 ом;
  • Кнопка;
  • Провода;

Если у вас нет резистора с нужным сопротивлением, желательно брать похожие со значениями как можно ближе. Рассмотрим детальнее некоторые из компонентов.

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

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

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

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

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

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

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

Начало работы c Arduino

Перед началом работы с Arduino необходимо соединить устройство с вашим компьютером. Это позволяет писать код и сразу выполнять его в Arduino. Вы можете скачать среду разработки на официальном сайте . Выбирайте файл для своей операционной системы. В Windows вас ждет привычный установщик, затем программа будет готова к работе. В Linux все немного сложнее. Рассмотрим процесс на примере Ubuntu. Вы убедитесь, что использование Arduino очень просто.

Сначала необходимо установить библиотеки gcc-avr и avr-libc:

sudo apt install gcc-avr avr-libc

Если машина Java еще не установлена, ее тоже нужно настроить и установить:

sudo apt install openjdk-6-jre

Затем распакуйте загруженный архив и перейдите в папку с файлами:

tar xzvf arduino-x.x.x-linux64.tgz
$ cd arduino-1.0.1

Для запуска среды осталось выполнить:

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

Теперь, когда среда установлена, нужно проверить как все работает. Самый простой способ сделать это - использовать приложение пример Blink.

В среде разработки Arduino откройте меню "File" > "Examples" > "1.Basics" > "Blink" . Это пример мерцает диодом, расположенным на плате. После этого вы должны увидеть код программы:

Чтобы загрузить программу на ваше устройство выберите в меню "Tools" -> "Board" версию вашей платы, например, Arduino Uno:

Затем, в меню "Tools" -> "Serial Port" выберите свое устройство. В Windows оно будет выглядеть, например, COM3, на Mac или Linux - /dev/tty.usbmodem или что-то подобное.

Далее, нажмите кнопку "Upload" в левом верхнем углу вашей среды. Подождите несколько секунд и вы увидите, что RX и TX светодиоды на плате мигают. Если загрузка прошла успешно, то вы увидите сообщение .

Затем вы увидите, что диод на плате мерцает. Дальше поговорим про подключение светодиода arduino.

Мерцание светодиода

Мы заставили мерцать светодиод на плате Arduino. Теперь давайте заставим мигать внешний светодиод. Вот схема:

Подключите длинную ножку светодиода (положительную, анод) к резистору 220 Ом, а затем к цифровому контакту 7. Короткую ножку (отрицательную, катод) к земле, любому порту Arduino, обозначенному GND. Это очень простая цепь. Теперь сделаем чтобы светодиод включался и выключался. Резистор необходим для защиты от слишком большого тока, иначе плата сгорит.

Вот необходимый код:

void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT); // configure the pin as an output
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(7, HIGH); // включить LED
delay(1000); // wait 1 second
digitalWrite(7, LOW); // выключить LED
delay(1000); // wait one second
}

Метод setup запускается всегда, когда включается Arduino. Здесь мы настраиваем основные переменные. Метод pinMode устанавливает режим OUTPUT для седьмого контакта. Он будет использоваться в качестве вывода. Без этой строки Arduino не буде знать что с ним делать.

Метод loop будет выполняться снова и снова, пока Arduino не будет отключен. Это очень хорошо работает для простых проектов. В методе digitalWrite мы передаем параметр HIGH чтобы включить светодиод и LOW через 1 секунду для отключения. Как только этот код будет завершен, Arduino запустит его сначала. Вы можете поэкспериментировать и изменить время между включением и отключением.

Добавление кнопки

Светодиод работает, а теперь давайте добавим на схему кнопку.

Кнопка должна располагаться в середине макета. Соедините верхнюю правую ногу с Pin 4, нижнюю правую - с резистором на 10 000 Ом и GND. Нижнюю левую ногу соедините с питанием 5V.

Вы можете удивиться, зачем кнопке резистор? Он здесь выполняет две задачи. Резистор связывает кнопку с GND или по нашему - нулем, это гарантирует, что не будет ложных срабатываний. Вторая цель - ограничение тока. Без него 5V будет без ограничений протекать к GND, случится короткое замыкание и плата сгорит.

Когда кнопка не нажата ток не идет. Когда мы нажимаем кнопку, ток от контакта 5V идет к GND. Цифровой контакт Pin4 может обнаружить это изменение. Вот код:

boolean buttonOn = false; // кнопка не нажата

void setup() {
pinMode(7, OUTPUT); // контакт светодиода
pinMode(4, INPUT); // Контакт кнопки
}

void loop() {
if(digitalRead(4)) {
delay(25);
if(digitalRead(4)) {
//Если кнопка нажата на протяжении 25 миллисекунд:
if(buttonOn)
// меняем состояние кнопки
buttonOn = false;
else
buttonOn = true;
delay(500); // ждем пол секунды
}
}
if(buttonOn)
digitalWrite(7, LOW); // выключаем
else
digitalWrite(7, HIGH); // включаем
}

В результате светодиод будет работать только пока вы держите кнопку. Для получения данных о состоянии кнопки используется метод directRead. Мы проверяем ее состояние, затем ждем секунд и снова проверяем ее состояние, чтобы убедиться, что кнопка нажата. Если она нажата, то меняем состояние флага buttonOn.

Добавляем датчик света

Поскольку датчик света уже сам по себе является резистором, то не имеет значения его полярность. Один контакт подключите к 5V через резистор 10 000 Ом, а другой к GND. Также подключите этот контакт к аналоговому выходу 0. Аналоговый вход нужно использовать потому что LDR - аналоговый датчик и для его чтения нужна специальная схема. Код:

int light = 0; // текущая освещенность

void setup() {
Serial.begin(9600); //инициализация серийного порта
}

void loop() {
light = analogRead(A0); // читаем значение LDR

//Сообщаем информацию компьютеру
if(light < 100) {
Serial.println("Очень светло!");
}
else if(light > 100 && light < 400) {
Serial.println("Достаточно света!");
}
else {
Serial.println("Темно!");
}
delay(500); //Ожидаем пол секунды
}

Метод Serial.begin (9600) сообщает компьютеру, что вы хотите общаться с ним, со скоростью 9600. Скорость не важна, но Arduino и компьютер должны использовать одинаковые значения. Метод analogRead читает данные из датчика, а Serial.println отправляет их на компьютер.

Загрузите код и не отключайте USB кабель, так как через него будут передаваться данные. Откройте "Serial Monitor" в верхнем правом углу. Здесь вы увидите поступающие каждые 0,5 с сообщения. Измените код так, чтобы отправлять значения LDR.

Получение звука

Теперь проиграем звук с помощью пьезодинамика. Вот схема:

Схема почти такая же, как и для светодиода. Подключите контакт плюс к цифровому выходу 9 через резистор 220 Ом, а отрицательный контакт к GND. Код:

void setup() {
pinMode(9, OUTPUT); // настройка PIN 9 в качестве вывода
}

void loop() {
tone(9, 1000); // включаем звук
delay(1000); // ждем секунду
noTone(9); // выключаем
delay(1000); // ждем секунду
}

В метод tone нужно передать цифровой контакт, в нашем случае - 9 и частоту звука, который мы будем генерировать. Попробуйте изменить код, чтобы получить другую частоту.

Выводы

Вот и все. Мы рассмотрели основные возможности и начало работы Arduino Uno. Надеюсь, вы увидели что создавать простые электронные проекты очень легко, а использование arduino очень интересно. Как только немного разберетесь, вы сможете создавать намного более сложные проекты. А вы уже использовали Arduino? Или только планируете? Какие проекты уже делали? Напишите в комментариях!

Сегодня речь пойдет об использовании SD и micro SD карт в Arduino. Мы разберемся как можно подключить SD карты к Ардуино, как записывать и считывать информацию. Использование дополнительной памяти может быть очень полезно во многих проектах. Если вы не знаете что такое SPI, I2C и аналоговые выводы, то советую вам посмотреть прошлые уроки и разобраться с этими интерфейсами связи Ардуино.

В этом уроке мы поговорим о беспроводной связи между двумя платами Arduino. Это может быть очень полезно для передачи команд с одной ардуино на другую, или обменом информации между вашими самоделками. Возможность беспроводной передачи данных открывает новые возможности в создании своих проектов.

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

В этом уроке мы будем говорить о Serial интерфейсе связи Arduino. Мы уже использовали этот интерфейс в прошлых уроках, когда выводили значения с датчиков на экран компьютера. Сегодня мы подробнее разберем как работает это соединение, а так же мы узнаем как можно использовать данные переданные в монитор порта компьютера используя Processing.

Сегодня мы поговорим о транзисторах и подключении нагрузки к Arduino. Сама Ардуино не может выдать напряжение выше 5 вольт и ток больше 40 мА с одного пина. Этого достаточно для датчиков, светодиодов, но если мы хотим подключить устройства более требовательные по току, нам придется использовать транзисторы или реле.

В этом уроке мы поговорим об основах схемотехники, применительно к Arduino. И начнем, конечно же, с закона Ома, так как это основа всей схемотехники. Так же в этом уроке мы поговорим о сопротивлении, стягивающих и подтягивающих резисторах, расчете силы тока и напряжения.

Вам понадобится

  • плата Arduino UNO;
  • кабель USB (USB A - USB B);
  • персональный компьютер;
  • светодиод;
  • пара соединительных проводов длиной 5-10 см;
  • при наличии - макетная плата (breadboard).
Arduino IDE

Загрузите среду разработки для Ардуино (Arduino IDE) с официального сайта для своей операционной системы (поддерживаются ОС Windows, Mac OS X, Linux). Можете выбрать установщик (Installer ), можете архив (ZIP file for non admin install ). Во втором случае программа просто запускается из папки, без установки. Скачанный файл содержит кроме среды разработки также драйверы для плат семейства Arduino.

Загружаем среду разработки Arduino IDE с официального сайта

2 Подключение Arduino к компьютеру

Подключите плату Arduino с помощью USB кабеля (типа USB-A - USB-B) к компьютеру. Должен загореться зелёный светодиод ON на плате.


Кабель "USB-A - USB-B" для подключения Arduino к компьютеру

3 Установка драйвера для Arduino

Установите драйвер для Arduino. Рассмотрим вариант установки на операционную систему Windows. Для этого дождитесь, когда операционная система предложит установить драйвер. Откажитесь. Нажмите клавиши Win + Pause , запустите Диспетчер устройств . Найдите раздел «Порты (COM и LPT)» . Увидите там порт с названием Arduino UNO (COMxx) . Кликните правой кнопкой мыши на нём и выберите Обновить драйвер . Укажите операционной системе расположение драйвера. Он находится в поддиректории drivers в той папке, которую мы только что скачали.

Запомните порт, к которому подключена плата Arduino. Чтобы узнать номер порта, запустите диспетчер устройств и найдите раздел «Порты (COM и LPT)». В скобках после названия платы будет указан номер порта. Если платы нет в списке, попробуйте отключить её от компьютера и, выждав несколько секунд, подключить снова.

Arduino в диспетчере устройств Windows

4 Настройка Arduino IDE

Укажите среде разработки свою плату. Для этого в меню Инструменты Плата выберите Arduino UNO .


Выбираем плату Arduino UNO в настройках

Укажите номер COM-порта, к которому подключена плата Arduino: Инструменты Порт .


Задаём последовательный порт, к которому подключена плата Arduino

5 Открываем пример программы

Среда разработки уже содержит в себе множество примеров программ для изучения работы платы. Откройте пример "Blink": Файл Образцы 01.Basics Blink .Кстати, программы для Ардуино называются «скетчи».


Открываем пример скетча для Arduino

6 Сборка схемы со светодиодом

Отключите Arduino от компьютера. Соберите схему, как показано на рисунке. Обратите внимание, что короткая ножка светодиода должна быть соединена с выводом GND, длинная - с цифровым пином "13" платы Arduino. Удобно пользоваться макетной платой, но при её отсутствии соедините провода скруткой.

Цифровой пин "13" имеет встроенный резистор на плате. Поэтому при подключении светодиода к плате внешний токоограничивающий резистор использовать не обязательно. При подключении светодиода к любым другим выводам Ардуино использование резистора обязательно, иначе сожжёте светодиод, а в худшем случае - порт Ардуино, к которому подключён светодиод!


Схема подключения светодиода к Arduino в память Ардуино

Теперь можно загрузить программу в память платы. Подключите плату к компьютеру, подождите несколько секунд, пока происходит инициализация платы. Нажмите кнопку Загрузить , и Ваш скетч запишется в память платы Arduino. Светодиод должен начать весело подмигивать вам с периодичностью 2 секунды (1 секунду горит, 1 выключен). Ниже приведён код нашей первой программы для Ардуино.

void setup() { // блок инициализации pinMode(13, OUTPUT); // задаём пин 13 в качестве выхода. } void loop() { // цикл, который повторяется бесконечно, пока включена плата: digitalWrite(13, HIGH); // подаём на 13 вывод высокий уровень - зажигаем светодиод delay(1000); // на 1000 мсек = 1 сек. digitalWrite(13, LOW); // подаём на 13 вывод низкий уровень - гасим светодиод delay(1000); // на 1 сек. } // далее цикл повторяется

Почитайте комментарии в тексте программы - их достаточно чтобы разобраться с нашим первым экспериментом. Сначала описываем блок инициализации setup() , в котором задаём начальные значения переменных и функции выводов Arduino. Далее следует бесконечный цикл loop() , который повторяется снова и снова, пока на плату подаётся питание. В этом цикле мы выполняем все необходимые действия. В данном случае - зажигаем и гасим светодиод. Оператор delay() задаёт длительность выполнения (в миллисекундах) предшествующего оператора. Оператор digitalWrite() указывает Ардуино, на какой вывод подать напряжение, и какой именно уровень напряжения.Ваш первый скетч готов!

В сети есть множество сайтов, посвящённых работе с платами семейства Arduino. Читайте, осваивайте, не бойтесь экспериментировать и познавать новое! Это увлекательное и полезное занятие, которое принесёт вам много удовольствия.

Обратите внимание

Будьте внимательны при работе с платой Arduino - это электронное изделие, которое требует бережного отношения. Снизу платы есть оголённые проводники, и если Вы положите плату на токопроводящую поверхность, есть вероятность сжечь плату. Также не трогайте плату влажными или мокрыми руками и избегайте при работе сырых помещений.

В принципе она универсальна и на ней можно реализовать огромное количество проектов.

Приступим!

Первым делом нам нужно скачать и установить среду разработки со встроенными драйверами, это можно сделать с официального сайта Arduino.cc или по ссылке . После чего можно подключить плату к компьютеру через usb провод которой чаще всего идет в комплекте, либо через любой подходящий. Ардуино использует USB B, в нем нет ничего особенного. Если все сделано правильно и плата исправна windows найдет новое устройство и самостоятельно установит его после чего на плате загорится светодиод помеченный как ON или PWR.

Теперь можно открывать Arduino ide и перед нами сразу появится окно редактора.1) Окно редактора, то место куда мы будем писать код.

2)Окно состояния, здесь будут отображается ошибки и другая информация о нашей программе и процессе заливки прошивки в плату.

3) Панель инструментов и т.д.

Кстати ide поддерживает русский язык, что должно помочь в ее освоении. Теперь проверим все ли хорошо и перейдем на вкладку инструменты -> Платы. Там сразу должна быть выбрана наша плата:

Если это не так-то выберем ее вручную.

Теперь попробует прошить нашу плату тестовой прошивкой, для этого идем Файл -> примеры -> Basics -> Blink. Сразу в окне редактора появились комментарии и сам текст программы. Комментарии всегда расположены между тегами */ или с // и их можно без проблем удалить, они не как не повлияют на работу программы и перестанут мешать сконцентрироваться на главном.

После чего останется такой код:

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }

void setup () {

pinMode (13 , OUTPUT ) ;

void loop () {

digitalWrite (13 , HIGH ) ;

delay (1000 ) ;

digitalWrite (13 , LOW ) ;

delay (1000 ) ;

Перед тем как я расскажу что он делает давайте прошьем его в ардуино и посмотрим что он будет делать. Для этого нажимаем Скетч -> Загрузка и через некоторое время вы увидите сообщение Загрузка завершена а на плате начнет мигать светодиод!

Если вы получили ошибку: Проблема загрузки на плату то не отчаивайтесь это легко исправить. Для этого идем Инструменты -> Порт -> и там выбераем порт рядом с которым в скобочках написано Arduino/Genuino Uno и пробуем прошить контроллер заново. Если что-то не получается пишите в комментариях, разберемся.

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

void setup() { }

Эту часть кода среда разработки сгенерировала нам самостоятельно, здесь между фигурных скобок происходит инициализация входов, выходом платы, в нашем случае там написано pinMode(13, OUTPUT); Это значит что 13 пин платы к которому подключен светодиод (о котором мы говорили в прошлой статье) мы назначаем на выход.

Эту часть кода так же сгенерирована автоматически, между фигурных скобок пишется тот код, который будет выполнять непосредственно наша программа бесконечно. То есть это бесконечный цикл. В нем написано digitalWrite(13, HIGH); , что по Русски значит подать 5 вольт на 13 пин, это действия зажигает светодиод.

delay(1000); Эта задержка, она останавливает выполнение следующей инструкции на 1000 мили секунд (1 секунду).

digitalWrite(13, LOW); подтягивает 13 пин к земле, по русски убирает 5 вольт что приводит к потуханию светодиода.

И так как void loop() это бесконечный цикл то лампочка на Arduino будет мигать бесконечно!

Развлекаться с голой платой Arduino не так весело как хотелось бы из-за того что на плате установлен всего 1 светодиод и нет ни одной кнопки но это не значит что поморгать светодиодом это все что мы можем! Давайте заставим его загораться и тухнуть по команде с компьютера!

Для этого нам потребуется написать прошивку для ардуино и воспользоваться монитором порта для теста, а потом мы напишем программу на C# но это будет в следующей статье.

После ознакомления с основными элементами Arduino, а также написания программы «Hello World!» пришло время для знакомства с языком программирования.

Структура языка основана главным образом на C/C++, поэтому те, кто ранее программировал на этом языке, не будут испытывать затруднений при освоении программирования Arduino. Остальные должны освоить основную информацию о командах управления, типах данных и функциях.

Большая часть информации, содержащейся здесь, будет совместима с любым курсом C/C++, с учетом различий в типах данных, а также несколько конкретных инструкций, касающихся программирования портов ввода/вывода.

Основы основ

Несколько формальных вещей, то есть таких, о которых все знают, но иногда забывают…

В Arduino IDE, как в C/C++, необходимо помнить о регистрах символов. Ключевые слова, такие как if, for всегда записываются в нижнем регистре. Каждая инструкция заканчивается на «;». Точка с запятой сообщает компилятору, какую часть интерпретировать как инструкцию.

Скобки {..} используются для обозначения программных блоков. Мы используем их для ограничения тела функции (см. ниже), циклов и условных операторов.

Хорошей практикой является добавление комментариев к содержимому программы, это помогает легко понять код. Однострочные комментарии начинаются с // (двойная косая черта). Многострочные комментарии начинаются с /* и заканчиваются на */

Если мы хотим подключить в нашу программу какую-либо библиотеку, мы используем команду include. Вот примеры подключения библиотек:

#include // стандартная библиотека #include «svoya_biblioteka.h» // библиотека в каталоге проекта

Функции в Arduino

Функция (подпрограмма) является отдельной частью программы, выполняющая некоторые операции. Функции используются для упрощения основной программы и улучшения читаемости кода. Полезно использовать функции, поскольку мы можем легко использовать их во многих своих проектах.

Стандартный курс программирования содержит информацию о функциях, которые приведем в следующих статьях. В случае с Arduino функции будут обсуждаться в начале, потому что даже простейшая программа должна иметь две специальные функции. Это уже упоминалось в предыдущих статьях, но здесь мы систематизируем эту информацию.

Объявление функции

Схема объявления функции выглядит следующим образом:

Тип имя_функции(параметр) { // инструкции для выполнения (тело функции) return (/* возвращение значения*/); }

тип — это имя любого доступного типа данных на данном языке программирования. Список типов, доступных при программировании Arduino приведем в отдельной статье.

После исполнения, функция вернет значение объявленного типа. В случае, если функция не принимает никакого возвращаемого значения, то тип данных будет «void».

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

параметр — параметр вызова функции. Параметры не обязательны, но зачастую они бывают полезны. Если мы напишем функцию, у которой нет аргументов, мы оставляем круглые скобки пустыми.

Внутри скобок «{…}» содержится собственно тело функции или инструкция, которые мы хотим выполнить. Описание конкретных инструкций укажем в отдельной статье.

Все функции, возвращающие значение, заканчиваются оператором return, за которым следует возвращаемое значение. Только функции, объявленные нулевым указателем («void»), не содержат оператор return. Необходимо знать, что оператор return завершает выполнение функции независимо от местоположения.

Ниже приведены некоторые примеры деклараций функций.

Void f1() { //тело функции } —————————————— int minus() { //тело функции return (0); } —————————————— int plus(int a, int b) { return (a+b); }

Как вы можете видеть на примерах, объявление функции может принимать различные формы в зависимости от ваших потребностей.

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

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

Вызов функции

Все функции мы записываем в один файл/программу. Существует конечно более элегантное решение, но мы постараемся описать его в следующий раз.

Объявив функцию, мы можем использовать ее в других функциях с соответствующим именем и любыми требуемыми параметрами. Ниже приведены примеры вызова функций, которые мы привели выше:

F1(); plus(2,2); y=plus(1,5);

Как вы можете видеть в примерах, вызов функции выполняется путем указания его имени и требуемого количества параметров. Важно всегда вызывать функцию в соответствии с ее объявлением.

Если функция f1() объявлена без параметров, то при ее вызове нельзя указывать никакие параметры, т.е. вызов функции f1(0) будет неверным.

Функция plus(int a, int b) требует ровно двух параметров, поэтому вызов с одним или тремя параметрами невозможно.

Вызов y=plus(1,5) приведет к выполнению функции «plus» с параметрами «1» и «5» и сохранить возвращаемое значение в переменную «y».

Функции setup() и loop().

Обладая знаниями об объявлении и вызове функций, мы можем перейти к системным функциям Arduino: setup() и loop() . Arduino IDE в обязательном порядке необходимо объявлять эти две функции.

setup () — это функция, которая вызывается автоматически при включении питания или нажатии кнопки RESET.

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

Void setup () { // тело функции — инициализация системы }

loop () — это функция, которая вызывается в бесконечном цикле. Данная функция также не возвращает значения и не вызывается с параметрами. Ниже показано правильное объявление функции loop():

Void loop () { // тело функции — программный код }

Как вы видите, объявление функции loop () идентично объявлению функции setup (). Различие состоит в выполнении этих функций микроконтроллером.

Теперь мы проанализируем следующий псевдокод:

Void setup () { on_led1 (); //включаем светодиод led1 off_led1 (); //выключаем светодиод led1 } void loop () { on_led2 (); //включаем светодиод led2 off_led2 (); //выключаем светодиод led2 }

В функции setup () есть две инструкции: первая включает светодиод led1, подключенный к плате (например, контакт 13), а вторая выключает светодиод led1.

Функция loop () имеет идентичные инструкции для включения и выключения светодиода led2, подключенного к плате (например, контакт 12).

В результате запуска программы светодиод led1 мигнет один раз, в то время как led2 будет загораться и гаснуть до тех пор, пока включено питание Arduino.

Нажатие кнопки RESET приведет к тому, что led1 снова мигнет один раз, а led2 снова начнет постоянно мигать.

Подведем итог:

  • Функции setup () и loop () — это системные функции, которые должны быть определены в каждом проекте. Даже в ситуации, когда в одном из них мы не пропишем какой-либо код, мы все равно должны объявить эти две функции;
  • Функция setup () выполняется один раз, loop() выполняется непрерывно;
  • Мы создаем собственные функции в одном файле;
  • Мы можем вызвать свои функции как из setup () и loop (), так и из других функций;
  • Наши собственные функции можно вызывать с параметрами и возвращать значение;
  • Вызов функции должен быть совершен в соответствии с ее декларацией.


Рекомендуем почитать

Наверх