From a42af2c1fe53175a9a402287baf767e543d8c7d4 Mon Sep 17 00:00:00 2001 From: zen Date: Thu, 6 May 2021 15:08:55 +0000 Subject: [PATCH] Update README.md --- README.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a42c77..1e41df0 100644 --- a/README.md +++ b/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) над беым участком трассы.