Монк . - Программируем Arduino

Здесь есть возможность читать онлайн «Монк . - Программируем Arduino» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 2017, ISBN: 2017, Издательство: Издательский дом Питер, Жанр: Базы данных, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программируем Arduino: краткое содержание, описание и аннотация

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

Программируем Arduino — читать онлайн бесплатно полную книгу (весь текст) целиком

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

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

OneWire bus(10);

В данном случае роль линии данных шины будет играть контакт D10.

Сканирование шины

Поскольку каждое ведомое устройство, подключенное к шине, имеет уникальный идентификационный номер, присвоенный на заводе, нужен какой-то способ определить адреса устройств, подключенных к шине. Было бы неблагоразумно «зашивать» адреса устройств в скетч, потому что в случае замены новое ведомое устройство будет иметь уже другой адрес и скетч не сможет обращаться к нему. Поэтому ведущее устройство (Arduino) должно создать своеобразную опись устройств на шине. Здесь следует отметить, что первые 8 бит в адресе определяют «семейство», которому принадлежит устройство, то есть по ним можно определить, является ли устройство, например, датчиком DS18B20 или относится к какому-то другому типу.

В табл. 8.1 перечислены некоторые из наиболее известных кодов семейств для шины 1-Wire. Полный список можно найти на странице http://owfs.sourceforge.net/family.html.

Таблица 8.1.Коды семейств устройств для шины 1-Wire

Код семейства (шестнадцатеричный)

Семейство

Описание

06

iButton 1993

Идентификационный ключ

10

DS18S20

Высокоточный температурный датчик с разрешающей способностью 9 бит

28

DS18B20

Высокоточный температурный датчик с разрешающей способностью 12 бит

1C

DS28E04-100

ЭСППЗУ емкостью 4 Кбайт

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

// sketch_08_01_OneWire_List

#include

OneWire bus(10);

void setup()

{

Serial.begin(9600);

byte address[8]; // 64 бита

while (bus.search(address))

{

for(int i = 0; i < 7; i++)

{

Serial.print(address[i], HEX);

Serial.print(" ");

}

// проверить контрольную сумму

if (OneWire::crc8(address, 7) == address[7])

{

Serial.println(" CRC OK");

}

else

{

Serial.println(" CRC FAIL");

}

}

}

void loop()

{

}

На рис. 8.2 показан результат выполнения этого скетча при наличии двух температурных датчиков DS18B20, подключенных к Arduino. Обратите внимание на то, что оба устройства имеют один и тот же код семейства в первом байте, равный 28 (в шестнадцатеричном формате).

Рис 82Список ведомых устройств 1Wire Для работы функции search требуется - фото 59

Рис. 8.2.Список ведомых устройств 1-Wire

Для работы функции search требуется массив размером 8 байт, куда она могла бы поместить следующий найденный адрес. После последнего обнаруженного устройства она возвращает 0. Это позволяет выполнять итерации в цикле while, как в предыдущем примере, пока не будут определены все адреса. Последний байт адреса в действительности является циклической контрольной суммой (Cyclic Redundancy Check, CRC), позволяющей проверить целостность адреса. Библиотека OneWire включает специальную функцию для проверки контрольной суммы CRC.

Использование DS18B20

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

Рис 83Схема подключения DS18B20 к Arduino Для датчика температуры компании - фото 60

Рис. 8.3.Схема подключения DS18B20 к Arduino

Для датчика температуры компании Dallas Semiconductor имеется собственная библиотека, упрощающая операцию запроса температуры и декодирования результата. Библиотека DallasTemperature доступна для загрузки по адресу https://github.com/milesburton/Arduino-Temperature-Control-Library.

// sketch_08_02_OneWire_DS18B20

#include

#include

const int busPin = 10;

OneWire bus(busPin);

DallasTemperature sensors(&bus);

DeviceAddress sensor;

void setup()

{

Serial.begin(9600);

sensors.begin();

if (!sensors.getAddress(sensor, 0))

{

Serial.println("NO DS18B20 FOUND!");

}

}

void loop()

{

sensors.requestTemperatures();

float tempC = sensors.getTempC(sensor);

Serial.println(tempC);

delay(1000);

}

Этот скетч выводит в окно монитора последовательного порта температуру в градусах Цельсия, прочитанную с единственного датчика температуры (рис. 8.4).

Рис 84Вывод температуры прочитанной с датчика DS18B20 В этом примере - фото 61

Рис. 8.4.Вывод температуры, прочитанной с датчика DS18B20

В этом примере используется только один датчик температуры, но его легко можно распространить на случай с несколькими датчиками. Библиотека DallasTemperature сама определяет адреса устройств с помощью OneWire в функции getAddress, вторым параметром которой передается номер позиции датчика. Чтобы добавить второй датчик, нужно определить новую переменную для хранения его адреса и затем определить адрес вызовом getAddress. Пример с использованием двух датчиков можно загрузить с сайта книги, где он хранится под именем sketch_08_03_OneWire_DS18B20_2.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программируем Arduino»

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


Отзывы о книге «Программируем Arduino»

Обсуждение, отзывы о книге «Программируем Arduino» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x