Читаем Программируем Arduino полностью

// 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 (в шестнадцатеричном формате).

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

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

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

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

Рис. 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).

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

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

В заключение

В этой главе вы познакомились с шиной 1-Wire и узнали, как использовать ее для подключения популярного температурного датчика DS18B20.

В следующей главе мы исследуем еще одну разновидность последовательного интерфейса с названием SPI.

<p>9. Взаимодействие с устройствами SPI</p>

Последовательный периферийный интерфейс (Serial Peripheral Interface, SPI) — еще одна последовательная шина для подключения периферийных устройств к плате Arduino. Это быстрая шина, но для передачи данных в ней используются четыре линии против двух, используемых интерфейсом I2C. В действительности SPI не является истинной шиной, так как четвертая линия в нем называется «выбор ведомого» (Slave Select, SS). Каждое периферийное устройство на шине должно быть соединено своей линией SS с отдельным контактом на плате Arduino. Такая схема подключения эффективно выбирает нужное периферийное устройство на шине, отключая все остальные.

Интерфейс SPI поддерживается широким спектром устройств, включая многие типы тех же устройств, что поддерживают I2C. Нередко периферийные устройства поддерживают оба интерфейса, I2C и SPI.

Операции с битами

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных