18
Elektronika dla Wszystkich
Do czego to s³u¿y?
Jest to m³odszy brat opisanej w EdW „Wid-
mowej wst¹¿ki” (numer 7/2000). Uk³ad trud-
no ju¿ nazwaæ wst¹¿k¹, dlatego postanowi-
³em pozostawiæ samo „Widmo”. Tak jak i je-
go poprzedniczka, m³odszy brat wykorzystu-
je efekt stroboskopowy po to, aby troszkê
oszukaæ nasz wzrok. Tym razem jednak dio-
dami nie steruje ju¿ proœciutki generator lecz
ca³kiem m¹dry procesor. Efekt?
Ta niezwyk³a zabawka mieszcz¹ca siê
w rurce o œrednicy 2cm i d³ugoœci 35cm pod-
czas machania wyœwietla w powietrzu roz-
maite serduszka, kó³eczka, domki... Efekt
jest niesamowity. Odnosi siê wra¿enie, ¿e
obrazki te wisz¹ w powietrzu!
Do tego, oprócz standardowych obrazków,
ka¿dy, kto ma komputer, mo¿e stworzyæ w³a-
sn¹ kompozycjê i umieœciæ j¹ w pamiêci
uk³adu za pomoc¹ kilku klikniêæ! Program
obs³uguj¹cy „Widmo” zosta³ napisany w taki
sposób, ¿e akceptuje zwyk³e dwukolorowe
bitmapy które mo¿na przygotowaæ w dowol-
nym edytorze graficznym.
Do wykonania uk³adu zachêcam wszyst-
kich którzy maj¹ jeszcze w sobie coœ z dziec-
ka, mianowicie - lubi¹ siê bawiæ!
Jak to dzia³a?
Schemat elektryczny uk³adu widoczny jest
na rysunku 1. Tak prosty elektrycznie uk³ad
realizuj¹cy doœæ z³o¿one zadania uda³o siê
zrealizowaæ dziêki zastosowaniu mikrokon-
trolera AVR 90S2313. Procesor ten œwietnie
sprawdzi³ siê w uk³adzie ze wzglêdu na swo-
je mo¿liwoœci sprzêtowe.
Ale procesor to nie wszystko. Sam w so-
bie jest œlepy, g³uchy i nie robi w³aœciwie nic
ciekawego. Aby „coœ ciekawego” mog³o siê
objawiæ zosta³ on wsparty przez 12 diod
LED, przycisk i uk³ad dopasowania pozio-
mów RS232 – CMOS. Podczas czytania do-
kumentacji uk³adu U1 konieczne okaza³o siê
ograniczenie pr¹du p³yn¹cego przez diody do
oko³o 10mA, aby nie przekroczyæ maksy-
malnego pr¹du p³yn¹cego przez wyprowa-
dzenia zasilania. Jest to realizowane przez re-
zystory R1-R12.
Uk³ad poœrednicz¹cy miêdzy portem sze-
regowym komputera jest wykonany w trochê
nietypowy sposób. Dziêki temu uda³o siê
osi¹gn¹æ oszczêdnoœci zarówno kosztów jak
i miejsca na p³ytce. Zdziwienie mo¿e budziæ
zwarcie zacisków TX i RX w porcie. Bez
obaw, komputerowi to nie zaszkodzi. Po pro-
stu odbierze on znaki, które sam wysy³a
a dziêki takiemu rozwi¹zaniu z tej samej
p³ytki mo¿emy zrobiæ interfejs pod³¹czany
zarówno bezpoœrednio do portu jak i przez
zwyk³y kabel (w kablu linie RX oraz TX s¹
skrzy¿owane).
Tu w³aœciwie koñ-
czy siê sprzêt a zaczy-
na siê oprogramowa-
nie. Aby jednak dobrze
zrozumieæ dzia³anie
programu konieczna
jest wiedza na temat te-
go, w jaki sposób dane
o obrazkach s¹ prze-
chowywane w pamiê-
ci: Obrazki s¹ jakby
ciête na kawa³ki tak jak
na rysunku 2. Ka¿da
kolumna która ma po
12 bitów (po jednym
na ka¿d¹ diodê) jest za-
pisywana jako bajt i je-
go po³ówka. Para s¹-
siaduj¹cych ze sob¹ li-
nii jest zapisywana ja-
ko 3 bajty. W progra-
mie przyjêto nastêpuj¹-
c¹ konwencjê: naj-
pierw bajt zawieraj¹cy po³ówki, nastêpnie
dwa bajty „ca³e”. Taki zapis, choæ kompliku-
je nieco procedurê odczytywania danych
w stosunku do zapisu, w którym ka¿da ko-
lumna by³aby zapisywana w oddzielnych
dwóch bajtach, pozwala jednak skompreso-
waæ obrazki w stopniu 3 do 4.
Tak naprawdê rysunek 2 jest tylko rysun-
kiem pogl¹dowym. Obrazki s¹ zapisywane
w taki sposób, ¿e ca³e bajty odpowiadaj¹ bez-
poœrednio diodom na porcie B, natomiast po-
³ówki danym na pinach portu D. Kolejnym
odci¹¿eniem procesora jest za³o¿enie, ¿e
obrazki musz¹ mieæ parzyst¹ liczbê kolumn.
Dziêki temu procesor ma trochê mniej robo-
ty a program zajmuje trochê mniej miejsca.
Takie zabiegi by³y konieczne. Po skompi-
lowaniu koñcowej wersji programu okaza³o
★★
★★
★★
Rys. 1 Schemat ideowy
W
W
W
W
ii
ii
dd
dd
m
m
m
m
oo
oo
,,
,,
aa
aa
ll
ll
bb
bb
oo
oo
m
m
m
m
aa
aa
gg
gg
ii
ii
cc
cc
zz
zz
nn
nn
aa
aa
rr
rr
óó
óó
¿¿
¿¿
dd
dd
¿¿
¿¿
kk
kk
aa
aa
3
3
0
0
1
1
7
7
siê, ¿e w pamiêci ROM uk³adu U1 zosta³y
ju¿ tylko 2B!
Pe³ny ci¹g danych zawiera jeszcze dodat-
kowo informacje o rozmiarach kolejnych
obrazków. Dziêki temu program wie, gdzie
dany obrazek siê koñczy, a zaczyna nastêpny.
Ca³oœæ wygl¹da jak w tabeli 1. Ostatnia dana
równa 0 oznacza, ¿e rozmiar nastêpnego
obrazka wynosi w³aœnie 0 czyli, ¿e to ju¿ ko-
niec definicji obrazków. Dane w pamiêci
u¿ytkownika (EEPROM) s¹ przechowywane
w identyczny sposób. Dziêki temu procedury
odwo³uj¹ce siê do
nich ró¿ni¹ siê tylko
jedn¹ instrukcj¹: ró¿-
ne s¹ sposoby dostê-
pu do pamiêci.
Poniewa¿ wiemy
ju¿, w jaki sposób
obrazki „siedz¹”
w pamiêci, pora do-
wiedzieæ siê co
uk³ad dok³adnie
z nimi robi. Linie s¹ po prostu wyœwietlane
kolejno z du¿¹ czêstotliwoœci¹. Podczas
przesuwania diodami dziêki bezw³adnoœci
ludzkiego oka widzimy ca³e obrazki. Nie ma
tu ¿adnej synchronizacji z ruchami rêki.
Wbrew pozorom nawet bez synchronizacji
obrazki s¹ œwietnie widoczne, a jej brak ma
ten plus, ¿e nie jesteœmy zmuszani do jedno-
stajnego machania uk³adem tam i z powro-
tem. Mo¿emy
wywijaæ „Wid-
mem” na wszyst-
kie strony, obra-
caæ... i co tylko
przyjdzie nam do
g³owy.
Kolejne linie
obrazka s¹ wy-
œwietlane i ³ado-
wane w obs³udze przerwania Timer0. Kod je-
go obs³ugi widzimy na listingu 1. Naraz ob-
s³ugiwane s¹ dwie kolumny obrazka. Informa-
cja o tym która kolumna by³a ostatnio wy-
œwietlona znajduje siê w
zmiennej
Bit_przet_polowka. Procedura przerwania
uzale¿nia podejmowane dzia³ania od wartoœci
tej zmiennej. Je¿eli jest ona wyzerowana, je-
dyne co jest wykonywane to wyœwietlenie
pierwszej kolumny. W przeciwnym wypadku
po wyœwietleniu drugiej kolumny wywo³ywa-
na jest procedura Laduj_linie. Procedura ta
pobiera z odpowiedniej pamiêci dane nastêp-
nych dwóch kolumn. Kod ten jest powtarzany
z eksperymentalnie dobran¹ czêstotliwoœci¹.
Przy przerwaniu do timera nie jest wpisywana
¿adna wartoœæ – nastêpne przerwanie wyst¹pi
po wykonaniu pe³nego cyklu zliczania.
Lecz co siedzi w tajemniczych, wymienio-
nych wy¿ej procedurach? Na listingu 2 wi-
dzimy proœciutkie procedury wyœwietlania
obydwu kolumn. Zmienne B_bait1 i B_bait2
zawieraj¹ ca³e bajty wyœwietla-
nego obrazka. Zmienna B_po-
lowki zawiera po³ówki bajtów
z kolumn. Zmienne te s¹ inicjo-
wane w podprogramie Laduj_li-
nie, który widzimy na Listingu
3. To, sk¹d dane s¹ ³adowane,
jest uzale¿nione od stanu bitu
Bit_bank_eeprom. Zmienna
W_przet_linia zawiera adres ak-
tualnie przetwarzanej linii. Gdy
jej wartoœæ bêdzie wskazywa³a na ostatni¹ li-
niê aktualnie wybranego obrazka zostanie ona
z a i n i c j o w a n a
wartoœci¹ ze
zmiennej W_ad-
r e s _ o b r a z k a .
Spowoduje to
w y œ w i e t l a n i e
obrazka od po-
cz¹tku.
Obs³ug¹ wy-
œwietlania w ko-
dzie programu
zajmuj¹ siê je-
szcze trzy podprogramy, s¹ to: Zmien_bank,
Ustaw_pierwszy_obrazek, Zmien_obrazek.
Opiszê tylko ogólnie ich dzia³anie.
Pierwsza z nich umo¿liwia zmianê banku
obrazków miêdzy standardowym a zawartym
w EEPROM’ie. Gdy próbujemy zmieniæ bank
na EEPROM sprawdza ona, czy pamiêæ u¿yt-
kownika zawiera jakieœ dane, jeœli nie to nie
realizuje ona prze³¹czenia. Druga procedura
s³u¿y do inicjacji wszystkich zmiennych tak,
aby rozpoczê³o siê wyœwietlanie pierwszego
obrazka z wybranego banku. Zmieñ_obrazek
inicjuje wszystkie zmienne na nastêpny obra-
zek chyba, ¿e ak-
tualnie wyœwie-
tlany jest ostat-
nim. Wtedy wy-
wo³uje ona pod-
p r o g r a m
U s t a w _ p i e r w -
szy_obrazek.
Serce naszego
programu, czyli
pêtla g³ówna, jest
malutkie, ale zu-
pe³nie wystarcza-
j¹ce. Widzimy je
na listingu 4.
Niewielki roz-
miar tego ele-
mentu programu
uda³o siê osi¹-
gn¹æ dziêki prze-
rzuceniu wiêkszoœci zadañ na przerwania.
Procedura On_przycisk rozró¿nia d³ugie
i krótkie naciœniêcie przycisku. W przypadku
pierwszego zmienia bank pamiêci, w przy-
padku drugiego zmienia aktualnie wyœwietla-
ny obrazek.
Po pêtli g³ównej od razu widaæ, ¿e zdecy-
dowa³em siê na u¿ycie watchdog’a. Czasami
podczas wy³¹czania procesor zawiesza³ siê,
gasi³ diody i pobiera³ w tym stanie tak ma³o
pr¹du, ¿e kondensatory blokuj¹ce zasilanie
wystarczy³y mu na utrzymanie tego nieprzy-
jemnego stanu przez doœæ d³ugi czas. Watch-
dog ustawiony na oko³o 0,5 sekundy sku-
tecznie usun¹³ problem i dodatkowo przy-
czyni³ siê do u³atwienia procedury odbioru
danych z komputera.
W³aœnie ostatnim fragmentem programu
jest modu³ odpowiedzialny za transmisjê.
Aby u³atwiæ zrozumienie algorytmu, warto
najpierw poznaæ przyjêty format transmito-
wanych danych. Do uk³adu musz¹ byæ prze-
s³ane nastêpuj¹ce informacje: 1 bajt – iloœæ
przesy³anych danych; 5 bajtów – identyfika-
tor, kolejne bajty musz¹ tworzyæ napis „WID-
MO” z du¿ych liter; n Bajtów – dane w iloœci
okreœlonej w pierwszym bajcie, te bajty s¹
wpisywane bezpoœrednio do pamiêci eeprom.
Transmisja jest oparta na przerwaniu
URXC – odbioru znaku z portu szeregowego.
Pierwsza wersja uk³adu korzysta³a z poleceñ
INPUTBIN. Powodowa³o to, ¿e przed prze-
s³aniem danych nale¿a³o uk³ad wy³¹czyæ
a nastêpnie uruchomiæ go z przytrzymanym
przyciskiem. Uzna³em, ¿e w obecnej modzie
urz¹dzeñ PLUG&PLAY jest to rozwi¹zanie
nieeleganckie. Dziêki wykorzystaniu prze-
rwania wystarczy podpi¹æ dzia³aj¹cy uk³ad do
komputera, nacisn¹æ „Wyœlij” i je¿eli wszyst-
ko jest w porz¹dku to diody zgasn¹ na chwilê
19
Elektronika dla Wszystkich
Rys. 2
Tab. 1
IloϾ danych obrazka 1
Dane pierwszego obrazka
IloϾ danych obrazka 2
Dane drugiego obrazka
...
IloϾ danych obrazka n
Dane n-tego obrazka
0
Listing 1
On_timer:
If Bit_przet_polowka = 0 Then
Gosub Wyswietl_1
Bit_przet_polowka = 1
Else
Gosub Wyswietl_2
Gosub Laduj_linie
Bit_przet_polowka = 0
End If
Return
Listing 2
Wyswietl_1:
Portb = B_bait1
D11 = B_polowki.0
D09 = B_polowki.1
D07 = B_polowki.2
D05 = B_polowki.3
Return
Wyswietl_2:
Portb = B_bait2
D11 = B_polowki.4
D09 = B_polowki.5
D07 = B_polowki.6
D05 = B_polowki.7
Return
Listing 4
Petla_glowna:
Do
Debounce Przycisk , 0 ,
On_przycisk
Reset Watchdog
Loop
On_przycisk:
B_akumulator = 0
Do
If B_akumulator = 255
Then
Gosub Zmien_bank
Gosub Mignij
Goto Petla_glowna
Else
Incr B_akumulator
End If
Waitms 3
Reset Watchdog
Loop Until Przycisk = 1
Gosub Zmien_obrazek
Goto Petla_glowna
Listing 3
Laduj_linie:
If Bit_bank_eeprom = 0 Then
B_polowki = Lookup(w_przet_linia , Dane_obrazki)
Incr W_przet_linia
B_bait1 = Lookup(w_przet_linia , Dane_obrazki)
Incr W_przet_linia
B_bait2 = Lookup(w_przet_linia , Dane_obrazki)
Else
Readeeprom B_polowki , W_przet_linia
Incr W_przet_linia
Readeeprom B_bait1 , W_przet_linia
Incr W_przet_linia
Readeeprom B_bait2 , W_przet_linia
End If
Incr W_przet_linia
W_akumulator = W_adres_obrazka + B_wielkosc_obrazka
If W_przet_linia >= W_akumulator Then
W_przet_linia = W_adres_obrazka
End If
Return
a nastêpnie uk³ad rozpocznie wyœwietlanie
pierwszego z odebranych obrazków.
Jak siê okaza³o BASCOM nie inicjuje po-
rtu szeregowego, gdy w programie nie ma po-
leceñ typu INPUT, OUTPUT... etc. Konieczne
okaza³o siê wiêc samodzielne wykonanie tej
czynnoœci. Sposób inicjacji przedstawia
listing 5. Wszystko jest ³atwe do zrozumienia
za wyj¹tkiem mo¿e ustawienia prêdkoœci trans-
misji. Uk³ad UART procesora AT90S2313 wy-
posa¿ony jest we w³asny generator transmisji.
Potrzebn¹ nam prêdkoœæ ustalamy wpisuj¹c do
rejestru UBRR wartoœæ wyliczon¹ ze wzoru:
Prêdkoœæ transmisji = czêstotliwoœæ zegara /
16(1 + UBRR)
Po przekszta³ceniu otrzymujemy:
UBRR = czêstotliwoœæ zegara / (16*prêdkoœæ
transmisji) – 1
Co dla czêstotliwoœci transmisji 1200bps
i zegarze 4MHz daje
wartoϾ 207.
Niska szybkoϾ
transmisji zosta³a
wybrana g³ównie
dlatego, ¿e zapis do
pamiêci eeprom zajmuje trochê czasu i przy
zbyt du¿ej szybkoœci uk³ad „gubi³by” nie-
które dane.
Ca³ej procedury transmisji nie prezentujê ze
wzglêdu na jej znaczn¹ objêtoœæ. Zawiera ona
sporo odga³êzieñ IF... ELSEIF... ELSE a to ze
wzglêdu na obs³ugê ewentualnych b³êdów.
W przypadku b³êdu zapala siê odpowiadaj¹ca
mu dioda, a nastêpnie program przechodzi do
miejsca pokazanego na listingu 6. Mo¿liwe
b³êdy transmisji i odpowiadaj¹ce im diody
przedstawia tabela 2.
Ca³a obs³uga b³êdów zosta³a stworzona
w celu zapobiegniêcia przypadkowemu wy-
mazaniu pamiêci u¿ytkownika.
Tak w³aœnie to dzia³a. W razie jakiœ nieja-
snoœci polecam analizê kodu Ÿród³owego,
szczególnie fragment odpowiedzialny za
odbiór danych.
Monta¿ i uruchomienie
Ca³y uk³ad sk³ada siê z trzech p³ytek drukowa-
nych zaprezentowanych na rysunku 2. Osob-
no montujemy p³ytkê g³ówn¹, osobno p³ytkê
baterii i osobno p³ytkê konwertera. Omawia-
nie monta¿u rozpocznê od ostatniej p³ytki.
Konwerter jest na tyle prosty, ¿e mo¿na
go by³o co prawda zrealizowaæ „na paj¹ka”
ale ja nie jestem zwolennikiem tej techniki.
Zaprojektowa³em maleñk¹ p³ytkê która zna-
komicie mieœci siê w obudowie wtyczki
DB9. Monta¿ elementu rozpoczynamy od
przylutowania gniazda. To, jakiego ono bê-
dzie typu, (mêskie / ¿eñskie) zale¿y od tego
czy chcemy konwerter podpi¹æ bezpoœrednio
do portu, czy wykorzystamy w tym celu ka-
belek. Nastêpnie montujemy elementy R13,
R14 i T1. Do z³¹cza Q nale¿y przylutowaæ za
pomoc¹ kabelków wtyk cinch. Ca³oœæ umie-
szczamy w obudowie. Aby obudowa da³a siê
zamkn¹æ prawdopodobnie konieczne oka¿e
siê po³o¿enie tranzystora T1 na rezystorach.
Konwerter jest gotowy. Odk³adamy go
i przygotowujemy siê na zabawê wymagaj¹-
c¹ ju¿ wiêkszego zaanga¿owania.
W tym momencie dobrze jest mieæ przy-
gotowan¹ ju¿ rurkê której u¿yjemy na obudo-
wê. Mo¿na zastosowaæ rurkê PCV do zimnej
wody o œrednicy 21,2mm i gruboœci œcianki
1,7mm. Rurki tego typu powinny byæ bez
problemu dostêpne w sklepach z artyku³ami
hydraulicznymi lub sklepach z armatur¹.
Najpierw montujemy p³ytkê zasilacza.
Jest on przystosowany do u¿ycia w nim typo-
wych baterii AAA. K³adziemy baterie na
p³ytkê i przymierzamy, czy ca³oœæ mieœci siê
w rurce. Z obydwu stron miejsca na baterie
na koñcach nale¿y wyci¹æ pod³u¿ne otwory.
Miejsca te zaznaczone s¹ grubszymi kreska-
mi po stronie opisu. Dobrze jest najpierw
wszystko przymierzyæ, a potem robiæ otwory.
W otwór po stronie plusa baterii nale¿y wpa-
sowaæ sztywn¹ blaszkê. Lutujemy j¹ od
spodu du¿¹ iloœci¹ cyny. Ca³oœæ musi wytrzy-
maæ nacisk sprê¿yny z drugiej strony p³ytki.
Po drugiej stronie lutujemy w³aœnie sprê¿y-
nê. Mo¿emy wymontowaæ j¹ z oprawki na
bateriê. Powinna to byæ raczej obudowa z ba-
terii wê¿szej ni¿ AA. Sprê¿yna zyska wiêk-
sz¹ wytrzyma³oœæ je¿eli umieœcimy j¹ tak, ¿e
jeden z jej zwojów bêdzie znajdowa³ siê
w zrobionym przez nas pod³u¿nym otworze.
Aby utrzymaæ baterie na wyznaczonym
miejscu konieczne jest wykonanie obejm
z blaszek. Umieszczamy je w bocznych
wg³êbieniach p³ytki. Dobrym rozwi¹zaniem
jest zastosowanie po jednej blaszce na ka¿d¹
bateriê. Obejmy mo¿emy przylutowaæ do
p³ytki du¿¹ iloœci¹ cyny.
Na koñcu p³ytki (tym, po stronie plusa)
lutujemy zwyczajny prze³¹cznik przykrêcany
do p³yty czo³owej. Lutujemy go za najni¿sz¹
koñcówkê a wyprowadzenie œrodkowe
pod³¹czamy za pomoc¹ srebrzanki do punktu
oznaczonego na p³ytce kó³kiem.
Sprawdzamy raz jeszcze czy wszystko pa-
suje do rurki. W razie jakiœ problemów doko-
nujemy odpowiednich korekcji. Proszê zwró-
ciæ uwagê, czy obejmy baterii nie blokuj¹
p³ytki.
Ostatni¹ p³ytk¹ jest p³ytka g³ówna. Niestety
ze wzglêdu na w¹skoœæ p³ytki i du¿¹ iloœæ ko-
niecznych po³¹czeñ nie uda³o mi siê unikn¹æ
kilku zworek, a nawet kilku po³¹czeñ, które bê-
dziemy musieli poprowadziæ w¹skimi kabel-
kami. Zaczynamy od zworki pod uk³adem U1.
Nastêpnie ³¹czymy punkty A z odpowiadaj¹-
cymi im punktami B. Dobrze jest u¿yæ do tego
cieniutkich kabelków. Oznaczenia punktów
B na p³ytce mog¹ byæ trochê niejasne. Najwy-
¿ej umieszczony napis odpowiada najwy¿sze-
mu punktowi. Na przyk³ad po lewej stronie
najwy¿szy punkt to B1. Nale¿y zwróciæ uwagê
na prawid³owoœæ przeprowadzenia tych po³¹-
czeñ. £atwo na tym etapie pope³niæ b³¹d, który
spowoduje b³êdne dzia³anie uk³adu. Ostatnim
takiego typu po³¹czeniem jest +V z +V’.
Dalszy monta¿ przeprowadzamy typowo.
Diody LED nie zosta³y opisane ze wzglêdu
na brak miejsca na p³ytce. Nie przeszkadza to
jednak w ich monta¿u. Najlepiej u¿yæ ultra-
20
Elektronika dla Wszystkich
Rys. 2 Schemat monta¿owy
Tab. 2
Zapalona dioda
Opis b³êdu
D1 . . . . . . . . . . . .Zbyt du¿a liczba danych do przes³ania
D2 . .Przesy³ana dana powinna byæ ostatnia a nie jast = 0
D3 . . . . . . . . . . . . . . . . . . . . . . .Z³y format - identyfikator
D4 . . . . . . . . . . . . . . . . . . . . .B³¹d ramki - brak bitu stopu
Listing 5
Petla_glowna:
Petla_glowna:
Do
Debounce Przycisk , 0 , On_przycisk
Reset Ucr.2‘8bit
Ubrr = 207 ‘1200bps / 4MHz
Set Ucr.4 ‘Aktywacja odbiornika
Enable Urxc
Listing 6
Blad_transmisji:
'Czekamy na reset z WDT
Disable Interrupts
Stop
21
Elektronika dla Wszystkich
jasnych lub niskopr¹dowych prostok¹tnych
diod 5x3mm. Diody nale¿y zamontowaæ jak
najbli¿ej p³ytki. Jeœli ktoœ chce u¿yæ diod
okr¹g³ych zaleca³bym monta¿ rezystorów
R1-R12 po stronie druku.
Przycisk S1 powinien mieæ zdejmowany
klawisz dziêki czemu ca³oœæ uda siê wsadziæ
do rurki. W innym przypadku klawisz bêdzie
siê blokowa³ przy próbie w³o¿enia.
Na koñcu p³ytki znajduje siê miejsce do
pod³¹czenia konwertera. Sposób jego pod³¹-
czania zale¿y od konstruktora. Ja przyluto-
wa³em do p³ytki gniazdo cinch za pomoc¹
odcinków srebrzanki.
P³ytkê g³ówn¹ próbujemy w³o¿yæ do rur-
ki. Jeœli siê nie mieœci postêpujemy z ni¹ tak
samo jak z p³ytk¹ zasilania. Jeœli diody s¹
ewidentnie za wysokie, mo¿e zajœæ koniecz-
noϾ ich zmiany na inne.
P³ytki g³ówn¹ i zasilania ³¹czymy ze sob¹
za pomoc¹ odcinków srebrzanki. Dodatkowo
od spodu po³¹czenie mo¿na wzmocniæ za po-
moc¹ cyny.
Elektrycznie urz¹dzenie jest ju¿ sprawne.
Pozostaje nam tylko wykonaæ obudowê.
Z rurki obcinamy kawa³ek trochê d³u¿szy ni¿
po³¹czone p³ytki zasilacza i g³ówna. Przyk³a-
damy go obok widma i zaznaczamy miejsce
na wyœwietlacz i przycisk. Nale¿y zwróciæ
uwagê na to, ¿eby nie zosta³y ¿adne zadziory
po wewnêtrznej stronie rurki. Po stronie
w³¹cznika mo¿emy wykonaæ zaœlepkê z po-
krywki z pude³ka po filmie fotograficznym.
W tym celu wycinamy jego œrodkow¹ czêœæ
– utworzy to coœ na kszta³t kapsla. Rurka jest
trochê za szeroka, aby brzegi naszej zaœlepki
mog³y j¹ obj¹æ. Nale¿y jej koniec pi³owaæ
naoko³o tak d³ugo, a¿ zaœlepka da siê luŸno
na³o¿yæ. W zaœlepce nale¿y wyci¹æ otwór na
prze³¹cznik.
Po z³o¿eniu ca³oœci mamy ju¿ pe³nowar-
toœciow¹ zabawkê! Otwór na diody mo¿na
upiêkszyæ za pomoc¹ przeœwietlonej b³ony
fotograficznej. Osobiœcie nie przewidzia³em
zaœlepki na górê obudowy. Uwa¿am, ¿e nie
jest ona konieczna.
Obs³uga uk³adu
Chocia¿ ju¿ o tym wspomina³em, chcê te in-
formacje zebraæ osobno, poniewa¿ mog³y siê
one wydaæ za bardzo rozrzucone po treœci ar-
tyku³u.
Obs³uga jest banalna: krótkie naciœniêcie
przycisku powoduje zmianê wyœwietlanego
obrazka. D³ugie, a¿ do zamigania wyœwietla-
cza, powoduje zmianê banku pamiêci.
W celu programowania uk³adu nie trzeba
nic robiæ oprócz pod³¹czenia uk³adu przez
konwerter do wolnego portu szeregowego
PC-ta. Uk³ad jest ca³y czas gotowy na przyj-
mowanie danych.
Dodatki
Oprócz samego uk³adu przygotowa³em dla
Was dwa programy.
Pierwszy o nazwie „BitmapToWidmo” bê-
dzie wsparciem dla programistów. Jest to
program, którego sam u¿ywa³em. Nie posia-
da on ¿adnych wodotrysków, poniewa¿ po
pierwsze pisa³em go na przys³owiowym „ko-
lanie”, a po drugie wiem, jak ró¿ne bajery de-
nerwuj¹, gdy ciê¿ko pracujemy g³ówk¹. Jego
zadanie jest proste: po po³o¿eniu na okienku
obrazka, je¿eli jego format jest w³aœciwy
umieszcza on w schowku tekst, który mo¿e-
my wkleiæ do programu w BASCOM’ie.
Umieszcza on najpierw iloϾ danych obrazka
a nastêpnie po znaku [ENTER] dane. Musi-
my jedynie dopisaæ s³ówko
Data przed oby-
dwoma liniami i wykasowaæ przecinek
z koñca ostatniej linii. Ten nadmiarowy prze-
cinek wynika ze sposobu przekszta³cania
obrazka na dane i braku czasu na umieszcze-
nie procedur korekcji.
Mimo wymienionych niedogodnoœci na-
rzêdzie to naprawdê jest wygodne i bardzo
pomaga. Mo¿ecie mi wierzyæ – obrazek
pierwszego serca przekszta³ca³em na kartce!
Okropna robota.
Drugi program wyposa¿ony ju¿ w wiele
upiêkszeñ nazywa siê „ProgramatorWidma”.
Jest to aplikacja dokonuj¹ca transferu obraz-
ków do pamiêci u¿ytkownika EEPROM
„Widma”. Jest on wyposa¿ony w plik pomo-
cy uruchamiany za pomoc¹ klawisza F1. Plik
pomocy stara³em siê napisaæ prosto i treœci-
wie tak, ¿e zapoznanie siê z programem nie
powinno zaj¹æ wiêcej ni¿ 5 minut. Z tego
wzglêdu tutaj ograniczê siê do stwierdzenia,
¿e obs³uga „Widma” z pomoc¹ „Programa-
Wykaz elementów
Rezystory
RR11-RR1122 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..330000
Ω
Ω
RR1133 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..1100kk
Ω
Ω
RR1144 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..44,,77kk
Ω
Ω
Kondensatory
CC11,,CC22 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..3333ppFF
CC33 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000nnFF cceerraam
miicczznnyy
CC44 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..110000µµFF//1166VV
Pó³przewodniki
DD11-DD1122 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..DDiiooddyy LLEEDD 33xx55m
mm
m
TT11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..BBCC554488
UU11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..AATT9900SS22331133 ((zzaapprrooggrraam
moowwaannyy))
Ró¿ne
SS11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..PPrrzzyycciisskk zzee zzddeejjm
moowwaannyym
m kkllaawwiisszzeem
m
XX11 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..RReezzoonnaattoorr kkwwaarrccoowwyy 44M
MHHzz
22-ppoozzyyccyyjjnnyy,, pprrzzyykkrrêêccaannyy nnaa pp³³yyttêê cczzoo³³ooww¹¹,, pprrzzee³³¹¹cczznniikk zzaassiillaanniiaa
SSpprrêê¿¿yynnkkaa zz ppuuddee³³kkaa nnaa bbaatteerriiee
BBllaasszzkkii ((nnpp.. zz dduu¿¿eeggoo pprrzzeekkaaŸŸnniikkaa))
GGnniiaazzddoo cciinncchh
W
Wttyykk cciinncchh
W
Wttyykk DDBB99 ww wweerrssjjii uuzzaallee¿¿nniioonneejj oodd ttyyppuu uukk³³aadduu ((ppaattrrzz tteekksstt))
OObbuuddoowwaa nnaa wwttyykk DDBB99
P³ytka drukowana jest dostêpna w sieci
handlowej AVT jako kit szkolny AVT-3017
toraWidma” jest bardzo prosta i przyjemna.
Sprowadza siê w³aœciwie do przeniesienia
obrazków na okno programu i przyciœniêcia
przycisku wyœlij. Polecam zapoznanie siê
z tym programem, poniewa¿ dziêki niemu
mo¿na dowiedzieæ siê paru dodatkowych
rzeczy o uk³adzie.
Obydwa programy akceptuj¹ monochro-
matyczne bitmapy o wysokoœci 12 pikseli,
przy czym ich szerokoœæ musi byæ liczb¹
parzyst¹.
Rados³aw Koppel