Функции и методы класса String
Для работы со строками в String предусмотрено множество полезных функций. Приведем краткое описание каждой из них:
- String() – конструктор, создает элемент класса данных string. Возвращаемого значения нет. Есть множество вариантов, позволяющих создавать String из строк, символов, числе разных форматов.
- charAt() возвращает указанный в строке элемент. Возвращаемое значение – n-ный символ строки.
- compareTo() – функция нужна для проверки двух строк на равенство и позволяет выявить, какая из них идет раньше по алфавиту. Возвращаемые значения: отрицательное число, если строка 1 идет раньше строки 2 по алфавиту; 0 – при эквивалентности двух строк; положительное число, если вторая строка идет раньше первой в алфавитном порядке.
- concat() – функция, которая объединяет две строки в одну. Итог сложения строк объединяется в новый объект String.
- startsWith() – функция показывает, начинается ли строка с символа, указанного во второй строке. Возвращаемое значение: true, если строка начинается с символа из второй строки, в ином случае false.
- endsWith() – работает так же, как и startsWith(), но проверяет уже окончание строки. Также возвращает значения true и false.
- equals() – сравнивает две строки с учетом регистра, т.е. строки «start» и «START» не будут считаться эквивалентными. Возвращаемые значения: true при эквивалентности, false в ином случае.
- equalsIgnoreCase() – похожа на equals, только эта функция не чувствительна к регистру символов.
- getBytes() – позволяет скопировать символы указанной строки в буфер.
- indexOf() – выполняет поиск символа в строке с начала. Возвращает значение индекса подстроки val или -1, если подстрока не обнаружена.
- lastIndexOf() –выполняет поиск символа в строке с конца.
- length() – указывает длину строки в символах без учета завершающего нулевого символа.
- replace() – заменяет в строке вхождения определенного символа на другой.
- setCharAt() – изменяет нужный символ в строке.
- substring() – возвращает подстроку. Может принимать два значения – начальный и конечный индексы. Первый является включительным, т.е. соответствующий ему элемент будет включаться в строку, второй – не является им.
- toCharArray() – копирует элементы строки в буфер.
- toLowerCase() – возвращает строку, которая записана в нижнем регистре.
- toUpperCase() – возвращает записанную в верхнем регистре строку.
- toInt() – позволяет преобразовать строку в число (целое). При наличии в строке не целочисленных значений функция прерывает преобразование.
- trim() – отбрасывает ненужные пробелы в начале и в конце строки.
Функция millis вместо delay
Функция millis() позволит выполнить задержку без delay на ардуино, тем самым обойти недостатки предыдущих способов. Максимальное значение параметра millis такое же, как и у функции delay (4294967295мс или 50 суток). При переполнении значение просто сбрасывается в 0, не забывайте об этом.
С помощью millis мы не останавливаем выполнение всего скетча, а просто указываем, сколько времени ардуино должна просто “обходить” именно тот блок кода, который мы хотим приостановить. В отличие от delay millis сама по себе ничего не останавливает. Данная команда просто возвращает нам от встроенного таймера микроконтроллера количество миллисекунд, прошедших с момента запуска. При каждом вызове loop Мы сами измеряем время, прошедшее с последнего вызова нашего кода и если разница времени меньше желаемой паузы, то игнорируем код. Как только разница станет больше нужной паузы, мы выполняем код, получаем текущее время с помощью той же millis и запоминаем его – это время будет новой точкой отсчета. В следующем цикле отсчет уже будет от новой точки и мы опять будем игнорировать код, пока новая разница millis и нашего сохраненного прежде значения не достигнет вновь желаемой паузы.
Задержка без delay с помощью millis требует большего кода, но с ее помощью можно моргать светодиодом и ставить на паузу скетч, не останавливая при этом систему.
Вот пример, наглядно иллюстрирующий работу команды:
unsigned long timing; // Переменная для хранения точки отсчета void setup() { Serial.begin(9600); } void loop() { /* В этом месте начинается выполнение аналога delay() Вычисляем разницу между текущим моментом и ранее сохраненной точкой отсчета. Если разница больше нужного значения, то выполняем код. Если нет - ничего не делаем */ if (millis() - timing > 10000){ // Вместо 10000 подставьте нужное вам значение паузы timing = millis(); Serial.println ("10 seconds"); } }
Сначала мы вводим переменную timing, в ней будет храниться количество миллисекунд. По умолчанию значение переменной равно 0. В основной части программы проверяем условие: если количество миллисекунд с запуска микроконтроллера минус число, записанное в переменную timing больше, чем 10000, то выполняется действие по выводу сообщения в монитор порта и в переменную записывается текущее значение времени. В результате работы программы каждые 10 секунд в монитор порта будет выводиться надпись 10 seconds. Данный способ позволяет моргать светодиодом без delay.
Эксперимент
Чтобы продемонстрировать, как использовать Arduino в качестве веб-сервера, мы будем считывать состояние кнопки.
Необходимые комплектующие
- 1 x кабель Ethernet cable
- 1 x Wi-Fi роутер
- 1 x Arduino Mega2560
- 1 x плата расширения Ethernet Shield
- 1 x макетная плата
- 3 x перемычка
- 1 x резистор 1 кОм
- 2 x блок питания 9В
- 1 x кнопка
Схема соединений
Соедините компоненты, как показано на рисунке выше. Вывод 8 Arduino соединен с кнопкой. Этот вывод настроен, как вход, и, когда кнопка нажата, Arduino будет считывать высокий уровень на этом выводе. После чего Arduino установит состояние выхода в значение ON. Когда кнопка отпущена, выход будет установлен в значение OFF. Состояние кнопки будет доступно веб-серверу.
Конфигурация Ethernet
Для управления платой расширения Ethernet будем использовать библиотеку .
Плате расширения должны быть присвоены MAC и IP адреса с помощью функции . Для конкретного устройства MAC адрес представляет собой глобальный уникальный идентификатор. Современные платы расширения Ethernet приходят с наклейкой, указывающей MAC адрес. Для старых плат расширения должен присваиваться какой-либо случайный адрес, но не используйте один и тот же адрес для нескольких плат. Правильность IP адресов зависит от конфигурации сети. Если используется DHCP, IP адрес может быть присвоен плате расширения динамически.
IP адрес
IP адрес является числовой меткой, присваиваемой каждому устройству в компьютерной сети, использующей межсетевой протокол IP. Указать IP адрес в скетче просто:
И изменить его под собственную сеть. Например, если IP адрес роутера 192.168.0.60, а у сканера 192.168.0.40, то плате расширения можно назначить IP адрес 192.168.0.50:
Первые три байта должны быть одинаковыми.
MAC адрес
MAC адрес (адрес Media Access Control — адрес управления доступом к среде) представляет собой уникальный идентификатор, присвоенный каждому устройству, участвующему в физической сети. Каждая составляющая сетевого оборудования имеет уникальный серийный номер, чтобы идентифицировать себя в сети, и который жестко зашит в прошивку оборудования. Тем не менее, для Arduino мы можем задать MAC адрес сами:
Вы можете задать подсеть и шлюз с помощью следующего кода:
Ниже показан блок кода с настройками платы расширения Ethernet Shield:
Ниже приведено собранной схемы. Кабель Ethernet соединяет плату расширения с роутером, который через WiFi соединен с ноутбуком.
Программа
Ниже приведен блок кода, выводящего HTML код простой веб-страницы.
Эта программа будет отображать веб-страницу в веб-браузере при обращении к IP адресу, присвоенному Arduino. Следующая строка указывает браузеру на необходимость обновления страницы:
Когда страница будет запрошена снова, Arduino снова считает состояние кнопки и отобразит его.
Помните, вы всегда может посмотреть исходный код отображаемой веб-страницы. Нажав кнопку, вы может наблюдать изменение состояния кнопки, как показано на видео ниже.
Также вы можете собрать всё без роутера. Для этого необходим перекрестный ethernet кабель. Адрес шлюза в этом случае можно оставить пустым.
Полный текст программы:
ArduinoArduino ShieldEthernetВеб-серверОтладочная платаПлата расширения
Шилды Ethernet Shield для Arduino Uno или Nano
Наиболее удобным способом работы с W5100 является использование готовых шилдов Ethernet Shield для Arduino Uno или Nano. На таких модулях уже выполнены все необходимые обвязки, шилд просто вставляется в соответствующие разъемы платы и вам остается только загрузить скетч. Естественно, что при желании к плате могут быть подключены и другие устройства.
Arduino Ethernet Shield
Подключение платы расширения происходит через соединение RJ-45. Плата обладает встроенным слотом SD/MicroSD , который используется для хранения файлов, используемых для подключения и передачи по локальной сети. Такой слот совместим со всеми платами Arduino/Genuino, т.е. работать с данными на карте можно с помощью стандартной библиотеки SD Library. На плате расширения также можно найти кнопку перезагрузки . питания. Ранние версии платы расширения не дружили с ардуино мега, там требовался ручной сброс после поступления питания.
Если плата оснащена POE модулем (питание подается по витой паре), то шилд будет соответствовать следующим спецификациям:
- Совместим со стандартом IEEE3af.
- Имеет низкие пульсации на выходе.
- Защищает от явлений перегрузки и короткого замыкания.
- Эффективно преобразует напряжение.
- Имеет изоляцию 1500 вольт на точке между «вход-выход»
По умолчанию плата не комплектуется данным модулем, нужно находить соответствующую модель.
Назначение светодиодов Ethernet Shield:
- PWR показывает наличие питания на плате.
- LINK светится при наличии сети и мигает при передаче/приеме данных.
- FULLD обозначает сетевое полнодуплексное соединение.
- 100M обозначает сетевое соединение со скоростью 10мбит/сек.
- RX мигает при приеме экраном данных.
- TX мигает при отправке данных экраном.
- COLL мигает при обнаружении сетевых конфликтов.
Кроме этих имеются еще пара светодиодов на гнезде rj 45, один из которых при подключенном шнуре светится, а другой мерцает при поступлении данных.
Ehternet для Arduino Nano
Отдельного упоминания заслуживает модуль Arduino Nano Ethernet. Он выполнен в формфакторе, облегчающим подключение к плате Nano v 3.0, но обладает практически такими же возможностями, что и “обычный” вариант для Uno. В основе шилда лежит микросхема ENC28J60.
Шилд Ethernet Arduino Nano Shield
Модуль точно так же имеет разъем RJ-45, слот для SD и в некоторых модификациях тоже оснащен PoE контроллером.
Testing out the hardware
It’s not wise to plug the shield with your thermostat or boiler until you test it out. Follow the checks below to make sure your shield is properly assembled. For most of these checks, you will need at least a multimeter capable of measuring voltage, current, and resistance.
Power supply
- Check whether there is no short circuit between two pins on the 24V RED terminal. Use the continuity function of your multimeter.
- Connect the 24V power supply, keep in mind the polarity of the red connector. Connect the positive voltage wire to + pin (left) and ground wire to – pin (right). Red LED next to the RED terminal will now light up.
- Blue RxT LED will also light up, but don’t mind it now. It’s perfectly fine.
- Check for 5V between +5V pin (fifth from the bottom on the right side) and ground pin (next one above +5V pin)
Interfaces
Keep the 24V power supply connected.
- Measure voltage on BLUE THERM terminal with a multimeter. It should read 24V. Polarity is not important.
- Next measure current on the same BLUE terminal. It should read a value between 5mA and 9mA. This means a low state of the line.
- If you connect MASTER-OUT pin (digital pin 4 / fifth pin from the top on the left side) to the any of the ground pins, the current on BLUE terminal should increase to a value between 17mA and 23mA. This is a high state of the transceiver line. Outbound thermostat communication is working. Disconnect the pin from the ground.
- Interconnect BLUE THERM and GREEN BOILER terminals with each other with 2 wires. Polarity does not matter at all. This will simulate a boiler for thermostat interface and thermostat for a boiler interface. Measure now voltage on GREEN terminal, it should read a value between 15V and 18V.
- If you re-connect MASTER-OUT pin to the ground again (same as in step 3 above), green RxB LED should light up. Inbound boiler communication is working. Disconnect the pin from the ground.
- If you connect SLAVE-OUT pin (digital pin 5 / sixth pin from the top on the left side) to +5V pin, the blue RxT LED should go off. The voltage on the GREEN terminal should drop to a value between 5V and 7V. This verifies that both outbound boiler and inbound thermostat communication is working.
- Mount the shield on Arduino UNO (disconnected from the computer). It should power up.
- Well done! You are now ready to have some fun with the shield.
Self-test
I’ve also prepared a self-test program that will test the hardware interface. Download selftest.ino and upload it to your Arduino board. Setup the shield:
- Attach shield to Arduino
- Connect 24V power supply
- Interconnect BLUE THERM and GREEN BOILER terminals with each other with 2 wires.
Self-test result should be:
If it’s not, do full hardware test above to identify the cause.
Compatibility with Wemos D1 (ESP8266)
The shield and library code are compatible with a Wemos D1 development board which is using ESP8266 instead of AVR chips. However, ESP8266 is using 3.3V logic so to make the shield work, you need to alter it.
Rev3 boards
- Replace R11 resistor with 4k7 resistor (instead of 10k)
- Cut the 5V jumper on the back of the board
- Solder the 3V3 jumper on the back of the board
Rev2 boards
- Replace R11 resistor with 4k7 resistor (instead of 10k)
- Cut the 5V trace on the back of the board
- Wire up the optocoupler and the signal transistor to 3.3V with a short wire
Библиотеки коммуникации
Библиотека 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() – включение питания.
GSMVoiceCall – настройка голосовых вызовов.
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( ) – метод статистики. Показывает, получены корректные данные или нет.
Описание analogRead
Принцип работы
Функция используется для считывания сигналов с аналоговых пинов платы arduino. На выходе мы получаем число, пропорциональное реальному значению входного напряжения (но не само напряжение). По своей сути, с помощью analogRead мы создаем вольтметр и можем использовать его показания для анализа информации с датчиков и выработки каких-либо действий.
Почему мы получаем некоторое абстрактное число, а не реальное значение напряжения? Все дело в том, что наша программа может запускаться на разных платах arduino с разными подключенными датчиками, с разными рабочими напряжениями. И мы бы должны изменять программу при каждом изменении типа платы или датчика, что крайне не удобно.
Почему функция возвращает значение от 0 до 1023? Все очень просто: аналогово-цифровой преобразователь, преобразующий значение напряжения в его цифровое значение, в ардуино имеет 10 разрядов, а 2 в 10 степени равно 1024. Таким образом, диапазон значений от 0 до 1023 дает нам 1024 варианта уровня сигнала. Мы просто сравниваем полученное число с границами диапазона и принимаем решение о том, что делать.
Преобразование значения с помощью функции map()
В арудино есть специальная функция, упрощающая преобразование диапазонов значений. Вы передаете ей значение и два диапазона (исходный и требуемый), а функция возвращает новое значение, которое будет также относиться к границам требуемого диапазона как и к границам исходного. Например, значение 5 в диапазоне от 0 до 10 преобразуется в значение 10 в диапазоне от 0 до 20. Значение 500 из диапазона от 0 до 1000 преобразуется в значение 5 из диапазона от 0 до 10.
Пример использования функции map совместно с функцией analogRead ():
int val = map(analogRead(A0), 0, 1023, 1, 10); //Вернет значение аналогового порта в диапазоне от 0 до 10. При этом 0 будет соответствовать 0, а 10 – 1023.
Пример использования analogRead с платой Arduino Uno
Рассмотрим простой пример работы с функцией analogRead. Мы присоединяем напрямую к ардуино потенциометр, подключив его к аналоговому порту A0. В скетче мы считываем значение и выводит его в монитор порта. Загрузите скетч в плату и откройте окно монитора последовательного порта. Вы увидите длинную вереницу чисел, выводящихся с помощью функции Serial.println().
void setup() { Serial.begin(9600); // Инициализируем общение c компьютером на скорости 9600 } void loop() { // Считываем значение с аналогового порта int sensorValue = analogRead(A0); // Печатаем значение в мониторе порта Serial.println(sensorValue); // Небольшая задержка, чтобы бать ардуино слегка отдышаться delay(1); }
Как работает Ethernet
Подразумевается, что для проектов, связанных с подключением Arduino к сети вы должны обладать хотя бы общими знаниями в области сетевых технологий. Сегодня можно без труда найти соответствующие материалы в интернете. Хотя мы не ставим себе целью написать учебник по Ethernet, но общие сведения могут оказаться полезными.
Сегодня Ethernet – ключевая и наиболее распространенная наряду с WiFi технология организации локальных сетей. В стандартной модели OSI она находится на канальном и физическом уровне, определяя подуровни управления доступом к среде и управления логическим каналом. Создателем Ethernet стала компания Xerox, ее инженер Роберт Метклаф создал технологию как инструмент подключения многих компьютеров к общим ресурсам в локальной сети. Официальным стандартом технология стала в 1982 году после появления спецификации IEEE802.3.
Сегодня существует несколько вариантов и модификаций Ethernet, отличающихся скоростными характеристиками и способом организации физического канала:
- Ethernet. Скорость до 10Mb/s. Любые типы проводов (коаксиал, витая пара, оптоволокно).
- Fast Ethernet. Скорость до 100Mb/s. Только витая пара или оптика.
- Gigabit Ethernet. Скорость до 1Gb/s. . Только витая пара и оптика.
- 10G Ethernet. Скорость до 10Gb/s. Естественно, тоже без коаксиала.
Существует еще с десяток различных групп и подгрупп стандарта, в этой статье мы не будем рассматривать их все.
Возможная схема Ethernet-сети
С практической точки зрения работа с Ethernet выглядит как возможность соединить определенным образом конечное оборудование с ближайшей точкой, имеющей выход в другие сегменты сети. Чаще всего это роутер или маршрутизатор с доступом в интернет или к другим ресурсам локальной сети.
Если вы начинаете проект с Ethernet, то вам нужно будет понимать следующие базовые понятия, имеющие отношение к этой технологии:
- Кабель. Как правило, это витая пара, реже – оптоволокно (ее подключить к арудино простым способом не получится).
- Разъемом для подключения кабеля – RJ-45. На самом деле, стандарт для штекеров носит совсем другое название (8P8C), но “в народе” принято называть стандартный Ethernet разъем именно как RJ45. Следует отметить, что есть и другие стандарты – RJ-25, RJ-14 и т.п. Для подключения к ардуино через стандартные модули они не подойдут.
- Сетевой Ethernet MAC-адрес. Это уникальный шестибайтовый идентификатор устройства в сети, который обычно прошивается в само устройство, но в некоторых случаях может быть изменен программно. Всего может быть задано 2 в 48 степени адресов, это триллионы разных вариантов (точнее, 281 474 976 710 656), так что пока их с головой хватает для создания действительно уникальных идентификаторов.
В подавляющем большинстве задач проект с Ардуино будет подключен к уже существующей Ethernet сети через стандартное оборудование. Т.е. вы просто берете модуль Ethernet, подключаете его к Ардуино, а затем вставляете сетевой кабель в этот самый модуль. Все, что вам понадобится – правильно настроить в своем скетче ваш MAC адрес (его можно менять!) и прописать IP адрес устройств, к которым вы будете подключаться. Мы рассмотрим пример в разделе, посвященным программированию.
History
It all started a year ago when I installed a fireplace with an accumulator tank into my house as an addition to OpenTherm gas boiler. Instantly I had to solve a problem – how do I force my heating system to use hot water from accumulator tank if there is any instead of firing up a gas boiler. Solutions are many, but either too uncomfortable or too expensive. In the same time, I wanted to keep the current gas boiler and its intelligent remote controller. I decided to build my own Arduino based device to act as a man in the middle between the boiler and the remote controller.
And now I am building a second version, more powerful, universal and for everybody to use!
Шаг 1. Создаем светодиодную цепь
Как вы могли узнать из уроков для начинающих, лучше всего начать с подключения вашего Arduino и макета к питанию и заземлению соответственно схеме в примере. Затем добавьте три красных светодиода к макету, как показано на рисунке. Это будет индикатор или индикаторная «гистограмма» проекта.
Перетащите Arduino Uno и макетную плату с панели компонентов на рабочую область рядом с существующей схемой.
Подключите проводами 5-вольтовые и заземляющие штыри Arduino к (+) и (-) рельсам на макете. Вы можете изменить цвет проводов, если хотите. Также вы можете использовать раскрывающийся список, либо цифровые клавиши на клавиатуре.
Перетащите три светодиода на макет в строку E, отделив каждый двумя гнездами макета. Вы можете изменить цвет светодиода с помощью помощника, который появляется, когда вы нажимаете на каждый из них.
Используйте резистор 220 Ом для подключения катода каждого светодиода (левая нога) к рельсу заземления (черный) макета. В Tinkercad Circutis вы можете изменить значение резистора, выделив его и используя раскрывающееся меню в помощнике.
Подключите светодиодные аноды (правые, более длинные ножки) к цифровым контактам 4, 3 и 2 на Arduino. Светодиодный анод (+) – это терминал, в который втекает ток.
Катод (-) является терминалом, из которого вытекает ток. Он соединяется с рельсом заземления.
Использование функции arduino delay
Синтаксис
Ардуино delay является самой простой командой и её чаще всего используют новички. По сути она является задержкой, которая приостанавливает работу программы, на указанное в скобках число миллисекунд. (В одной секунде 1000 миллисекунд.) Максимальное значение может быть 4294967295 мс, что примерно ровняется 50 суткам. Давайте рассмотрим простой пример, наглядно показывающий работу этой команды.
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); // подаем высокий сигнал на 13 пин delay(10000); // пауза 10000мс или 10 секунд digitalWrite13, LOW); // подаем низкий сигнал на 13 пин delay(10000); // пауза 10000мс или 10 секунд }
В методе setup прописываем, что пин 13 будет использоваться, как выход. В основной части программы сначала на пин подается высокий сигнал, затем делаем задержку в 10 секунд. На это время программа как бы приостанавливается. Дальше подается низкий сигнал и опять задержка и все начинается сначала. В итоге мы получаем, что на пин поочередно подается, то 5 В, то 0.
Нужно отчетливо понимать, что на время паузы с помощью delay работа программы приостанавливается, приложение не будет получать никаких данных с датчиков. Это является самым большим недостатком использования функции delay в Arduino. Обойти это ограничения можно с помощью прерываний, но об этом мы поговорим в отельной статье.
Пример delay с миганием светодиодом
Пример схемы для иллюстрации работы функции delay.
Можно построить схему со светодиодом и резистором. Тогда у нас получится стандартный пример – мигание светодиодом. Для этого на пин, который мы обозначили как выходной, необходимо подключить светодиод плюсовым контактом. Свободную ногу светодиода через резистор приблизительно на 220 Ом (можно немного больше) подключаем на землю. Определить полярность можно, если посмотреть на его внутренности. Большая чашечка внутри соединена с минусом, а маленькая ножка с плюсом. Если ваш светодиод новый, то определить полярность можно по длине выводов: длинная ножка – плюс, короткая – минус.
Библиотеки в Arduino IDE
Среди всего разнообразия библиотек можно выделить 3 основных группы:
- Встроенные – это библиотеки, изначально установленные в среде Arduino IDE. Их не нужно скачивать и устанавливать дополнительно, они доступны для использования в программе сразу после запуска среды разработки.
- Дополнительные – это библиотеки, которые нужно самостоятельно скачивать устанавливать. Обычно такой вид библиотек разрабатывает производитель датчиков, сенсоров и других компонентов для облегчения работы с ардуино.
- Зависимые библиотеки – устанавливаются как помощник дополнительной библиотеки, отдельно от нее не работает.
Самым простым способом работы с библиотеками в ардуино является использование встроенных возможностей среды разработки Arduino IDE. Об этом мы поговорим в отдельной статье.
Описание продукта
Контроллер TECH ST-480 zPID предназначен для управления котлом с автоматической подачей топлива, оснащенным вентилятором и подающим устройством. Контроллер TECH ST-480 zPID управляет насосом центрального отопления, насосом горячего водоснабжения, насосом напольного отопления, приводом смесительного клапана, а также работой вентилятора наддува и подающим устройством. Основной задачей данного контроллера, является поддержание заданной температуры теплоносителя на выходе из котла, при помощи изменения и поддержания необходимой скорости вращения вентилятора. Контроллер обеспечивает плавную регулировку частоты вращения вентилятора, мощность которого может изменятся от 0-100%. В зависимости от установленных пользователем параметров, фактической температуры теплоносителя на выходе из котла, а также температуры топочных газов, контроллер увеличивает или уменьшает скорость вращения вентилятора, обеспечивая более точное, заданное пользователем, значение температуры на выходе из котла. Благодаря функционалу данного контроллера, имеется возможность выбора одного из четырех режимов работы насосов: отопление дома, приоритет бойлера, параллельные насосы, летний режим. Так же предусмотрена совместная работа контроллера TECH ST-480 zPID c двухпозиционным комнатным терморегулятором или терморегулятором со связью RS. Благодаря наличию данной функции, управление температурой в помещении становится наиболее комфортным.
Корпус выполнен из металлического материала в двух вариантах, и предназначен только для производителей котлов:
• ST-480n ZPID серо-черного цвета; • ST-480n ZPID черного цвета; Оба корпуса предназначены для скрытого монтажа в котле
Функции контроллера:
• управление вентилятором
• управление подающим устройством
• управление насосом центрального отопления
• управление насосом горячего водоснабжения
• управление насосом напольного отопления
• управление циркуляционным насосом
• управление приводом смесительного клапана
• возможность подключения комнатного двухпозиционного терморегулятора и терморегулятора со связью RS
• возможность подключения интернет-модуля TECH ST-505 Ethernet или WiFi RS
• возможность расширения на два дополнительных модуля i-1, i-1m, ST-431n
• недельное управление (опция)
• погодозависимое управление (опция)
• программное обеспечение zPID (замедление работы вентилятора, при приближении к заданной температуре, в зависимости от температуры 2-х датчиков)
Оснащение контроллера:
• большой ЖК-дисплей
• ручка импульсатора
• датчик температуры центрального отопления (устанавливается на подающей линии котла)
• датчик температуры горячего водоснабжения (устанавливается в баке ГВС)
• датчик температуры напольного отопления (устанавливается в отопительном контуре)
• датчик температуры клапана (устанавливается в отопительном контуре после смеси-тельного клапана)
• датчик температуры возврата (устанавливается на обратной линии котла)
• датчик температуры топочных газов (устанавливается в дымоходе)
• наружный датчик температуры (устанавливается в тени дома, на северной стороне)
• защита от закипания – термик (устанавливается на подающей линии котла)
• датчик температуры на подающем устройстве (термостат защиты системы подачи топлива от обратного огня)
Список источников
- github.com
- hackaday.io
- radioprog.ru
- techpribor.com
- ArduinoMaster.ru
- ArduinoPlus.ru