Update README.md

master
zen 3 years ago
parent 0e9c4a0cea
commit a42af2c1fe
  1. 77
      README.md

@ -462,6 +462,81 @@ except KeyboardInterrupt:
GPIO.cleanup()
```
### RGB диоды, тут большой вопрос, у меня они не заработали.
### RGB диоды.
Для работы с RGB необходимо внести некотрые изменения в конфиг запуска расбери, т.к. такие светодиоды WS2812B требуют очень специфического сигнала управления. Реолизовать его средствами linux не возможно, поэтому на помощь нам приходят такие модули как DMA и PWM. DMA позволяет передовать данные на светодиоды минуя центральный процуссор, а PWM через управление скважностью позволяет передвать данные от DMA в требуемом формате. Но затакую реализацию нужно платить, поэтому одновременно со светодиодами нельзя использовать аудиокарту встроенную в малину. Собственно для ее отключения нам и нужно исправить настройки запуска, для чего:
```bash
sudo nano /boot/config.txt
```
Нужно добавить в конец файла 2 строки:
```txt
hdmi_force_hotplug=1
hdmi_force_edid_audio=1
```
Также необходимо закоментировать эту строку:
```txt
dtparam=audio=on
```
превратив ее в такую:
```txt
#dtparam=audio=on
```
Так-же для работы необходимо установить дополнительные библиотеки, для чего необходимо сделать следующее:
```bash
sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel
sudo python3 -m pip install --force-reinstall adafruit-blinka
```
Для примера попробуем установть разные цвета на диоды:
```python
r = rgb_led()
r.color(0, 255, 255, 255)
r.color(1, 0, 0, 255)
r.color(2, 0, 255, 0)
r.color(3, 255, 0, 0)
```
Такого-же эффекта можно добится если указать не якость каждого отдельного цвета, а применить название соответствующего цвета.
```python
r = rgb_led()
r.color(0, "White")
r.color(1, "Blue")
r.color(2, "Green")
r.color(3, "Red")
```
Доступны следующие цвета:
- Aqua
- Black (выключить диод)
- Blue
- Purple
- Green
- Red
- White
- Yellow
## Датчики линии.
Для отслеживания линии в нижней части робота есть 5 оптических датчиков. Для простого примера можно просто считать с них значения:
```python
l = line_sensor()
while True:
print(l.AnalogRead())
time.sleep(0.2)
```
Если поставить робота на трассу (ее можно найти в папке docs), то маленикие значения (< 200) будут полученны с сенсора который находится над черной линией, а большие (> 800) над беым участком трассы.

Loading…
Cancel
Save