Энкодер
Энкодер — это устройство, которое преобразует вращательное движение в цифровой сигнал. Он широко используется в различных приложениях — от кухонной техники и ручек регулировки громкости до автомобилей и 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)— минимальное значение энкодера. По умолчанию: 0max_val (int | float)— максимальное значение энкодера. По умолчанию: 10
encoder.bound(1, 10)
.wrap(min_val, max_val)
Зацикливает значения энкодера в диапазоне от min_val до max_val.
Аргументы:
min_val (int | float)— минимальное значение энкодера. По умолчанию: 0max_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)— текущее значение энкодера. По умолчанию: 0min_val (int | float)— минимальное значение энкодера. По умолчанию: 0max_val (int | float)— максимальное значение энкодера. По умолчанию: 10incr (int | float)— шаг увеличения/уменьшения энкодера. По умолчанию: 1reverse (bool)— если True, направление вращения инвертируется. По умолчанию: False-
range_mode— необязательное целое число, задающее режим обработки значений:RANGE_UNBOUNDED(1) — значение может увеличиваться/уменьшаться без ограниченийRANGE_WRAP(2) — значение зацикливается между min_val и max_valRANGE_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)— необязательный размер строки. По умолчанию: 20fill_char (char)— символ для заполненной частиempty_char (char)— символ для пустой части
bar = encoder.bar()
print(bar)
.live_bar(width, fill_char, empty_char)
Выводит в консоль обновляемый в реальном времени индикатор выполнения.
Аргументы:
width (int)— необязательный размер строки. По умолчанию: 20fill_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)