Перейти к содержанию

Энкодер

Энкодер — это устройство, которое преобразует вращательное движение в цифровой сигнал. Он широко используется в различных приложениях — от кухонной техники и ручек регулировки громкости до автомобилей и 3D-принтеров.


Базовое использование


Encoder(slot)

Чтобы создать объект Encoder, вызовите Encoder(slot).

Аргументы:

  • slot (string | int | tuple) — метка слота ("A", "B", "C", "D", "E", "F", "G", "H"), порт пина (0, 2 и т.д.), кортеж (0, Pin.IN)

Возвращает: Возвращает объект RotaryEncoder для slot.

from pibody import Encoder

encoder = Encoder("A")

.read() -> int

Возвращает текущую позицию энкодера.

data = encoder.read()
print(data)

.value() -> int

То же, что и .read(), возвращает текущую позицию энкодера.

value = encoder.value()
print(value)

.bound(min_val, max_val)

Ограничивает значения энкодера в диапазоне от min_val до max_val.

Аргументы:

  • min_val (int | float) — минимальное значение энкодера. По умолчанию: 0
  • max_val (int | float) — максимальное значение энкодера. По умолчанию: 10
encoder.bound(1, 10)

.wrap(min_val, max_val)

Зацикливает значения энкодера в диапазоне от min_val до max_val.

Аргументы:

  • min_val (int | float) — минимальное значение энкодера. По умолчанию: 0
  • max_val (int | float) — максимальное значение энкодера. По умолчанию: 10
encoder.wrap(1, 10)

.free()

Сбрасывает режимы bound и wrap, возвращая энкодер в режим без ограничений.

encoder.free()

Другие функции


.old_value() -> int

Возвращает предыдущую позицию энкодера до последнего изменения.

data = encoder.old_value()
print(data)

.set_value(val)

Устанавливает значение энкодера.

Аргументы:

  • val (int | float) — значение энкодера. По умолчанию: 0
encoder.set_value(0)

.reset()

Сбрасывает значение энкодера на 0.

encoder.reset()

.direction() -> int

Возвращает направление вращения:

  • 1 — по часовой стрелке
  • -1 — против часовой стрелки
  • 0 — нет движения
direction = encoder.direction()
print(direction)

.toggle_direction()

Изменяет направление вращения на противоположное.

encoder.toggle_direction()

.set_incr(incr)

Изменяет шаг инкремента энкодера.

Аргументы:

  • incr (int | float) — шаг увеличения/уменьшения энкодера. По умолчанию: 1
encoder.set_incr(0.1)

Справочник API


.set(value, min_val, incr, max_val, reverse, range_mode)

Устанавливает конфигурацию энкодера. Любой не переданный параметр остаётся без изменений.

Аргументы:

  • value (int | float) — текущее значение энкодера. По умолчанию: 0
  • min_val (int | float) — минимальное значение энкодера. По умолчанию: 0
  • max_val (int | float) — максимальное значение энкодера. По умолчанию: 10
  • incr (int | float) — шаг увеличения/уменьшения энкодера. По умолчанию: 1
  • reverse (bool) — если True, направление вращения инвертируется. По умолчанию: False
  • range_mode — необязательное целое число, задающее режим обработки значений:

    • RANGE_UNBOUNDED (1) — значение может увеличиваться/уменьшаться без ограничений
    • RANGE_WRAP (2) — значение зацикливается между min_val и max_val
    • RANGE_BOUNDED (3) — значение останавливается на min_val и max_val

    По умолчанию range_mode равен RANGE_UNBOUNDED.

encoder.set(value=0.5, min_val=0.1, incr=0.1, max_val=0.9, reverse=False, range_mode=3)

.close()

Отключает прерывания энкодера и останавливает обновление значений.

encoder.close()

.bar(width, fill_char, empty_char) -> string

Возвращает текстовый индикатор выполнения, показывающий текущее положение значения между min_val и max_val.

Аргументы:

  • width (int) — необязательный размер строки. По умолчанию: 20
  • fill_char (char) — символ для заполненной части
  • empty_char (char) — символ для пустой части
bar = encoder.bar()
print(bar)

.live_bar(width, fill_char, empty_char)

Выводит в консоль обновляемый в реальном времени индикатор выполнения.

Аргументы:

  • width (int) — необязательный размер строки. По умолчанию: 20
  • fill_char (char) — символ для заполненной части
  • empty_char (char) — символ для пустой части
encoder.live_bar()

.add_listener(callback)

Добавляет функцию в качестве аргумента. Эта функция будет вызвана при повороте энкодера.

encoder.add_listener(cb)

.remove_listener(callback)

Удаляет ранее добавленную функцию callback. Вызывает ValueError, если callback не найден.

encoder.remove_listener(cb)