OctopusLAB 65
Cyber (matrix) clock – velké digitálné hodiny.
Jelikož nás baví moderní technologie i jejich kulturní přesah, zkusili jsme se tentokrát zapojit i do poněkud netradičního projektu. Měli jsme možnost spolupracovat na několika „atrakcích“ prvního ročníku CyberTown 22. V minulém díle jsme popisovali PONG1D, který slavil na akci mimořádný úspěch. Dnes vám přiblížíme relativně jednoduché digitální hodiny, které jsme v duchu akce pojmenovali stylově cyber clock.
Na následujícím obrázku jsou snad trochu vidět (čas 22:12).
Cybertown je postcyberpunkový multižánrový festival zasazený do fiktivní dystopické budoucnosti. Odehrává se v kulisách postapokalyptického městečka na bývalé raketové základně. Uvádějí stručně pořadatelé na stánkách www.cybertown.cz/.
Základem zadání bylo navrhnout a vyrobit „retro digitání hodiny na bránu u radnice“. Pokud možno zadarmo a pokud možno včera. Požadované rozměry byly zhruba 120×50 cm. Tak velké segmenty nemáme. Ano, šlo by to složit z jednotlivých LEDek nebo žárovek, ale tolik času na to nebylo.
Už při tvorbě PONGU jsem si vzpomenul, že sériové „programovatelné“ LEDky se dají propojovat v prostoru do jednotlivých řad, které pak tvoří plochu, na které půjdou hodiny snadno naprogramovat. A protože jsem to chtěl hned rychle zkusit, LED pásek jsem jen cik-cak smotal do požadovaného tvaru, aniž bych musel něco stříhat a drátkama složitě propojovat. Použil jsem ESP32 v DoIT adapteru a již popisovaný modul reálného času ds3231 a hlavně „programovatelný“ LED pásek (s ws2812).
A hrubý základ pro hodiny byl velmi rychle hotový.
Na obrázku vidíte, jak je pásek „smotán“. Určili jsme si „mezery“ (zelené body), které se nevyužívají a slouží jen k propojení a zachování kompaktnosti. Je nutné odlišit sudé a liché řádky (1 až 5), jelikož se pro ně vykreslují body číslovek v opačném pořadí. V dolní části obrázku je vidět, kde jsou na kousku rozvinu pásku LEDky tvořící číslice „2“ a „3“. Sudý řádek je pak indexován reverzně.
Matice čísel pro jednotlivé číslovky se nachází v samostatném modulu assets/char4x7.py, kde je přesně definováno, které LEDky v daných číslech svítí. Máme náznak i pro jiné znaky a velikosti, ale pouze tato jedna knihovna je dokončená a odzkoušená.
Výsledný program včetně nových knihoven je opět na githubu:
https://github.com/octopuslab-cz/cyber-clock
import ds3231 # real time from assets.char4x7 import * # matrix .... ws = Rgb(27,WSMAX) # 27 DEV3 """ ROW -----+ odd ---o RX | RXX o +----+ even ---o """ # --- LED strip --> WSMAX = 250 RX, RXX = 25, 3 # row, space INTENSITY = 200 # intenzita
Opět jen seznámení s nejdůležitějšími konstantami používanými v programu:
WSMAX – celkový počet LEDek v pásku
RX – počet LEDek na jednom řádku (na našem obrázku by to bylo 10, 4+2+4).
RXX – počet nevyužitých LEDek (v ohybu) máme také 3 (na obrázku zelené).
INTENSITY – intenzita jasu, v šeru stačí 100, ale ve dne bylo lepší 200.
Pásek jsme přichytili k odřezku plastového parapetu a celý displej překryli vrstvou Miralonu (slouží jako difuzor pro rozplýlení světla). Finální ochranu tvoří dutinková polykarbonátová deska vsazená mezi dva odřezky z pozinkovaných profilů využívaných pro sádrokartony.