SAMSUNG_052020 SAMSUNG_052020 SAMSUNG_052020 Advertisement

IoT prakticky: Mikrokontrolér ATtiny – pripojenie displeja

Mikrokontroléry
0

predchádzajúcej časti sme ukázali ako pomocou Arduina, alebo USBasp programátora naprogramovať mikrokontrolér. ATtiny45, alebo ATtiny85. Vo voľnom pokračovaní ukážeme čítanie analógových hodnôt a zobrazovanie informáciína alfanumerickom LCD displeji.

Príklady sú vo videu:



Mikrokontroléry ATtiny45 a ATtiny85 sa líšia od seba len kapacitou pamäti flash pre program. ATtiny 45 má 4 kB a Attiny85 má 8 kB.  

Pripomenieme popis pinov:

Pripojenie alfanumerického LCD displeja 

Znakové displeje umožňujú zobraziť rôzne dlhý text v jednom, alebo viacerých riadkoch.  Displeje sú k dispozícii v konfigurácii 8x1, čiže 8 znakov v jednom riadku až po 40 x 4. Programové ovládanie týchto displejov je pomerne jednoduché. Nastavíte kurzor na miesto kde chcete mať znak, alebo začiatok textu a pošlete znak, alebo text. Alfanumerické displeje využívajú ako radič obvod Hitachi HD44780. Displej môžete k pripojiť v 8-bitovom, alebo 4-bitovom móde. Pri 8-bitovom móde sú zapojené všetky dátové piny D0 -D8 a prenáša sa naraz všetkých 8 bitov. Štvorbitový mód využíva iba štyri dátové vodiče D4 až D7 a osembitové dáta sa prenášajú na dva krát. Najskôr sa pošlú 4 horné bity a potom 4 dolné bity. Pri mikrokontroléri AtTiny45, alebo ATtiny 85, ktoré majú len 8 vývodov sú aj štyri dátové piny veľa. K displeju sa však dajú pripojiť interfejsové dosky na I2C, prípadne sa displej s takouto doskou už dodáva. Potom môžete displej pripojiť pomocou dvoch dátových pinov  + dvoch pinov na napájanie. 

ATtiny85 má jedno sériové rozhranie USI (Universal Serial Interface),  ktoré sa dá použiť s vhodnou knižnicou ako I2C, alebo SPI. Nemôžete ale použiť knižnice pre Arduino, ale špeciálne knižnice pre ATtiny. Preto  do vývojového prostredia Arduino IDE potrebujete pridať knižnicu TinyWireM , ktorú si stiahnete na https://github.com/adafruit/TinyWireM a taktiež knižnicu pre obsluhu LCD displeja pripojeného cez rozhranie I2C https://github.com/platisd/ATtiny85-LCD-library. Knižnice buď nakopírujete do adresára Arduino/Libraries, alebo  obsah adresára knižnice zazipujete a zavediete do vývojového prostredia pomocou menu Projekt -> Zahrnúť knižnice -> Pridať .ZIP knižnicu.

Displej pripojíte tak, že pripojíte napájacie napätie 5V a GND a dva signálové vodiče.  Na pin 7 mikrokontroléra ATtiny pripojíte signál SCK a na pin 5 mikrokontroléra pin SDA. Zároveň medzi 5V a p piny 5 aj 7 pripojte pre istotu rezistory 4k7 (na prvej schéme nie sú, pri krátkych vodičoch to funguje aj bez nich). 

Môžete vyskúšať jednoduchý kód. Postup programovania ATtiny cez Arduino bol ukázaný v minulej časti seriálu. V prvom príklade vypíšeme statický text:

#include                  
#include          
 
LiquidCrystal_I2C lcd(0x3F,16,2);  //adresa, 16 znakov a 2 riadky
 
void setup()
{
  TinyWireM.begin();                    // inicializacia USI ako I2C 
  lcd.init();                           // inicializacia LCD
  lcd.backlight(); 
  lcd.setCursor(0,0);
  lcd.print("NEXTECH");
  lcd.setCursor(0,1);
  lcd.print("ATtiny LCD disp");
 
void loop() {} 

V druhom príklade budeme vypisovať hodnotu na analógovom vstupe 2 na pine 3, kde zapojíme fotoodpor spolu s vhodným rezistorom, tak aby tvorili delič napätia:

#include                  
#include          
 
LiquidCrystal_I2C lcd(0x3F,16,2);  //adresa, 16 znakov a 2 riadky
 
void setup()
{
  pinMode(2, INPUT); //nastav pin ako vstupny
  TinyWireM.begin();                    // inicializacia USI ako I2C 
  lcd.init();                           // inicializacia LCD
  lcd.backlight(); 
  lcd.setCursor(0,0);                   //statický text do prvého riadku
  lcd.print("Osvetlenie");
 
void loop()
{
 int nSvetlo = analogRead(A2);  
 lcd.setCursor(0,1);     // Kurzor na riadok 2
 lcd.print("      ");    // vyčisti riadok
 lcd.setCursor(0,1);     // Kurzor na riadok 2
 lcd.print(nSvetlo);     //Text do druhého riadku
 delay(500);

Prípadne môžete použiť interné čidlo na meranie teploty čipu. Neriešime kalibráciu, len čítame údaje a zobrazujeme ich na displeji:

#include                  
#include          
 
LiquidCrystal_I2C lcd(0x3F,16,2);  // set address & 16 chars / 2 lines
 
void setup()
{
  analogReference(INTERNAL);  
  TinyWireM.begin();                    // inicializacia USI ako I2C 
  lcd.init();                           // inicializacia LCD
  lcd.backlight(); 
  lcd.setCursor(0,0);
  lcd.print("Teplota internal");
 
void loop()
{
 
int nTeplota = analogRead(ADC_TEMPERATURE);  
 lcd.setCursor(0,1); // Kurzor na riadok 2
 lcd.print("      "); //vyčisti riadok
 lcd.setCursor(0,1); // Kurzor na riadok 2
 lcd.print(nTeplota); //Text do druhého riadku
 delay(500);

V pokračovaní sa budeme venovať mikrokontroléru ATmega328P.

Luboslav Lacko

Všetky autorove články
ATTiny arduino ATTiny85 ATtiny45 LCD displej

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať