Энциклопедия пожаробезопасности

Blynk: простое управление Raspberry и Arduino. Феномен Blynk и его альтернативы Библиотеки серво моторов и шаговых двигателей


Будем постепенно знакомиться с основами программирования, платой и другими полезными вещами. Это позволит избежать стресса от потока новой информации.

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

Во-первых, нам придётся писать примеры на C++-подобном языке. Поэтому можете похвастаться перед знакомыми, что пишите программы на C++. Во-вторых, он очень упрощённый, и вам не нужно бояться его.

01.Basics: Blink

Второй пример будет немного сложнее, ведь придётся подключать плату к компьютеру. Но есть и хорошая новость - нам не понадобятся дополнительные прибамбасы в виде проводов, датчиков, светодиодов, кнопок. Дело в том, что на плате уже есть один маленький встроенный светодиод, вот мы его и включим.

Запускаем скетч File | Examples | 1.Basics | Blink (Файл | Примеры | 1.Basics | Blink). У вас загрузится готовый пример с кодом. С его помощью мы можем увидеть, что плата работает.

Выбираем нашу плату - в меню Tools | Board (Сервис | Плата) должна быть отмечена Arduino Uno (как правило по умолчанию она уже отмечена). У вас может быть другая плата. Естественно, вы должны уже подключить плату к компьютеру через USB-порт для загрузки скетча в микроконтроллер.

Теперь нужно выбрать последовательный порт. Опять идём в меню Tools | Serial Port (Сервис | Последовательный порт) и выбираем нужный порт (обычно это COM3 или COM4).

Теперь нам необходимо загрузить открытый пример Blink на микроконтроллер. Просто щёлкните на кнопкуUpload (Загрузить) и внимательно смотрите на плату. Вы увидите, что светодиоды, помеченные как RX и TX будут мигать. После успешной загрузки примера в контроллер, в строке состояния среды разработки появится надпись (Загрузка выполнена).

Ещё ниже в области консоли будет выведено сообщение:
Sketch uses 930 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

В сообщение выводится информацию об используемой памяти. Программа настолько проста, что почти ничего не потребляет (0% оперативной памяти и 2% постоянной памяти).

Через несколько секунд после загрузки, вы можете увидеть, что светодиод, помеченный на плате как 13 (L) , будет мигать оранжевым цветом. Поздравляю, вы успешно установили среду разработки и запустили свою первую программу!

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

// Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Сравните с текущей версией.

// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Теперь вместо создания отдельной переменной led используется встроенная константа LED_BUILTIN . Это удобно, так как в разных платах используются разные значения для встроенного светодиода и таким образом программа получилась универсальной.

Возвращаемся к первой программе BareMinimum . Откройте скетч и сделайте сначала первую вещь - нажмите на кнопку Verify (первый значок с галочкой). Среда разработки переводит ваш код в машинный код, т.е. компилирует. Если в вашем коде есть ошибка, то компилятор выведет сообщение. Это полезно, чтобы не тратить зря время на загрузку заведомо неработающей программы. Давайте сознательно сделаем ошибку - напишем код в функции setup() .

Void setup() { // put your setup code here, to run once: int cat = "Я люблю котиков"; }

С точки зрения кошатника, здесь всё написано правильно. Предложение написано без ошибок, есть даже точка с запятой в конце строки - всё как положено.

Проверим. Нажимаем кнопку Verify и видим сообщения с красным текстом. Его текст приводить не буду, сами убедитесь. Если программа с ошибкой, то нет смысла её загружать на плату. Даже если вы очень упрямый и всё-равно нажмёте кнопку Upload , то получите ту же ошибку. Иными словами, Upload сначала самостоятельно выполняет операцию Verify и при отсутствии ошибки загружает скетч.

Разбор примера

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

Изучим код шаг за шагом.

В функции setup() мы видим три строчки:

// the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); }

Приблизительный перевод комментариев, которые используется в функции setup() можно перевести как:

// инициализируем цифровой порт как вывод

PinMode(LED_BUILTIN, OUTPUT);

В старых версиях код был немного другим:

// очень старый вариант pinMode(13, OUTPUT); // обновлённый вариант pinMode(led, OUTPUT);

Разработчики позже написали более грамотный код, вынеся число 13 в отдельную переменную led .

// Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13;

Комментарий можно перевести как:

// Порт 13 в большинстве плат Arduino соединён со светодиодом

Сейчас код обновили, и вместо переменной led используют константу LED_BUILTIN . Такой подход удобен, так как не все платы Arduino имеют встроенный светодиод на порту 13. Если у вас две разные платы и одна из них имеет нестандартный номер, то вам не придётся переписывать пример под каждую плату. Например, у плат MKR1000 встроенный светодиод находится на порту 6.

Нам встретилась новая функция pinMode() , которая устанавливает режим для портов. Функция состоит из двух параметров. В первом параметре указывается порт, с которым мы собираемся работать. Во втором параметре мы сообщаем, как должен работать указанный порт: работать на выход (OUTPUT ) или вход (INPUT ). В нашем примере, вывод под номером 13 (или другой порт, используемый встроенным светодиодом) должен выводить информацию (посылать сигнал), то есть давать указание мигать светодиоду.

Мы определили в функции setup() необходимые данные для начала работы и теперь можем приступить к непосредственной реализации задачи в функции loop() .

// Старый вариант // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } // Современный вариант // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Здесь мы видим уже четыре строчки кода. Первая строчка включает светодиод при помощи функции digitalWrite() . В первом параметре мы указываем номер порта, с которым собираемся работать, а во второй указываем константу HIGH . Забегая вперёд, могу сказать что константа HIGH равна 1, и можно было написать digitalWrite(13, 1) . Но такая запись не очень удобна, так мельтешение цифр в большом проекте затрудняет чтение кода. А здесь вы сразу видите, что на порту под номером 13 включается светодиод.

Следом идёт уже знакомая нам функция digitalWrite() , но уже с параметром LOW , который выключает светодиод (значение константы LOW равно 0).

И последняя строчка снова делает паузу в одну секунду.

Посмотрим, как работает программа. Когда мы загружаем программу в микроконтроллер, то Arduino активирует порт 13 в режиме выхода (функция setup() ), а затем начинает последовательно выполнять четыре строчки из функции loop() : включает диод-пауза-выключает диод-пауза. Когда эти четыре строчки будут выполнены, то они снова будут вызваны и будут повторяться до тех пор, пока мы не выдернем кабель.

Немного о паузе. Теоретически можно убрать вызов функции delay() и программа будет работать. Проблема в другом - контроллер работает с частотой 16 миллионов герц (герц - одно колебание в секунду; если команда длится один такт, вывод переключается 16 миллионов раз в секунду, соответственно, состояние вывода меняется каждые 0,0000000625 секунды), человеческий глаз не способен увидеть реакцию светодиода. Необходимо немного увеличить интервал между двумя командами включения и выключения светодиода.

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

Добавляем свой светодиод (+светодиод)

Мы научились мигать встроенным светодиодом. Но на самом деле у вас не будет возможность пользоваться встроенными компонентами, а придётся самостоятельно собирать нужную конструкцию и взаимодействовать с ней. Поэтому нам понадобится отдельный светодиод , который и будет у нас и мигать, и затухать, и кашу варить (насчёт последнего я, пожалуй, погорячился). Можно использовать любой светодиод - красный, зелёный, синий.

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

В светодиодах короткую ножку («минус») светодиода нужно соединять с землёй (GND). Светодиод не рассчитан на большой ток. Чтобы не повредить светодиод, используйте с ним резистор. Он позволяет уменьшить силу тока. В противном случае светодиод прослужит недолго или просто сгорит. Полярность резисторов не важна. Сам резистор можно подключать как до светодиода, так и после него. Я привык сначала ставить резистор, а потом светодиод по направлению от источника питания к земле.

Из первого примера с встроенным светодиодом мы помним, что он использует вывод под номером 13 (на большинстве плат). На плате есть свободный вывод с этим номером, который находится рядом с выводом GND . Берём светодиод и вставляем в эти выводы. Не забываем, что короткую ножку вставляем в GND , а длинную в вывод 13. У вывода 13 уже установлен резистор, поэтому светодиод не сгорит.

Запускаем снова программу Blink . Теперь будут мигать два светодиода: встроенный и наш. Красота!

Вернёмся к светодиодам. Как правило, в цепи идёт слишком большой ток для светодиодов. Чтобы уменьшить силу тока, используют токопонижающие резисторы (сопротивления). У светодиодов есть важные характеристики: ток питания и напряжение падения (Forward voltage). Невероятно, но факт - светодиоды разных цветов используют разные значения напряжения падения. Максимальный ток для светодиодов колеблется в районе 20 миллиампер. Для вычисления значения сопротивления используют формулу : из напряжения питания вычитаем напряжение падения и результат делим на силу тока в светодиоде в амперах. В документации обычно рекомендуют использовать резистор от 220 ohm до 1K ohm. На практике, можно использовать и 100 ом. Если поставите меньше, то будет риск спалить светодиод. При выполнении опытов с несколькими светодиодами вы можете установить разные резисторы, чтобы увидеть разницу.

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

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

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

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

Стандартные библиотеки Ардуино

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

Список встроенных библиотек (они поставляются вместе с дистрибутивом Arduino IDE):

  • EEPROM
  • Ethernet / Ethernet 2
  • Firmata
  • LiquidCrystal
  • Servo
  • SoftwareSerial
  • Stepper

Подборка библиотек в одном архиве

Если у вас нет времени на детальный анализ множества сайтов и вы хотите скачать все необходимое для работы с внешними устройствами Ардуино в одном архиве, мы подготовили список 40 самых популярных библиотек. Просто и распакуйте его содержимое (папку libraries) в папку Arduino.

Библиотеки для экранов, индикаторов и дисплеев

Библиотека I2C

Библиотека, предназначенная для работы периферийного устройства по протоколу I2C.

Пример использования:

#ifndef I2C_MASTER_H

#define I2C_MASTER_H

void I2C_init (void) – создание объекта, настройка на правильную частоту для шины.

uint8_t I2C_start () – установка соединения с новым устройством.

uint8_t I2C_write() – запись данных на текущее устройство.

uint8_t I2C_read_ack() – считывание байта с устройства, запрос следующего байта.

Библиотека LiquidCrystal

Стандартная библиотека, установленная в Arduino IDE. Предназначена для управления жидкокристаллическими дисплеями LCD.

Пример использования:

#include . Также, чтобы не ошибиться при написании, можно подключить через меню Sketch – Import Library – LiquidCrystal.

Конструктор класса – LiquidCristal(…). Аргументами являются rs, rw, en, do…d7. Первые 3 соответствую выводам сигналов RS, RW и Enable. Выводы d соответствуют номерам шин данных, к которым подключен дисплей.

void begin(cols, rows) – метод, который инициализирует интерфейс дисплея. Аргументами являются количество знаков в строке (cols) и число строк (rows). Этот метод должен задаваться первым.

void createChar(num, data) – метод, необходимый для создания пользовательских символов.

Библиотека UTFT

Стандартная библиотека, необходимая для работы Ардуино с TFT экранами разных типов. Все поддерживаемые дисплеи представлены в сопроводительном документе с библиотекой.

Пример использования:

#include

UTFT(); – создание экземпляра UTFT.

textRus(char*st, int x, int y); – метод, позволяющий выводить строку из указателя. Например, char *dht = “Температура,С”;

textRus(string st, int x, int y); – вывод строки с указанием в параметре. Например, g.textRus(“Температура, С”, 0, 20);

Библиотека LedControl

Позволяет управлять семисегментными дисплеями, объединять массив из светодиодов в одну матрицу.

Пример использования:

#include

LedControl lc1= LedControl();

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

writeArduinoOn7Segment() – отображение на дисплее всех чисел от 0 до 15. Использует функции setChar() для символов a и d и setRow() для создания макета пропущенных символов.

LedControl.shutdown() – отключение изображения.

setIntensity() – контроль яркости.

Библиотеки для работы с датой и временем ардуино

Библиотека RTClib

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

Пример использования:

#include

RTC_DS1307 RTC; – выбор датчика (в данном случае DS1307).

rtc.adjust(DateTime(Date, Time)); – настройка времени и календаря.

dayOfTheWeek () – вывод дня недели. Аргумент от 0 до 6, 0 – воскресенье.

Библиотека Timelib

Позволяет Ардуино получать информацию о дате и времени в данный момент.

Пример использования:

#include

Time(); – создание экземпляра.

setTime (t); – установка времени. Аргумент t – час, минута, секунда, день, месяц и год.

timeStatus(); – показывает, установлено ли время.

adjustTime(adjustment); – настройка времени.

Библиотека Ds1307

Библиотека для удобного взаимодействия часов DS1307 с Ардуино c использованием библиотеки Wire.

Пример использования:

#include

class DS1307RTC – создание объекта DS1307.

SetTime() – установка времени.

get() – считывает RTC, возвращает полученную дату в формате POSIX.

Set(time_t t) – запись даты в RTC

Библиотека DS 3231

Предназначена для управления датой и временем в модуле ds3231.

#include “ds3231.h”

DS3231 Clock(SDA, SCL); – создание объекта DS3231, подключение к линии тактирования и линии данных.

getTime(); – считывание даты и времени с часов.

setDate(date, mon, year); – установка даты.

Системные библиотеки ардуино

Библиотека EEPROM

Стандартная библиотека. Предназначена для работы с энергонезависимой памятью (запись данных, их чтение).

Пример использования:

#include

EEPROM.read(); – создание объекта, считывание байта по адресу из энергонезависимой памяти.

EEPROM.write(address, value)– запись байта в энергонезависимую память.

EEPROM.put() – запись строк чисел с плавающей запятой.

EEPROM.get() – чтение строк и чисел с плавающей запятой.

Библиотека SoftwareSerial

Библиотека, которая позволяет реализовывать последовательные интерфейсы с любых цифровых пинов. Также позволяет создавать несколько последовательных портов, которые работают на скорости до 115200 бод.

#include

SoftwareSerial mySerial(RX, TX) – создание объекта, аргументы – выводы, к которым подключены RX и TX.

Serial.begin(); – устанавливает скорость порта для связи ардуино и компьютера.

mySerial.overflow() – проверка входного буфера на переполнение.

Библиотека Math

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

Пример использования:

#include

Math(); – создание экземпляра Math.

Serial.print(“cos num = “); – возвращает косинус числа.

Serial.println (fmod (double__x, double__y)); – возвращает числа по модулю.

Библиотека Scheduler

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

Пример использования:

#include

Scheduler; – создание экземпляра.

Scheduler.startLoop() – позволяет добавить функцию, которая будет выполняться вместе с loop().

yield() – позволяет передать управление другим задачам.

Библиотеки серво моторов и шаговых двигателей

Библиотека Servo

Стандартная библиотека. Необходима для управления серводвигателями и часто используется в робототехнических проектах с манипуляторами.

Пример использования:

#include

Servo myservo; – создание объекта для серводвигателя..

myservo.attach(); – номер выхода, к которому подключен серводвигатель.

myservo.write(180, 30, true); – движение на 180 градусов, скорость 30, ожидание окончания движения.

Библиотека Stepper

Небходима для управления шаговым униполярным и биполярным двигателем.

#include

const int stepsPerRevolution = ; – количество шагов, за которое двигатель проходит полный поворот.

Stepper myStepper = Stepper(steps, pin1, pin2) – создает экземпляр класса с указанным количеством шагов и выводами, к которым подключается двигатель.

Библиотеки датчиков ардуино

Библиотека DHT

#include < DHT.h>

DHT dht(DHTPIN, DHT11); – инициализирует датчик (в данном случае DHT11).

dht.begin(); – запуск датчика.

float t = dht.readTemperature(); – считывание текущего значения температуры в градусах Цельсия.

Библиотека DallasTemperature

Предназначается для работы с датчиками Dallas. Работает совместно с библиотекой OneWire.

#include

DallasTemperature dallasSensors(&oneWire); – передача объекта oneWire для работы с датчиком.

положить ее в регистр.

printTemperature(sensorAddress); – запрос получить измеренное значение температуры.

Библиотека Ultrasonic

Обеспечивает работу Ардуино с ультразвуковым датчиком измерения расстояния HC-SR04.

#include

Ultrasonic ultrasonic (tig , echo) – объявление объекта, аргументы – контакт Trig и контакт Echo.

dist = ultrasonic.distanceRead(); – определение расстояния до объекта. Агрумент – сантиметры(СМ) или дюймы (INC).

Timing() – считывание длительности импульса на выходе Echo, перевод в необходимую систему счисления.

Библиотека ADXL345

Предназначается для работы с акселерометром ADXL345.

Пример использования:

#include

ADXL345_ADDRESS – создание объекта, указание его адреса.

ADXL345_REG_DEVID – идентификация устройства.

ADXL345_REG_OFSX – смещение по оси Х.

ADXL345_REG_BW_RATE – управление скоростью передачи данных.

Библиотека BME280

Предназначается для работы с датчиком температуры, влажности и давления BME280.

Пример использования:

#include

BME280_ADDRESS – создание объекта BME280, указание его адреса.

begin(uint8_t addr = BME280_ADDRESS); – начало работы датчика.

getTemperature – получение измеренной температуры.

getPressure – получение измеренного давления.

Библиотека BMP280

Требуется для работы с датчиком атмосферного давления BMP280.

Пример использования:

#include

BMP280_CHIPID – создание экземпляра, указание его адреса.

getTemperature(float *temp); – получение измеренной температуры.

getPressure(float *pressure); – получение измеренного значения давления.

Библиотека BMP085

Требуется для работы с датчиком давления BMP085.

Пример использования:

#include

Adafruit_BMP085 bmp; – создание экземпляра BMP085.

dps.init(MODE_ULTRA_HIGHRES, 25000, true); – измерение давления, аргумент 25000 – высота над уровнем моря (в данном случае 250 м. над уровнем моря).

dps.getPressure(&Pressure); – определение давления.

Библиотека FingerPrint

Требуется для работы со сканером отпечатков пальцев.

Пример использования :

#include

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); – объявление объекта Finger. Параметр – ссылка на объектр для работы с UART, кокторому подключен модуль.

finger.begin(); – инициализация модуля отпечатков пальцев.

Func_sensor_communication(); – вызов модуля отпечатков пальцев.

Библиотеки коммуникации

Библиотека Wire

Требуется для работы с двухпроводным интерфейсом I2C.

Пример использования:

#include

Wire.begin() – инициализация библиотеки, подключение к шине I2C.

Wire.requestFrom() – запрос мастером байтов от ведомого устройства.

Wire.beginTransmission() – начало передачи на ведомое устройство.

Библиотека Irremote

Требуется для работы ардуино с ИК приемником.

Пример использования:

#include

IRrecv irrecv(RECV_PIN); – пин, к которому подключен ИК приемник.

SetPinAndButton(int ir1,int ir2,int pin) – позволяет настроить определенный выход на срабатывание при заданных значениях ir1, ir2.

Библиотека GSM

Требуется для соединения через GSM-плату с сетью GSM/GRPS. С ее помощью можно реализовать операции, свершаемые GSM-телефоном, работать с голосовыми вызовами и подключаться к сети интернет через GRPS.

Пример использования:

#include

GSM GSMAccess – инициализирует экземпляр класса.

gprs.powerOn() – включение питания.

GPRS – настройка подключения к интернету.

GSM – управление радио-модемом.

Библиотека RFID

Требуется для соединения Ардуино и RFID -модуля.

Пример использования:

#include

RFID rfid(SS_PIN, RST_PIN); – создание экземпляра rfid, аргументы – пины, к которым подключен модуль.

rfid.init(); – инициализация модуля RFID.

Библиотека MFRC 522

Требуется для соединения Ардуино и MFRC522 -модуля.

Пример использования:

#include

MFRC522 mfrc522(SS_PIN, RST_PIN); – создание экземпляра MFRC522, аргументами указаны выходы, к которым подключен модуль.

mfrc522.PCD_Init(); – инициализация MFRC522.

Библиотека Ethershield

Новая версия https://github.com/jcw/ethercard

Требуется для подключения Ардуино к локальной сети или сети интернет. Библиотека больше не поддерживается, более новая версия Ethercard. Также существует стандартная библиотека Ethernet.

Пример использования:

#include «EtherShield.h»

#include

EtherShield es = EtherShield (); – подготовка веб-страницы

ether.begin(sizeof Ethernet::buffer, mymac,); – начало работы, аргументы – адрес Mac и номер порта, к которому подключен выход CS.

Библиотека Nrf24l01

Требуется для работы с RF24-радиомодулем.

Пример использования:

#include “RF24.h”

RF24 – Конструктор создает новый экземпляр драйвера. Перед тем, как использовать, нужно создать экземпляр и указать пины, к которым подключен чип (_cepin: контакт модуля Enable, cspin: контакт модуля Select).

Begin – начало работы чипа.

setChannel – каналы для связи RF.

setPayloadSize – установка фиксированного размера передачи.

getPayloadSize – получение фиксированного размера.

Библиотека TinyGPS

Требуется для чтения сообщений GPGGA и GPRMC. Помогает считывать данные о положении, дате, времени, высоте и других параметрах.

Пример использования:

#include

TinyGPS gps; – создание экземпляра TinyGPS.

encode () – подача на объект последовательных данных по одному символу.

gps.stats() – метод статистики. Показывает, получены корректные данные или нет.

Библиотеки в Arduino IDE

Среди всего разнообразия библиотек можно выделить 3 основных группы:

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

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

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

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

Для наших читателей мы приводили большой список программ с подробным описанием каждой. С помощью эмулятора Tinkercad вы можете создать свою собственную схему и проверить её работоспособность. Просто нажмите «Начать симуляцию» после того как всё соедините. Вы можете использовать эмулятор в любое время, чтобы проверять свои схемы. Tinkercad Circuits - бесплатная браузерная программа, которая позволяет создавать и моделировать схемы. Она идеально подходит для обучения и создания прототипов.

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

Если вы параллельно с эмулятором делаете проект с вашей физической Arduino Uno (или совместимой) платой, вам также понадобится USB-кабель и компьютер с бесплатным программным обеспечением (или плагином для веб-редактора) и, при необходимости, одним светодиодом.

Шаг 1: Цепь светодиодного резистора

Начинаем работу с эмулятором Ардуино с цепи светодиода и резистора.

Ножки светодиода соединены с двумя контактами на Arduino: земля и пин 13 . Компонент между светодиодом и выводом 13 резистор, который помогает ограничить ток, чтобы светодиод не загорелся сам. Без этого вы эмуляторе получите предупреждение о том, что светодиод может вскоре сгореть. Не имеет значения, идет ли резистор до или после светодиода в цепи. Цветовые полосы идентифицируют значение резистора и для схемы проекта подойдут от 100 до 1000 Ом.

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

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

На панели компонентов эмулятор Ардуино Tinkercad перетащите резистор и светодиод на рабочую область. Измените значение резистора, отрегулировав его на 220 Ом в инспекторе компонентов, который появляется, когда выбран резистор.

Вернитесь на панель компонентов, найдите и перенесите плату . Кликните один раз, чтобы подключить провод к компоненту или пину и нажмите еще раз, чтобы подключить другой конец. Подключите резистор к любой стороне светодиода. Если вы подключили резистор к аноду светодиода (положительный, более длинный), подключите другую ногу резистора к цифровому выходу 13 Arduino. Если вы подключили резистор к катоду светодиода (отрицательная, более короткая нога), подключите другую ногу резистора к земле Arduino (GND). Создайте еще одно соединение между незакрепленной ножкой светодиода и контактом 13 или заземлением, в зависимости от того, что еще не подключено.

Если у вас есть физическая плата Arduino Uno (или совместимая), вы можете подключить светодиод непосредственно к контакту 13 (положительный, более длинный анод) и заземлить (отрицательный, более короткий катод), потому что контакт 13 фактически имеет встроенный резистор именно для таких тестов.

Шаг 2: Простой код с блоками

В эмуляторе Ардуино Tinkercad вы можете легко программировать свои проекты с помощью блоков. Давайте рассмотрим простой код, управляющий миганием, открыв редактор кода (кнопка с надписью «Код»). Вы можете изменить размер редактора кода, щелкнув и перетащив левый край окна. Смотрите анимированный рисунок выше.

Код начинается с двух серых блоков комментариев, которые являются просто заметками для людей. Первый синий выходной блок устанавливает встроенный светодиод как HIGH, который является способом Arduino для описания «включено». Эта выходная команда активирует сигнал 5 В на все, что связано с указанным выводом. Далее - желтый командный блок, который ждет одну секунду, достаточно просто. Таким образом, программа приостановится, пока светодиод горит в течение одной секунды. Затем после следующего комментария идет синий выходной блок, который установит светодиод обратно в LOW или «выключен», за которым следует вторая пауза в секунду.

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

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

Готовы создать свой собственный проект? Выберите Arduino, которую вы добавили на рабочую область (или выберите её в раскрывающемся меню в редакторе кода), и начните перетаскивание блоков кода, чтобы создать свою собственную программу мигающего светодиода.

Шаг 3: Объяснение кода

Давайте теперь поговорим о коде при работе Ардуино эмулятора.

Когда редактор кода открыт в эмуляторе, вы можете щелкнуть выпадающее меню слева и выбрать «Блоки + Текст» (Blocks + Text), чтобы открыть код Arduino, сгенерированный блоками кода. Все дополнительные символы являются частью синтаксиса Arduino, но не пугайтесь! Требуется время, чтобы научиться писать правильный код с нуля. Здесь мы рассмотрим каждую часть, и вы всегда можете использовать блоки для сравнения и повышения своего уровня.

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

/* This program blinks pin 13 of the Arduino (the built-in LED) */

Этот первый раздел представляет собой комментарий блока заголовка, описывающий, что делает программа. Блочные комментарии открываются так /* и закрываются так */ .

Void setup() { pinMode(13, OUTPUT); }

Далее приведена настройка кода, которая помогает настроить то, что потребуется вашей программе позже. Она запускается один раз и содержит все что нужно внутри своих фигурных скобок {}. В нашем проекте нужно настраивает вывод 13 в качестве выхода, который подготавливает плату для отправки сигналов на нее, а не приема.

Void loop() { // включите светодиод (HIGH - уровень напряжения) digitalWrite(13, HIGH); delay(1000); // Подождите 1000 миллисекунд // выключите светодиод, сделав напряжение LOW digitalWrite(13, LOW); delay(1000); // Подождите 1000 миллисекунд }

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

Больше полезного о программировании Ардуино вы найдете в нашей статье " ".

Используемая команда вывода называется digitalWrite() , которая является функцией, которая устанавливает или выдает значение HIGH или LOW. Чтобы приостановить программу мы будем использовать функцию delay(), которая занимает несколько миллисекунд (1000 мс = 1 с).

Шаг 4: Использование настроек для начинающих

Это схема, которую, как мы думаем, вы захотите использовать часто, сохранена в разделе для начинающих (Blink Circuit Starter) эмулятора Ардуино.

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

Starters → Arduino

Для более продвинутой версии этого кода Arduino можно посмотреть вариант "Blink Without Delay" (Моргание без задержки), который использует текущее время для отслеживания интервалов мигания вместо delay(); .

Шаг 5: Программируем реальную Ардуино

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

Чтобы запрограммировать вашу реальную , скопируйте код из окна программы и вставьте его в пустой скетч Arduino или нажмите кнопку загрузки и откройте полученный файл, используя Arduino IDE

Поэкспериментируйте с этой эмуляцией Ардуино, добавив больше блоков для создания мигающих светодиодов. А сможете ли вы создать программу, которая будет выдавать сообщения с использованием кода Морзе?

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

В этом примере показано как с помощью контроллера Arduino заставить мигать светодиод.

Необходимые компоненты

  • контроллер Arduino
  • светодиод
  • резистор 220 Ом

Подключение

Мы подключаем резистор сопротивлением 220 Ом к выходу номер 13 (pin 13), к резистору в свою очередь подключаем анод (обычно длинная ножка) светодиода. Катод подсоединяем к земле (Grd). Затем подключаем контроллер через USB кабель к компьютеру и загружаем приведенный ниже код на котроллер Arduino.

Большинство плат Arduino имеют встроенный SMT (Surface-mount techology)светодиод, подключенный к выходу 13. Если вы запустите код на таких платах без подключения внешниего светодиода, то вы должны увидеть мигание встроенного светодиода на плате.

Схема

Код

В коде мы первой строк задаем режим выхода для вход/выхода (pin) 13:

pinMode(13, OUTPUT);

В основном цикле (loop) программы зажигаем светодиод:

digitalWrite(13, HIGH);

На выходе 13 появляется напряжение 5 В. Светодиод зажигается. Затем мы выключаем светодиод:

digitalWrite(13, LOW);

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

/* Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду в цикле. */ void setup() { // Инициализируем цифровой вход/выход в режиме выхода. // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате. pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // зажигаем светодиод delay(1000); // ждем секунду digitalWrite(13, LOW); // выключаем светодиод delay(1000); // ждем секунду }

Смотрите также

Похожие публикации