Ищу библиотеку для управления светодиодами с помощью FastLED через последовательную связь с другим устройством, работающим на Python.

serial python led-strip

У меня есть светодиодный дисплей, подключенный к микроконтроллеру Teensy с помощью библиотеки FastLED, который подключен к Raspberry Pi Zero, работающему на Python, через USB-концентратор.

Я ищу существующую библиотеку, которая обрабатывает последовательную связь, чтобы я мог запускать команды на Python, которые запускают эквивалентные команды в FastLED на Teensy эффективно и с учетом частоты кадров.

Я много раз пытался найти информацию в Google и в документации FastLED, чтобы найти что-нибудь подобное. Хотя существует множество примеров кода для управления светодиодными дисплеями через последовательный порт, я не нашёл универсальной библиотеки или пакета для этого.

Например, я ищу что-то вроде этого (упрощенно):

На RPi:

dis = Display()
dis.connect()

for i in range(10):
    dis.setLED(i, (64, 0, 0))

Заставит Тинси выполнить:

leds[i].r = data[i];
leds[i].g = data[i + 1];
leds[i].b = data[i + 2];

Я ожидаю других удобных функций, таких как:

leds = [11, 15, 19]
data = [
    (32, 64, 96),
    (64, 32, 96)
    (96, 32, 64)
]
dis.setLEDs(leds, data)

data = ...
dis.setAllLEDs(data)

dis.clear()

Что-то в этом роде.

Конечно, я могу пойти дальше и написать библиотеку, чтобы сделать это самостоятельно, но я не могу поверить, что ее еще не существует, поэтому надеюсь, кто-нибудь укажет мне на что-нибудь.

, 👍-1

Обсуждение

Аналогичный вопрос был на Reddit 4 года назад: [Есть ли эквивалентный модуль FastLED для Python?](https://www.reddit.com/r/arduino/comments/knl140/is_there_a_fastled_equivalent_module_for_python/). Один из ответов включает библиотеку Micropython., @Bill

На стороне Python (RPi) используйте PySerial для отправки структурированных данных светодиода. На стороне Teensy (FastLED) считывайте данные с последовательного порта и обновляйте FastLED соответствующим образом., @liaifat85

@liaifat85 спасибо за объяснение. Как я уже сказал, я мог бы сделать это сам, но надеялся, что для этого уже есть библиотека., @Bill

Только что нашел эту библиотеку для обработки последовательной связи Arduino, [Serial_Packets](https://registry.platformio.org/libraries/zapta/Serial_Packets), которую можно использовать в паре с этой библиотекой Python, [serial-packets](https://pypi.org/project/serial-packets/)., @Bill


1 ответ


1

Это не идеальный ответ, но это лучшее, что я смог найти.

Robin2 на форуме Arduino написал хорошую статью о передовых методах последовательной связи и демонстрацию того, как организовать связь между Arduino и другим компьютером под управлением Python:

  • Основы последовательного ввода — обновлено ( апрель 2016 г.)
  • Демонстрация связи ПК-Arduino с использованием Python (март 2014 г.)

Хотя эти ресурсы не являются специализированными для работы со светодиодами, я нашел их очень полезными при написании собственного кода.

,

Ваш ответ можно улучшить, добавив дополнительную информацию. Пожалуйста, [редактируйте], чтобы добавить дополнительные сведения, например, ссылки или документацию, чтобы другие могли подтвердить правильность вашего ответа. Подробнее о том, как писать хорошие ответы, можно узнать [в справочном центре](/help/how-to-answer)., @Community

@CommunityBot Этот ответ содержит две ссылки на материал, частично отвечающий на вопрос, и ссылку на автора. Я не знаю другого способа цитировать веб-ресурсы, кроме URL, автора и даты., @Bill

Для тех, кому интересно, я уже написал обновлённые версии этих скриптов для Python 2 и 3+ и опубликовал их здесь: https://github.com/billtubbs/pyserial-examples/tree/main/robin2_demo, @Bill