ATtiny+OLED

 

 

 

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. 

Skeč "ATtiny_OLED_text":

#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":":

 

Skeč "ATtiny_OLED_hodnota":

#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

 

Home

 

Arby

arduinohobby@email.cz