mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-27 21:49:32 +00:00
docs: editing
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## Подключение и определение типа ленты
|
||||
|
||||
Есть два основных типа адресуемых светодиодов: WS2812 и WS2812B. Принцип управления один и тот же, однако тайминги разные. Найдите на ленте чип светодиода и определите сколько у него ножек: 6 или 4. Если ножек 6, то это WS2812, если 4 - то WS2812B или его аналог SK6812.
|
||||
Есть два основных типа адресуемых светодиодов: WS2812 и WS2812B. Принцип управления один и тот же, однако тайминги разные. Найдите на ленте чип светодиода и определите сколько у него ножек: 6 или 4. Если ножек 6, то это WS2812, если 4 – то WS2812B или его аналог SK6812.
|
||||
|
||||
<img src="../assets/timing_with_thumbs.png" height="400px" alt="leds">
|
||||
|
||||
@@ -14,38 +14,38 @@
|
||||
| 5V | 5V |
|
||||
| DIN | GPIO21 или GPIO31 |
|
||||
|
||||
Типы лент для обозначения ленты в коде описаны в [файле](https://github.com/jgarff/rpi_ws281x/blob/master/ws2811.h). Основные типы лент - это WS2812\_STRIP \(для WS2812\) и SK6812\_STRIP \(для WS2812B или SK6812\).
|
||||
Типы лент для обозначения ленты в коде описаны в [файле](https://github.com/jgarff/rpi_ws281x/blob/master/ws2811.h). Основные типы лент – это WS2812\_STRIP \(для WS2812\) и SK6812\_STRIP \(для WS2812B или SK6812\).
|
||||
|
||||
## Установка библиотеки для работы со светодиодной лентой
|
||||
|
||||
Определите папку, в которой будут находиться файлы библиотеки, и открыть путь к этой папке в терминале. По-умолчанию можно использовать домашнюю папку, для перехода в неё нужно выполнить команду
|
||||
Определите папку, в которой будут находиться файлы библиотеки, и открыть путь к этой папке в терминале. По-умолчанию можно использовать домашнюю папку, для перехода в неё нужно выполнить команду:
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
cd ~
|
||||
```
|
||||
|
||||
Склонируйте репозиторий библиотеки для работы с led лентами на Raspberry Pi
|
||||
Склонируйте репозиторий библиотеки для работы с led лентами на Raspberry Pi:
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
git clone https://github.com/jgarff/rpi_ws281x.git
|
||||
```
|
||||
|
||||
Установите [Scons](https://ru.wikipedia.org/wiki/SCons) и [Swig](https://ru.wikipedia.org/wiki/SWIG)
|
||||
Установите [Scons](https://ru.wikipedia.org/wiki/SCons) и [Swig](https://ru.wikipedia.org/wiki/SWIG):
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
sudo apt-get install scons python-dev swig
|
||||
```
|
||||
|
||||
Соберите библиотеку с помощью Scons \(команда выполняется внутри папки с исходным кодом библиотеки\)
|
||||
Соберите библиотеку с помощью Scons \(команда выполняется внутри папки с исходным кодом библиотеки\):
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
cd rpi_ws281x
|
||||
scons
|
||||
```
|
||||
|
||||
Соберите python обёртку библиотеки с помощью Swig и установите её для возможности использования в своих python скриптах.
|
||||
Соберите Python-обёртку библиотеки с помощью Swig и установите её для возможности использования в своих Python-скриптах.
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
cd python
|
||||
sudo python ./setup.py build
|
||||
sudo python ./setup.py install
|
||||
@@ -53,13 +53,13 @@ sudo python ./setup.py install
|
||||
|
||||
## Пример программы для светодиодной ленты на RPI3
|
||||
|
||||
Откройте в текстовом редакторе файл strandtest.py из папки python/examples \(находится в папке с библиотекой\)
|
||||
Откройте в текстовом редакторе файл `strandtest.py` из папки `python/examples` \(находится в папке с библиотекой\):
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
nano strandtest.py
|
||||
```
|
||||
|
||||
Найдите участок кода с настройками ленты
|
||||
Найдите участок кода с настройками ленты:
|
||||
|
||||
```(bash)
|
||||
# LED strip configuration:
|
||||
@@ -76,7 +76,7 @@ LED_STRIP = ws.WS2811_STRIP_GRB # Strip type and colour ordering
|
||||
|
||||
Поправьте настройки для работы с лентой и сохраните файл. Чтобы использование ленты не мешало работе других устройств на Raspberry Pi, рекомендуется использовать следующие настройки \(настройки подходят для ленты в комплекте с Клевер 3\):
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
# LED strip configuration:
|
||||
LED_COUNT = 30 # Number of LED pixels.
|
||||
LED_PIN = 21 # GPIO pin connected to the pixels.
|
||||
@@ -88,9 +88,9 @@ LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
|
||||
LED_STRIP = ws.SK6812_STRIP # Strip type and colour ordering
|
||||
```
|
||||
|
||||
Запустите тестовую программу, используя права администратора
|
||||
Запустите тестовую программу, используя права администратора:
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
sudo python strandtest.py
|
||||
```
|
||||
|
||||
@@ -98,9 +98,9 @@ sudo python strandtest.py
|
||||
|
||||
## Совместимость с ROS и Python
|
||||
|
||||
При запуске программы с помощью sudo пользовательское окружение изменяется и появляются ошибки импорта библиотек, т.к. в окружении отсутствуют необходимые пути. Чтобы добавить в окружение пути к библиотекам python и пакетам ROS, необходимо добавить в файл /etc/sudoers следующие строки:
|
||||
При запуске программы с помощью sudo пользовательское окружение изменяется и появляются ошибки импорта библиотек, т.к. в окружении отсутствуют необходимые пути. Чтобы добавить в окружение пути к библиотекам Python и пакетам ROS, необходимо добавить в файл `/etc/sudoers` следующие строки:
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
Defaults env_keep += "PYTHONPATH"
|
||||
Defaults env_keep += "PATH"
|
||||
Defaults env_keep += "ROS_ROOT"
|
||||
@@ -113,18 +113,18 @@ Defaults env_keep += "ROS_LOG_DIR"
|
||||
|
||||
## Функции для работы со светодиодной лентой
|
||||
|
||||
Для подключения библиотеки и её корректной работы требуется подключить следующие модули: neopixel - для работы ленты, time - для управления задержками, sys и signal для прерываний и формирования управляющего сигнала.
|
||||
Для подключения библиотеки и её корректной работы требуется подключить следующие модули: neopixel - для работы ленты, time – для управления задержками, sys и signal для прерываний и формирования управляющего сигнала.
|
||||
|
||||
```(python)
|
||||
```python
|
||||
from neopixel import *
|
||||
import time
|
||||
import signal
|
||||
import sys
|
||||
```
|
||||
|
||||
Для работы с лентой необходимо создать объект типа **Adafruit\_NeoPixel **и инициализировать библиотеку:
|
||||
Для работы с лентой необходимо создать объект типа **Adafruit_NeoPixel** и инициализировать библиотеку:
|
||||
|
||||
```(python)
|
||||
```python
|
||||
# Создание объекта NeoPixel c заданной конфигурацией
|
||||
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT)
|
||||
# Инициализация библиотеки, должна быть выполнена перед другими функциями
|
||||
@@ -133,20 +133,20 @@ strip.begin()
|
||||
|
||||
Основные функции, которые используются для управления лентой:
|
||||
|
||||
* **numPixels\(\)** - Возвращает количество пикселей в ленте. Удобно для цикличного управления всей лентой целиком.
|
||||
* **setPixelColor\(pos, color\)** - Устанавливает цвет пикселя в позиции **pos** в цвет **color**. Цвет должен быть 24 битным значением, где первые 8 бит - красный цвет \(red\), следующие 8 бит - зелёный цвет \(green\) и последние 8 бит - голубой \(blue\). Для получения значения **color** можно использовать функцию **Color\(red, green, blue\)**, которая составляет это значение из 3х компонент. Каждый компонент должен находиться в диапазоне 0-255, где 0 - отсутствие цвета, а 255 - наибольшая доступная яркость компонента в светодиодном модуле.
|
||||
* **setPixelColorRGB\(pos, red, green, blue\)** - Устанавливает цвет пикселя в позиции pos в цвет, состоящий из компонент **red, green, blue**. Каждый компонент должен находиться в диапазоне 0-255, где 0 - отсутствие цвета, а 255 - наибольшая доступная яркость компонента в светодиодном модуле.
|
||||
* **show\(\)** - Обновляет состояние ленты. Только после её использования все программные изменения перемещаются на светодиодную ленту.
|
||||
* `numPixels()` - возвращает количество пикселей в ленте. Удобно для цикличного управления всей лентой целиком.
|
||||
* `setPixelColor(pos, color)` – устанавливает цвет пикселя в позиции `pos` в цвет `color`. Цвет должен быть 24 битным значением, где первые 8 бит - красный цвет \(red\), следующие 8 бит - зелёный цвет \(green\) и последние 8 бит - голубой \(blue\). Для получения значения `color` можно использовать функцию `Color(red, green, blue)`, которая составляет это значение из 3х компонент. Каждый компонент должен находиться в диапазоне 0-255, где 0 – отсутствие цвета, а 255 – наибольшая доступная яркость компонента в светодиодном модуле.
|
||||
* `setPixelColorRGB(pos, red, green, blue)` – устанавливает цвет пикселя в позиции pos в цвет, состоящий из компонент `red`, `green`, `blue`. Каждый компонент должен находиться в диапазоне 0–255, где 0 – отсутствие цвета, а 255 – наибольшая доступная яркость компонента в светодиодном модуле.
|
||||
* `show()` – обновляет состояние ленты. Только после её использования все программные изменения перемещаются на светодиодную ленту.
|
||||
|
||||
Остальные функции можно обнаружить, вызвав команду
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
pydoc neopixel
|
||||
```
|
||||
|
||||
Результат выполнения команды:
|
||||
|
||||
```(bash)
|
||||
```bash
|
||||
Help on module neopixel:
|
||||
|
||||
NAME
|
||||
|
||||
Reference in New Issue
Block a user