29. díl – OctopusLAB
EDU_KIT1 – barevná RGB Led
Jako jeden ze základních zobrazovacích prvků využíváme plnobarevný modul typu WS2812. V knihovnách pro Arduino ho možná znáte jako Neopixel. Skládá se z trojice svítivých diod (RGB = RED, GREEN, BLUE) a z řídícího integrovaného obvodu.
Modul WS2812 (o rozměrech 5×5 mm) bývá předosazen v celé řadě variant. Namátkou vyberme Led pásek o různé hustotě diod i různých počtech (délkách). Dále krátký rovný modul s osmicí WS (ve spodní části obrázku), matici 4×4, kruh 12, 24 a další. My tento modul využíváme i samostatně, ale jeho největší výhodou je právě možnost řazení a vytváření větších celků za pomoci pouhých tří vodičů (napájení a datová linka). Zřetězené řídící obvody umožňují individuální adresování jednotlivých modulů, takže programově můžeme měnit barvu libovolné WS ledky pomocí indexu (čísla 0 až 7 na ukázce).
Prvních pár pokusů s RGB
Podrobněji se o knihovně pro Micropython rozepisujeme v naší dokumentaci:
https://docs.octopuslab.cz/basicdoc/#rgb.
Požadovaná barva jednoho modulu vzniká složením ze tří složek – RGB.
Když svítí všechny naplno, vidíme téměř bílou barvu, „černá barva“ je definována stavem nesvítí.
# inicializace RGB from components.rgb import Rgb ws = Rgb(15) # EDU_KIT1: BUILT_IN_RGB ws.color((255,0,0)) # (255,0,0) => RED import colors_rgb as rgb # definice barev ws.color(rgb.BLUE) # barvy dle názvu
WiFi lampička ovládaná mobilem
V tomto projektu využíváme modul se šestnácti WS ledkami (v matici 4×4). Pokud se připojíte mobilem ke stejné lokální síti, kde je ESP, uvidíte interaktivní webové stránky, které ESP generuje.
Odkaz na aktuální zdrojový kód celého projektu:
https://github.com/octopuslab-cz/esp32-micropython-webserver-control.
Pokud vás projekt zajímá více, napište nám na info@octopuslab.cz.
Barvu světla určí příspěvek na Twitteru
Postupně se propracováváme ke komplexnějším ukázkám a toto je další příklad – využití API třetí strany (Application Programming Interface). Na odkaze http://api.thingspeak.com/channels/1417/field/2/last.txt uvidíte vždy poslední barvu (definována řetězcem #RGB), která byla publikována na Twitteru s hashtagem #cheerlights.
Můžete využít i jinou aplikaci nebo si napsat vlastní, toto je pouze ukázka možnosti, kterou jsme zjednodušili na maximální možnou míru. K inicializaci RGB totiž stačí přidat připojení k wifi a pouhých pár řádek programu a WS ledka na Vašem ESP bude svítit barvou, která je aktuální (poslední uveřejněná).
... from time import sleep from utils.octopus_api import twitter_rgb while True: # kouzlo Pythonu, vše podstatné na jednom řádku: ws.color(twitter_rgb()) # dotazujeme se každých 30 vteřin, rychleji to nedoporučujeme -> sleep(30)