Wyświetlacz Bąbelkowy w Nettigo

Kilka razy opisywałem na tym blogu niezwykłe malutkie urządzenia:

Wszystkie te projekty mają jedną wspólną cechę. Wykorzystują maleńki bąbelkowy wyświetlacz. Pojawił się on właśnie w ofercie Nettigo za 12 zł. Co najzabawniejsze jest to 666 produkt w katalogu. Obawiamy się o nasze dusze ;-).

To 7 segmentowy wyświetlacz, potrafiący wyświetlać liczbę składającą się z 4 cyfr. Jest bardzo mały. Jego wymiary to 15×6 mm. Wielkością przypomina układ scalony w obudowie DIP. Ma 12 nóżek, po 6 z każdej strony. Ich rozstaw to standardowe 2,54 mm. Dzięki temu idealnie pasuje do płytki stykowej i do płytek uniwersalnych.

Parametry elektryczne

Każda kreska w cyfrze to segment wyświetlacza. Świecenie wybranych segmentów układa się w cyfrę. Jest też dodatkowy element świecący symbolizujący przecinek w ułamkach. Segmenty to odpowiednio ułożone diody świecące. By się świeciły trzeba im zapewnić odpowiednie parametry:

  • napięcie zasilania 1.6 V;
  • prąd 5 mA.

Ponieważ płytki kontrolerów dają dużo wyższe napięcie, trzeba zastosować rezystor. Jego wartość obliczysz ze wzoru:

Rezystor = (Napięcie_zasilania – Napięcie_diody) / Prąd_diody

Dla kontrolerów z logiką w standardzie 5 V jak Arduino UNO, wartość rezystora wynosi:

Rezystor = (5 V – 1,6 V) / 0,005 A = 680 Ohm

Dla kontrolerów z logiką w standardzie 3,3 V jak Teensy 3.1 lub Raspberry PI, wartość rezystora wynosi:

Rezystor = (3,3 V – 1,6 V) / 0,005 A = 340 Ohm

W projektach, które opisywałem na blogu nie stosowano rezystorów. Działały one na kontrolerach z poziomem logicznym 3,3 V. Czyli teoretycznie powinno działać. Ale nie gwarantuje tego, jak długo taki wyświetlacz będzie działał i zalecam stosowanie rezystorów.

Ale jak sterować tym wyświetlaczem?

Połączenia diod w jego wnętrzu są następujące. Katody (GND) wszystkich segmentów w cyfrze są połączone razem. Wyprowadzone są osobno dla każdej cyfry przez wyprowadzenia d1, d2, d3, d4. Mówi się, że taki wyświetlacz ma “wspólną katodę”. Anody (zasilanie) sterują segmentami cyfr przez.wyprowadzenia A, B, C, D, E, F, G i kropka przecinka przez DP.

Anody wyświetlacza podłącza się przez rezystory. Po jednym na każdy segment.

Teraz gdy chcesz zapalić górną kreskę pierwszej cyfry, to podłączasz:

  • d1 do GND
  • A przez rezystor do zasilania 5 V lub 3,3 V.

Czyli katody “d1..4” wybierają cyfrę, a anody A..G i DP wybierają segment.

Gdy chcesz mieć na wyświetlaczu 7 jako czwartą cyfrę to łączysz:

  • d4 do GND
  • A przez rezystor do zasilania
  • B przez rezystor do zasilania
  • C przez rezystor do zasilania

Gdy podłączysz dodatkowo d2 do GND, to będziesz miał tą samą siódemkę w 2 miejscach na wyświetlaczu.

Kiedy kontroler steruje wyświetlaczem, to włącza katodę pierwszej cyfry, ustawia segmenty. Potem wyłącza segmenty, ustawia katodę drugiej cyfry i włącza dla niej odpowiednie segmenty i tak dalej.
Dzieje się to tak szybko, że my nie dostrzegamy sztuczki.

Wyświetlacz podłącza się do kontrolera bardzo łatwo. Potrzeba mu 12 pinów cyfrowych – 4 do podłączenia katod d1, d2, d3, d4 – 8 do podłączenia przez rezystory anod A, B, C, D, E, F, G, DP.

Ponieważ stan LOW to odpowiednik GND, a HIGH to odpowiednik zasilania. Program musi działać tak, że dla wybranej katody cyfry ustawia się LOW, a dla segmentów cyfry, które się mają zapalić ustawia HIGH.

Wszystkie piny ustawiasz jako wyjścia:

pinMode(numer_pinu, OUTPUT);

Stan HIGH pinu ustawia się przez:

digitalWrite(numer_pinu, HIGH);

Stan LOW pinu ustawia się analogicznie:

digitalWrite(numer_pinu, LOW);

Do łatwiejszej obsługi wyświetlacza powstała biblioteka SevSeg. Ma ona paskudny kod, ale jest wykorzystywana w wielu projektach.

To przykład jej użycia.
Mam Arduino UNO. wyjścia d1, d2, d3, d4 podłączyłem do pinów cyfrowych 2, 3, 4, 5. Wyjścia A, B, C, D, E, F, G, DP, podłączyłem przez 8 rezystorów 680 Ohm do pinów cyfrowych 6, 7, 8, 9, 10, 11, 12, 13.

Żeby program w takiej konfiguracji wyświetlił liczbę 1234 program musi wyglądać tak:

#include "SevSeg.h"

SevSeg wyswietlacz;

void setup()
{
  wyswietlacz.Begin(COMMON_CATHODE, 4, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
  wyswietlacz.SetBrightness(100);
}

void loop()
{
  wyswietlacz.DisplayString("1234", 0);
  delay(5);
}

W metodzie “wyświetlacz.Begin()” są następujące argumenty:

  • Typ wyświetlacza. Ten jest ze wspólną katodą, dlatego typ wybrałem COMMON_CATHODE.
  • Kolejny argument to liczba cyfr w wyświetlaczu, czyli 4.
  • Kolejne 4 argumenty to piny katod sterujących cyframi d1, d2, d3, d4
  • Kolejnych 8 argumentów to piny anod sterujących segmentami A, B, C, D, E, F, G, DP.

Metoda wyswietlacz.SetBrightness(100); ustawia jasność wyświetlacza. 100 to maksymalna jasność.

Metoda wyswietlacz.DisplayString(“1234”, 0); ustawia liczbę na wyświetlaczu.
Pierwszy argument to string z liczbą, adrugi to cyfra za którą ma się zaświećić przecinek. 0 – za żadną, 1 za pierwszą… 4 za czwartą.

Ta metoda musi być ciągle wywoływana w loop, bo odpowiada też za “wrzucanie” cyfr na wyświetlacz.

sprae