Расширенные возможности библиотек iarduino для шины I2C.

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

Библиотеки iarduino могут использовать как аппаратную, так и программную реализацию шины I2C
При этом выбранный тип реализации шины I2C не влияет на синтаксис функций и методов библиотек iarduino.

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

При работе с программной шиной I2C, датчики можно подключать к любым выводам, Вы их назначаете сами.

Аппаратная шина I2C:

По умолчанию библиотеки iarduino самостоятельно работают с аппаратной шиной I2C. Датчики подключаются к Arduino используя выводы SDA и SCL (они либо подписаны на плате, либо указаны в документации).

  • Пример:
#include <iarduino_AM2320.h>     // Подключаем библиотеку iarduino_AM2320.
iarduino_AM2320 sensor;          // Объявляем объект sensor для работы с датчиком AM2320, используя функции и методы библиотеки iarduino_AM2320.
                                 //
void setup(){                    //
     sensor.begin();             // Инициируем работу с датчиком AM2320.
     Serial.begin(9600);         // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод.
}                                //
                                 //
void loop(){                     //
     sensor.read();              // Читаем показания датчика.
     Serial.println(sensor.tem); // Выводим температуру.
     Serial.println(sensor.hum); // Выводим влажность.
     delay(1000);                // Ждём секунду и повторяем вывод.
}                                //
  • Преимущества: Не требуется подключение дополнительных библиотек. Скетч занимает меньше памяти.
  • Недостатки: Поддерживаются не все платы.

Аппаратная шина I2C с библиотекой Wire:

Если перед подключением библиотек iarduino подключить библиотеку Wire, то библиотеки iarduino будут использовать методы и функции библиотеки Wire для работы с аппаратной шиной I2C. Датчики подключаются к Arduino используя выводы SDA и SCL (они либо подписаны на плате, либо указаны в документации).

  • Пример:
#include <Wire.h>                // Подключаем библиотеку Wire для работы с шиной I2C.
#include <iarduino_AM2320.h>     // Подключаем библиотеку iarduino_AM2320.
iarduino_AM2320 sensor;          // Объявляем объект sensor для работы с датчиком AM2320, используя функции и методы библиотеки iarduino_AM2320.
                                 //
void setup(){                    //
     sensor.begin();             // Инициируем работу с датчиком AM2320.
     Serial.begin(9600);         // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод.
}                                //
                                 //
void loop(){                     //
     sensor.read();              // Читаем показания датчика.
     Serial.println(sensor.tem); // Выводим температуру.
     Serial.println(sensor.hum); // Выводим влажность.
     delay(1000);                // Ждём секунду и повторяем вывод.
}                                //

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

  • Преимущества: Поддерживается множество плат.
  • Недостатки: Требуется больше памяти.

Программная реализация шины I2C:

Если перед подключением библиотек iarduino определить выводы pin_SW_SDA и pin_SW_SCL, то библиотеки iarduino реализуют программную шину I2C на назначенных выводах. Датчики подключаются к Arduino используя любые выводы назначенные Вами как SDA и SCL.

  • Пример:
#define pin_SW_SDA 3             // Назначаем вывод D3 Arduino для работы в качестве линии SDA программной шины I2C.
#define pin_SW_SCL 9             // Назначаем вывод D9 Arduino для работы в качестве линии SCL программной шины I2C.
#include <iarduino_AM2320.h>     // Подключаем библиотеку iarduino_AM2320.
iarduino_AM2320 sensor;          // Объявляем объект sensor для работы с датчиком AM2320, используя функции и методы библиотеки iarduino_AM2320.
                                 //
void setup(){                    //
     sensor.begin();             // Инициируем работу с датчиком AM2320.
     Serial.begin(9600);         // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод.
}                                //
                                 //
void loop(){                     //
     sensor.read();              // Читаем показания датчика.
     Serial.println(sensor.tem); // Выводим температуру.
     Serial.println(sensor.hum); // Выводим влажность.
     delay(1000);                // Ждём секунду и повторяем вывод.
}                                //

Код данного примера отличается от предыдущих только двумя первыми строками в которых назначены выводы для шины I2C.
Указанные Вами выводы будут использованы в качестве линий SDA и SCL шины I2C.

  • Преимущества: Возможна работа с модулями I2C на любых выводах Arduino.
  • Недостатки: Поддерживаются не все платы.
  • Примечание: Библиотеки iarduino не реализуют программную шину I2C для тех модулей с которыми они не работают.

Особенности:

Если перед подключением библиотек iarduino определить выводы pin_SW_SDA, pin_SW_SCL и подключить библиотеку Wire, то модули работающие с библиотеками iarduino будут использовать программную шину I2C на назначенных выводах.

Если до определения выводов pin_SW_SDA и pin_SW_SCL подключить хотя бы одну библиотеку iarduino, то все библиотеки iarduino будут использовать аппаратную шину I2C.

Обсуждение

Присоединяйся

На главную