Posuvný registr s rotačním enkodérem a bat. napájením
Materiál
ESP8266 D1 mini
KY-040 rotační enkodér s tlačítkem
8x LED dioda červená, ideálně čirá
8x LED dioda žlutá, ideálně čirá
8x LED dioda zelená, ideálně čirá
1x RGB led, ideálně čirá
2x rezistorová síť varianta B (oddělené odpory) 4x1K0, např. SIP08G102B
2x rezistorová síť varianta B (oddělené odpory) 4x1K5, např. SIP08G152B
1x rezistor 100K
kapacitor 47-100µF, elektrolytický, ideálně keramický s polaritou
74HC595 nebo 74HCT595, posuvný registr s tří stavovým výstupem
Pevný VLDO stabilizátor na 3,3V. Např. NCP59151-33
Držák baterie 4xAA
4x AA baterie, počítáno je s nabíjecími, které mají 1,2 V. Stabilizátor je do 13,5 V
cca 37 kusů propojek
pro variantu s jedním posuvným registrem
Úvod
Mým cílem je sestavit hračku pro syna a naučit se pracovat s kaskádou posuvných registrů. Původně mělo být jen několik LED a jedna RGB LEDka s rotačním enkodérem, kterým se se řídilo 8 LED diod, změny barvy RGB LEDky a zároveň přepínaly efekty s PWM modulací. Všechny GPIO piny ESP8266 podporují PWM modulaci. GPIO linek však není dostatek a dost jich obsazuje rotační enkodér.
Řešením se zdál posuvný registr. Ten však neumí PWM modulaci :) Součástky, které toto umí řešit jsou pro mne zas zbytečně složité.
Napadlo mne tedy, zkusit PWM modulaci vyřešit nějakou rozptylovou funkcí, která by ji nahrazovala počtem 1 a 0 za sekundu a když už jsem u toho tak zkusit dát několik posuvných registrů do kaskády.
Nejprve se však pokusím vyřešit rozsvícení LED přes pouze jeden posuvný registr, což se ukázalo podle různých návodů jako poněkuď nefunkční. Přečetl jsem si tedy datasheet k 74HC595 a udělal jsem si to po svém, což se vyplatilo :)
Jak funguje 74HC595N?
Na rovinu jsem o tomto obvodu nevěděl nic a z číslicové techniky mám sotva základ. Před měsícem jsem však o ESP8266 nevěděl také nic a je to teď úplně jinak. Takže Vás chci na tomto místě povzbudit, překonat své bloky a prát se sám se sebou o výsledky.
Tak tedy princip. Osobně chápu posuvný registr jako tři síta s 8 sloty.
První síto je shift register, do kterého postupně posíláte jedním pinem DS, nebo také jinde pojmenovým jako SER, jednotlivé bity. Po zaslání každého bitu pošlete jedničku do pinu SHCP (je dobré se ujistit, že před odesláním bitu je pin SHCP na log. 0).
Pin SHCP slouží jako hodiny, které taktujete při každém odesílání jednotlivého bytu
Druhé síto je storage register. Skladovací register, do kterého propadnou data z posuvného regitru, když pošlete jedničku na pin STCP
Třetí síto je výstupním sítem, kdy se objeví obsah skladovacího registru na výstupech Q0 až Q7. Aby se tak stalo, musí být pin OE (output enable) uzemněn. Tento pin je aktivní při log 0, takže ho stačí trvale uzemnit, pokud chceme aby se data ihned objevila na výstupu. Pozn.: třetímu sítu lze přepnout chování na vstupní síto.
Část 1. Jeden posuvný registr
Použité knihovny z Arduino IDE:
Encoder by Paul Stoffregen verze 1.4.1
Zdroje