i2c - Шина I2C

Функції для роботи з пристроями на шині I2C через роз’єм розширення.

Приклад:

-- Сканування шини I2C та вивід знайдених адрес

i2c.begin(8, 9) -- SDA = 8, SCL = 9
local devices = i2c.scan()
for _, addr in ipairs(devices) do
    print(string.format("Знайдено пристрій за адресою 0x%02X", addr))
end
class i2c
static begin(sda, scl, freq)

Ініціалізує шину I2C. Якщо піни не вказані, використовуються типові піни плати.

Parameters:
  • sda (integer) – ? номер піна SDA

  • scl (integer) – ? номер піна SCL

  • freq (integer) – ? частота шини в Гц (за замовчуванням 100000)

static set_clock(freq)

Встановлює тактову частоту шини I2C.

Parameters:

freq (integer) – частота шини в Гц

static scan()

Сканує шину та повертає таблицю знайдених 7-бітних адрес пристроїв.

Return type:

list[integer]

static write(addr, data)

Записує дані пристроєві за адресою addr.

Parameters:
  • addr (integer) – 7-бітна адреса пристрою

  • data (integer or list[integer]) – один байт або таблиця байтів

Returns:

статус (0 - успіх)

Return type:

integer

static read(addr, count)

Читає count байтів з пристрою за адресою addr.

Parameters:
  • addr (integer) – 7-бітна адреса пристрою

  • count (integer) – кількість байтів для читання

Return type:

list[integer]

static write_read(addr, wdata, count)

Записує дані, а потім виконує читання count байтів з повторним стартом (repeated start).

Parameters:
  • addr (integer) – 7-бітна адреса пристрою

  • wdata (integer or list[integer]) – один байт або таблиця байтів для запису

  • count (integer) – кількість байтів для читання

Return type:

list[integer]