Processing:Библиотеки/Hardware I/O/Класс I2C

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску


Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.



Класс I2C[1]

Обозначение

I2C

Описание

Открывает интерфейс I2C и делает устройство, на котором он открыт, ведущим I2C-устройством.

I2C – это последовательная шина данных, часто используемая для подключения периферийных интегральных схем к процессорам и микроконтроллерам. Он использует 2 контакта: SDA (для данных) и SDL (для тактового сигнала). К одной управляющей шине может быть подключено несколько ведомых устройств, но они должны иметь разные адреса (см. ниже).

Ведущее I2C-устройство инициирует передачу данных, попутно отсылая адрес ведомого I2C-устройства, с которым нужно осуществить коммуникацию. I2C-адрес состоит из 7 бит плюс 1 бит, который задает, что должно произойти – считывание или запись данных на устройство. В «даташитах» некоторых устройств I2C-адреса имеют 8-битную форму (7-битный адрес + бит чтения/записи), тогда как в других I2C-адреса указаны 7-битными (в виде 7 младших бит).

Библиотека Hardware I/O работает с 7-битными адресами – как и Arduino-библиотека Wire и как их выдает Linux-программа i2cdetect. Если адрес в «даташите» выше 127 (в шестнадцатеричном выражении – «0x7f») или если у устройства отдельные адреса для считывания и записи (они отличаются друг от друга на единицу), то в таком случае этот адрес лучше сдвинуть на один бит вправо прежде чем передавать его в виде аргумента функции beginTransmission().

Методы

  • beginTransmission() – начинает коммуникацию с подключенным устройством
  • close() – закрывает интерфейс I2C
  • endTransmission() – завершает текущие коммуникации
  • list() – составляет список всех доступных интерфейсов I2C
  • read() – считывает байты с подключенного устройства
  • write() – задает байты, которые нужно записать на устройство

Конструктор

I2C(dev)

Параметры

dev  название интерфейса. Тип данных  String

Возвращаемое значение

Пример

import processing.io.*;
I2C i2c;

void setup() {
  //printArray(I2C.list());
  i2c = new I2C(I2C.list()[0]);
}

void draw() {
  background(map(mouseX, 0, width, 0, 255));

  // отправляем значение через интерфейс I2C 
  // на цифроаналоговый конвертер с адресом 96 (шестн. - 0x60):
  int val = int(4095 * map(mouseX, 0, width, 0.0, 1.0));
  i2c.beginTransmission(0x60);
  i2c.write(val >> 8);
  i2c.write(val & 255);
  i2c.endTransmission();
}

См.также

Внешние ссылки