docs: editing

This commit is contained in:
Oleg Kalachev
2018-12-01 21:29:26 +03:00
parent ced31329ef
commit ff7ffa0c22

View File

@@ -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`. Каждый компонент должен находиться в диапазоне 0255, где 0 отсутствие цвета, а 255 наибольшая доступная яркость компонента в светодиодном модуле.
* `show()` обновляет состояние ленты. Только после её использования все программные изменения перемещаются на светодиодную ленту.
Остальные функции можно обнаружить, вызвав команду
```(bash)
```bash
pydoc neopixel
```
Результат выполнения команды:
```(bash)
```bash
Help on module neopixel:
NAME