|
|
ATtiny + displej 0,91 palce
Čip ATtiny lze připojit k malému displeji 0,91 palce s rozlišením 128x32 bodů. Lze jej pořídit jak v Asii tak v ČR. Popis čipu, postup nataktování a naprogramování je uveden v kapitole ATtiny. Výhodou této kombinace jsou malé rozměry a spotřeba (5V/13 mA, 3.3V/8 mA). Nevýhodou je relativně malá paměť čipu 8 kB a omezení velikosti textových fontů zde použité knihovny. Byl ověřen čip ATtiny85 s knihovnou "Tiny4kOLED" autora S. Denne. Uvedená knihovna upravuje universální sériovou komunikaci čipu na komunikaci i2c, která vyhovuje předmětnému displeji. Připojení displeje: ATtiny OLED Vcc ------ > Vcc GND ------ > GND P0(č.5) ------ > SDA P2(č.7) ------ > SCL
Do IDE nainstalujeme knihovnu "Tiny4kOLED.zip". Instalaci lze provést způsobem "zip". V IDE otevřeme "Projekt/Přidat knihovnu/Přidat.ZIP knihovnu ... najdeme soubor "Tiny4kOLED.zip" a odklikneme. Po restartu IDE dojde k instalaci knihovny do IDE. Displej oživíme kódem "ATtiny_OLED_text.ino". Klikneme na "ATtiny_OLED_text", po zobrazení přeneseme soubor "klipbordem" na pracovní, předem "vyčištěnou" plochu IDE, uložíme do IDE a nahrajeme do čipu ATtiny85. #include <Tiny4kOLED.h> // knihovna void setup() {oled.begin(); // iniciace displeje oled.clear(); // čistí paměť oled.on(); // zapnuti displeje oled.switchRenderFrame();} // iniciace poloviny paměti void loop() {oled.clear(); // čistí paměť oled.setFont(FONT8X16); // nastavení fontu 8x16 (8 pixelů šířka, 16 výška), použitá knihovna podporuje fonty písmen 6x8 a 8x19 oled.setCursor(50, 0); // pozice kursoru oled.print(F("ARBY")); // tisk textu (parametr F šetří paměť) oled.setFont(FONT6X8); // nastavení fontu 6x8 oled.setCursor(2, 2); // pozice kursoru oled.print(F("ATTiny85 - OLED (I2C)")); // tisk textu (parametr F šetří paměť) oled.setCursor(30, 3); // pozice kursoru oled.print(F("arduinohobby")); // tisk textu (parametr F šetří paměť) oled.switchFrame(); // přepnuti paměti(šetří paměť a eliminuje problikávání displeje) delay(1000);}
Komentáře k příkazům kódu jsou uvedeny na jednotlivých řádcích za dvojitým lomítkem. Po nahrání skeče se na displeji zobrazí naprogramovaný text. Velikost textu: první řádek (ARBY) 8x16 bodů, druhý a třetí řádek 6x8 bodů (větší fonty textu se nepodařilo zobrazit). Skeč zabíral 5218 bytu z max. 8192 paměti čipu, tj. na rozšíření skeče zůstalo 2,9 kB.
Pro názorné zobrazení hodnoty připojíme přes lineární potenciometr 50k napětí na analogový vstup "A2" (pin č.3 čipu). Jezdec potenciometru připojíme na kontakt č.3 čipu (vstup A2 čipu). Nastavení rozsahu měření je popsáno v kapitole "Měření napětí". Velikost fontu měřené hodnoty je 16x32 bodů, text popisující měřenou veličinu (zde příklad: % CO2) má velikost 8x16 bodů. Do čipu nahrajeme skeč "ATtiny_OLED_hodnota.ino":":
#include <Tiny4kOLED.h> //knihovna float T=0; //deklarace proměnných float H=0; void setup() {oled.begin(); // iniciace displeje oled.clear(); // čistí paměť oled.on(); // zapnutí displeje oled.switchRenderFrame(); // iniciace poloviny paměti analogReference(INTERNAL); // nastavení referenčního napětí 1.1 V pinMode(3, INPUT);} // nastavení pinu č.3 (A2) na vstup void loop() {H=analogRead(2); // načtení hodnoty na pinu A2 (pin č.3) T=((H*1.1)/1023); // úprava rozsahu měření, viz kapitola "Měření napětí" oled.clear(); // čistí paměť oled.setFont(FONT8X16); // velikost fontu textu 8x16 oled.setCursor(75, 2); // pozice kurzoru oled.print(F(" % CO2")); // tisk textu (parametr F šetří paměť) oled.setFont(FONT16X32); // velikost fontu číslic - může být 6x8, 8x16, 16x32 oled.setCursor(10, 0); // pozice kursoru oled.print(T); // tisk naměřené hodnoty oled.switchFrame(); // přepnuti paměti (šetří paměť a eliminuje problikávání displeje) delay(1000);}
Z analogového pinu se vrací, při dosažení referenčního napětí desetibitová hodnot 1023 (dále algebraicky upravena). Potenciometrem lze zobrazovanou hodnotu měnit. Poznámka ve schématu "max. 1,1V" odpovídá referenčnímu napětí 1,1 V, viz. příkaz "analogReference(INTERNAL)". Z hlediska poškození čipu by napětí na účelových pinech nemělo přesáhnout 5V. Pro názornost je použit text " % CO2", který zde neodpovídá měřené veličině. Obdobně lze sledovat na displeji různá analogová měření.
Skeč zabíral 6942 bytu z programovatelné paměti čipu 8192, tj. na rozšíření skeče zůstalo 1,25 kB. Částečně lze ušetřit např. použitím proměnných "int" (celá čísla), místo "float".
Březen 2021
Arby
|