Displeje

Ake typy displejov poznáte?

  • Zobrazovacia technológia - LED, LCD, OLED, eINK, TFT....
  • Komunikácia - paralérna, sériová, I2C, SPI, UART...
  • Znaková sada - segmenty, znaky, pixely, HMI
  • Dotyková plocha, podsvietenie, veľkosť, konštrukcia....

7 segment

character LCD

HMI

OLED

Nokia LCD

e-ink

TV

7 segmentový displej

7 segmentový displej

byte segment_0[] = {1, 1, 1, 1, 1, 1, 0, 0};
byte segment_1[] = {0, 1, 1, 0, 0, 0, 0, 0};
byte segment_2[] = {1, 1, 0, 1, 1, 0, 1, 0};
byte segment_3[] = {1, 1, 1, 1, 0, 0, 1, 0};
byte segment_4[] = {0, 1, 1, 0, 0, 1, 1, 0};
byte segment_5[] = {1, 0, 1, 1, 0, 1, 1, 0};
byte segment_6[] = {1, 0, 1, 1, 1, 1, 1, 0};
byte segment_7[] = {1, 1, 1, 0, 0, 0, 0, 0};
byte segment_8[] = {1, 1, 1, 1, 1, 1, 1, 0};
byte segment_9[] = {1, 1, 1, 1, 0, 1, 1, 0};


void setup()
{
  for (int i = 0; i<8; i++){
     pinMode(i, OUTPUT);
  }
}

void loop()
{
   for (int i = 0; i<10; i++){
      draw(i);
     delay(1000);
   }
}

void draw(int digit){
  switch (digit) {
  case 0:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_0[i]);
    }
  break;
    
  case 1:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_1[i]);
    }
  break;
  
  case 2:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_2[i]);
    }
  break;
  
  case 3:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_3[i]);
    }
  break;
  
  case 4:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_4[i]);
    }
  break;
  
  case 5:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_5[i]);
    }
  break;
  
  case 6:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_6[i]);
    }
  break;
  
  case 7:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_7[i]);
    }
  break;
  
  case 8:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_8[i]);
    }
  break;
  
  case 9:
    for (int i = 0; i<8; i++){
      digitalWrite(i, segment_9[i]);
    }
  break;
}}

Riadenie bez knižnice

#include "SevSeg.h"
SevSeg sevseg; 

void setup(){
    byte numDigits = 1;
    byte digitPins[] = {};
    byte segmentPins[] = {0, 1, 2, 3, 4, 5, 6, 7};
    bool resistorsOnSegments = true;
    byte hardwareConfig = COMMON_CATHODE; 
    
    sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
    sevseg.setBrightness(90);
}

void loop(){
    for(int i = 0; i < 10; i++){
        sevseg.setNumber(i);
        delay(1000);
        sevseg.refreshDisplay(); 
        }
}

Riadenie cez knižnicu SevSeg.h

https://github.com/DeanIsMe/SevSeg

Prevodník BCD -> 7 segment

https://www.elektrolab.eu/blog/rozdelenie-princip-a-funkcia-7-segmentoveho-displeja

Graficky znakový displej

PIN Function
1 Vss Ground Terminal
2 Vcc Positive Supply
3 Vdd Contrast adjustment
4 RS Register Select; 0→Instruction Register, 1→Data Register
5 R/W Read/write Signal; 1→Read, 0→ Write
6 E Enable; Falling edge
7 DB0 Bi-directional data bus
8 DB1
9 DB2
10 DB3
11 DB4
12 DB5
13 DB6
14 DB7
15 LED-(K) Back light LED cathode terminal
16 LED+(A) Back Light LED anode terminal
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 8, 7, 1, 0);

void setup()
{
  lcd.begin(16, 2);
}

void loop()
{
    lcd.setCursor(0, 0);
    lcd.print("Hello");
    lcd.setCursor(0, 1);
    lcd.print("Druhy riadok");
}

I2C Interface

#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for LCD

LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
void setup() {
  lcd.init();
  lcd.backlight();
}

void loop() {
  lcd.setCursor(2, 0); 
  lcd.print("Hello World!");
}

<LiquidCrystal_I2C.h>

log-displays

By tomaslorinc

log-displays

  • 593