17. augusta 2022

Návod: Zapojenie 7-segmentového displeja + kód

Čo je to 7-segmentový displej?

Sedemsegmentový displej sa skladá zo siedmich LED diód (segmentov), ktoré sa rozosvietia podľa toho, kam privedieme napätie. Ôsmym segmentom je bodka, ktorá má svoje využitie ako desatinná čiarka pri spojení viacerých displejov dohromady. Takýto typ displeja s bodkou sa niekedy označuje aj ako 8-segmentovka.

Každá LED má 2 pripájacie piny – katóda a anóda. Existujú 2 typy sedemsegmentových displejov:
1. spoločná katóda (CC – common cathode)
2. spoločná anóda (CA – common anode)

Označenie spoločná katóda znamená, že katódy zo všetkých segmentov sú spojené do jednej katódy. Analogicky, označenie spoločná anóda hovorí o spojení všetkých anód. Pri spoločnej anóde jednotlivé LED diódy zasvietime privedením signálu logickej 0 (0V resp. GND) na termináli A-G, pri spoločnej katóde signálom logickej 1 (5V v prípade Arduino UNO).

Schematická značka LED diódy je vlastne šípka, ktorá hovorí v ktorom smere je nutné zabezpečiť tok elektrického prúd aby sa rozsvietila. Podľa konvencie tečie prúd od “+” k “-“. Ak by sme pripojili LED diódu ku zdroju napätia opačne, pravdepodobne by sa nič nepokazilo, len by sa nám LED nerozsvietila. V opačnom smere je totiž LED dióda (a aj každá iná dióda, napríklad usmerňovacia, zenerova alebo schottkyho dióda) nepriepustná.

Zapojenie

V tomto návode si napíšeme jednoduchý program, pomocou ktorého na displeji rozosvietime číslice 1, 2, 3 pričom každá z číslic bude svietiť po dobu jednej sekundy.Budeme potrebovať:

V tomto návode budeme pracovať s displejom 5011AS, o ktorom sme sa z produktovej špecifikácie dozvedeli, že sa jedná o displej so spoločnou katódou. Schéma segmentovky z dátového listu (datasheetu) je:


Zapojenie bude teda nasledovné:

  1. Do kontaktného poľa zasunieme 7-segmentový displej
  2. Prepojíme pin GND (-) na Arduino doske s kontaktným poľom
  3. Z datasheetu sme sa dozvedeli, že LED dióda pracuje v optimálnom napätí približne 2V. My máme Arduino, ktoré na digitálnych pinoch dodá až 5V, čo by mohlo spôsobiť ich poškodenie. Preto na zapojenie použijeme 220 Ω rezistor, ktorý obmedzí prúd tečúci LED diódami. Všetky LED majú spoločnú katódu, takže stačí keď jeden rezistor pripojíme ku pinu COM, nemusíme teda pripájať 7 rezistorov pred každý segment.

    Výpočet hodnoty rezistora je pomerne jednoduchý. Ako sme na to prišli sa môžete dočítať v tomto blogu o LED diódach.

  4. Zapojíme ostatné kábliky nasledovne:
    segment A – pin 1
    segment B – pin 2
    segment C – pin 3
    segment D – pin 4
    segment E – pin 5
    segment F – pin 6
    segment G – pin 7
    segment DP (bodka) – pin 8 (zapojenie je iba na ukážku, v našom programe desatinnú bodku nepoužijeme)

Program

//jednotlivé segmenty majú označenie a,b,c,d,e,f,g
//pre zjednodušenie sme si definovali ktorý pin rozosvieti ktorý segment, čo využijeme v kóde nižšie
#define segA 1
#define segB 2
#define segC 3
#define segD 4
#define segE 5
#define segF 6
#define segG 7
#define bodka 8

//všetky piny nastavíme ako OUTPUT
//aby sme nemuseli veľa písať, nastavíme všetky piny v cykle
void setup() {
  for(int i = 0 ; i < 13; i++) {
  	pinMode(i, OUTPUT);
  }
}

//na začiatku chceme všetky segmenty zhasnuté, následne sa rozosvieti jednotka, 
//po sekunde dvojka, potom trojka až znovu všetky segmenty zhasneme
void loop() {
  zhasni_segmentovku();
  vypis_jednotku();
  delay(1000);
  zhasni_segmentovku();
  vypis_dvojku();
  delay(1000);
  zhasni_segmentovku();
  vypis_trojku();
  delay(1000);
  zhasni_segmentovku();
}

//segmenty, ktoré chceme rozsvietiť nastavíme na hodnotu HIGH
//aby sme nemuseli veľa písať, nastavíme všetky piny v cykle
void zhasni_segmentovku() {
  for (int i = 0; i < 13; i++) {
    digitalWrite(i, LOW);
  }
}

void vypis_jednotku() {
  digitalWrite(segB, HIGH);
  digitalWrite(segC, HIGH);
}

void vypis_dvojku() {
  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segE, HIGH);
  digitalWrite(segD, HIGH);
}

void vypis_trojku() {
  digitalWrite(segA, HIGH);
  digitalWrite(segB, HIGH);
  digitalWrite(segG, HIGH);
  digitalWrite(segC, HIGH);
  digitalWrite(segD, HIGH);
}

Všetky použité súčiastky a taktiež mnoho ďalších sa nachádza aj v našom Arduino UNO Ultimate kit

Použité zdroje a ďalšie čítanie

https://instrumentationtools.com/
Na návrh schémy sme použili program Fritzing

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená.