Processing:Библиотеки/Hardware I/O/Класс I2C
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Класс 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();
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |