Prosty układa z wyświetlaczem i dekoderem obrazujący działanie systemu dwójkowego.
1. Płytka ESP 8266
2. 4 diody LED (żółta, zielona, 2x czerwona)
3. 2 rezystory 100 Ohmów
4. Płytka stykowa mała
5. Kabelki stykowe
6. Dekoder 74HCT4543
7.Wyświetlacz 7-segmentowy ze wspólną katodą
8.Kabel micro USB do przesyłu danych
Przy pomocy czterech wyjść GPIO zadawana jest odpowiednia kombinacja zer i jedynek, która odpowiada oczekiwanej liczbie. Każde z wyjść odpowiada kolejnym potęgom dwójki: pierwszy pin to potęga zerowa, czyli jedynka, drugi pin to pierwsza potęga, czyli dwójka, trzeci to druga potęga, czyli czwórka, a czwarty pin, analogicznie, trzecia potęga, czyli osiem. Oczekiwaną liczbę podaje się jako sumę tych potęg, zatem gdy chcielibyśmy wyświetlić liczbę pięć, musielibyśmy podać wartość 1 na piny odpowiadające 2^0 (1) oraz 2^2 (4).
Zadane na wejściach wartości są następnie sczytywane przez dekoder, który zapala odpowiednie diody na wyświetlaczu. Urządzenie zaprogramowano tak, aby co dwie sekundy wyświetlała rosnąco liczby z przedziału od 0 do 9. Schemat wyświetlacza:
Zastosowanie dekodera dwójkowego znacznie ułatwia w tym przypadku obsługę urządzenia. Gdybyśmy chcieli wyświetlać liczby bez użycia dekodera, musielibyśmy użyć aż 7 wyjść (po jednym na każdą diodę wyświetlacza). Poniżej przedstawiono układ obsługujący wyświetlacz bez zastosowania dekodera.
Należy również zaznaczyć, że dekodera możemy użyć tylko z wyświetlaczem o wspólnej katodzie, gdyż diody zapalamy podając napięcie z wyjść dekodera.
from machine import Pin, PWM
import time
#1 - sterowanie z dekoderem 0 - bez dekodera
sterowanie = 1
if sterowanie == 1:
p0 = Pin(16, Pin.OUT)
p1 = Pin(5, Pin.OUT)
p2 = Pin(4, Pin.OUT)
p3 = Pin(0, Pin.OUT)
A = 0
B = 1
while True:
if B == 1:
if A == 0:
p0.value(0)
p1.value(0)
p2.value(0)
p3.value(0)
elif A == 1:
p0.value(1)
p1.value(0)
p2.value(0)
p3.value(0)
elif A == 2:
p0.value(0)
p1.value(1)
p2.value(0)
p3.value(0)
elif A == 3:
p0.value(1)
p1.value(1)
p2.value(0)
p3.value(0)
elif A == 4:
p0.value(0)
p1.value(0)
p2.value(1)
p3.value(0)
elif A == 5:
p0.value(1)
p1.value(0)
p2.value(1)
p3.value(0)
elif A == 6:
p0.value(0)
p1.value(1)
p2.value(1)
p3.value(0)
elif A == 7:
p0.value(1)
p1.value(1)
p2.value(1)
p3.value(0)
elif A == 8:
p0.value(0)
p1.value(0)
p2.value(0)
p3.value(1)
elif A == 9:
p0.value(1)
p1.value(0)
p2.value(0)
p3.value(1)
if A == 9:
A = 0
else:
A+=1
time.sleep(2)
elif sterowanie == 0:
b = Pin(16, Pin.OUT) #b
a = Pin(5, Pin.OUT) #a
f = Pin(4, Pin.OUT) #f
g = Pin(0, Pin.OUT) #g
e = Pin(2, Pin.OUT) #e
d = Pin(14, Pin.OUT) #d
c = Pin(12, Pin.OUT) #c
liczba = 1;
if liczba == 0:
a.value(0)
b.value(0)
c.value(0)
d.value(0)
e.value(0)
f.value(0)
g.value(0)
elif liczba == 1:
a.value(0)
b.value(1)
c.value(1)
d.value(0)
e.value(0)
f.value(0)
g.value(0)
elif liczba == 2:
a.value(1)
b.value(1)
c.value(0)
d.value(1)
e.value(1)
f.value(0)
g.value(1)
elif liczba == 3:
a.value(1)
b.value(1)
c.value(1)
d.value(1)
e.value(0)
f.value(0)
g.value(1)
elif liczba == 4:
a.value(0)
b.value(1)
c.value(1)
d.value(0)
e.value(0)
f.value(1)
g.value(1)
elif liczba == 5:
a.value(1)
b.value(0)
c.value(1)
d.value(1)
e.value(0)
f.value(1)
g.value(1)
elif liczba == 6:
a.value(1)
b.value(0)
c.value(1)
d.value(1)
e.value(1)
f.value(1)
g.value(1)
elif liczba == 7:
a.value(1)
b.value(1)
c.value(1)
d.value(0)
e.value(0)
f.value(1)
g.value(0)
elif liczba == 8:
a.value(1)
b.value(1)
c.value(1)
d.value(1)
e.value(1)
f.value(1)
g.value(1)
elif liczba == 9:
a.value(1)
b.value(1)
c.value(1)
d.value(1)
e.value(0)
f.value(1)
g.value(1)