56
Elektronika dla Wszystkich
Do czego to s³u¿y?
Opisany modu³ przeznaczony jest dla szero-
kiej rzeszy mi³oœników ró¿nego rodzaju za-
baw i gier, a w szczególnoœci maj¹cych ¿y³kê
hazardzisty. Jak sama nazwa wskazuje „2 w 1”
jest to po³¹czenie dwóch ró¿nych projektów
w jednym. Siêgaj¹c po wczeœniejsze numery
EdW, mo¿emy odnaleŸæ kilka projektów do-
tycz¹cych elektronicznej kostki i ruletki. S¹
tak¿e gotowe kity do samodzielnego monta-
¿u, ale nie by³o jeszcze projektu ³¹cz¹cego te
dwie ró¿ne „zabawki”. Patrz¹c na fotografiê
modelu, u³o¿enie diod na p³ytce nie odzwier-
ciedla oczek na kostce, ale jeœli zmontujecie
sobie taki w³aœnie uk³ad, zobaczycie, ¿e ³atwo
siê w tym po³apaæ. Mianowicie, liczba zapa-
lonych diod bêdzie oznaczaæ liczbê oczek na
kostce. Z ruletk¹ nie powinno byæ najmniej-
szych problemów, jest klasyczna. A co po-
wiecie, aby sterowaæ t¹ zabawk¹ pilotem na
podczerwieñ? Myœlê, ¿e wszystkim znudzi³y
siê przyciski umieszczone bezpoœrednio na
p³ytce, a sterowanie bezprzewodowe jest te-
raz na topie. Do wykonania uk³adu zachêcam
wszystkich, którzy lubi¹ siê bawiæ!
Jak to dzia³a?
Schemat ideowy uk³adu pokazany jest na ry-
sunku 1. Po³¹czenie kostki i ruletki nie by³o-
by mo¿liwe, gdyby nie mikrokontroler z ro-
dziny AVR. Mowa oczywiœcie o AT90S2313,
który jest bardzo popularny ostatnimi czasy
w µProjektach 3000. Program znajduj¹cy siê
w jego wnêtrzu zosta³ napisany w Bascomie
AVR ver.1.11.6.4. Jak widaæ, uk³ad jest bar-
dzo proœciutki, zawiera dos³ownie kilka ele-
mentów, tak wiêc nie powinien sprawiæ Wam
¿adnych problemów. Zajmijmy siê teraz
oprogramowaniem. Opuœcimy deklaracjê
zmiennych i konfiguracjê portów, a przej-
dziemy od razu do pêtli g³ównej – listing 1.
Jak widaæ, jest ona bardzo króciutka, zawie-
ra cztery funkcje. Pierwsza funkcja Rnd
oznacza skrót z jêzyka angielskiego Random
Number Drawning, czyli generacja liczb lo-
sowych. Funkcja ta jest niew¹tpliwie rewela-
cj¹ w Bascomie, bo nie musimy wymyœlaæ
¿adnej procedury pozwalaj¹cej generowaæ
liczby losowe, tylko po prostu wpisujemy
Rnd i w nawiasie górn¹ wartoœæ
przedzia³u, z którego maj¹ byæ genero-
wane liczby. Druga funkcja Getrc5 od-
powiedzialna jest za dekodowanie ko-
dów pochodz¹cych z pilota, który pra-
cuje oczywiœcie w standardzie RC5.
Trzecia funkcja Debounce umo¿liwia
pod³¹czenie prze³¹cznika bezpoœrednio
do linii portu oraz eliminuje efekt drga-
nia jego styków. Zadaniem czwartej
funkcji Waitms jest spowolnienie pracy
trzech wczeœniejszych. Oprócz pêtli
g³ównej w programie znajduj¹ siê dwie
procedury: Kostka i Ruletka. W zale¿-
noœci od zmiennej Kod, która przyjmuje war-
toœci zdekodowanego kodu, program wyko-
nuje odpowiedni¹ procedurê. Naciœniêcie
klawisza o kodzie 1 lub Przycisku_1 (S1)
spowoduje wywo³anie procedury Kostka – li-
sting 2. Na pocz¹tku procedury umieœci³em
„„
„„
22
22
w
w
w
w
11
11
””
””
,,
,,
c
c
z
z
y
y
l
l
i
i
e
e
l
l
e
e
k
k
t
t
r
r
o
o
n
n
i
i
c
c
z
z
n
n
a
a
r
r
u
u
l
l
e
e
t
t
k
k
a
a
i
i
k
k
o
o
s
s
t
t
k
k
a
a
d
d
o
o
g
g
r
r
y
y
µ
µ
P
P
3
3
0
0
1
1
9
9
Rys. 1 Schemat ideowy
Listing 1
Do
Liczba_generowana = Rnd(6)
Waitms 100
Getrc5(address , Kod)
'dekodowanie kodów
If Address = 0 Or Address = 10 Then
Kod = Kod And &B10111111
End If
If Kod = 1 Then
Call Kostka
End If
If Kod = 2 Then
Call Ruletka
End If
Debounce Przycisk_1 , 0 , Kostka , Sub
Debounce Przycisk_2 , 0 , Ruletka , Sub
Loop
w pêtli powtórzeñ „symulacjê” losowania,
polegaj¹c¹ na miganiu szeœciu diod z towa-
rzysz¹cym im dŸwiêkiem. Nastêpnie w za-
le¿noœci od wygenerowanej w pêtli g³ównej
liczby ustawiæ port w stan odzwierciedlaj¹cy
tê liczbê. Zastosowa³em do tej operacji funk-
cjê Select Case. Wynik w postaci zapalonych
diod widoczny jest przez 5 sekund, a po up³y-
wie tego czas diody gasn¹.
Zasadê dzia³ania elektronicznej Kostki mamy
ju¿ za sob¹, przejdziemy wiêc do wyjaœnie-
nia, na czym bêdzie polegaæ dzia³anie Rulet-
ki – listing 3. Wejœcie do tej procedury mo¿-
liwe jest po naciœniêciu klawisza o kodzie 2
lub Przycisku_2 (S2). Jak na pewno zauwa-
¿yliœcie, jest tu pe³no, chêtnie przeze mnie
stosowanych, pêtli powtórzeñ „wzbogaco-
nych” o funkcjê Rotate. Na pocz¹tku proce-
dury zak³adam pocz¹tkow¹ wartoœæ zmiennej
A, któr¹ bêdê obraca³
o jedno miejsce w lewo.
Rolowaniu bêdzie towa-
rzyszy³ dŸwiêk. Zastoso-
wanie jednej pêtli w dru-
giej pozwoli³o na stopnio-
we zmniejszanie prêdko-
œci obracania bitu. Aby
„kulka” nie zatrzymywa³a
siê w jednym miejscu, po-
wtórzy³em drugi raz tê
sam¹ pêtlê, tylko liczbê
powtórzeñ zale¿y od
zmiennej Liczba_gene-
rowana, czyli wygenero-
wanej w pêtli g³ównej
liczby. Tak jak w przypad-
ku Kostki wynik widoczny
jest przez pewien czas.
Oprogramowanie mamy
za sob¹, w razie niejasno-
œci polecam analizê kodu
Ÿród³owego dostêpnego na
stronie internetowej EdW.
Monta¿
i uruchomienie
Ca³y uk³ad mo¿na zmontowaæ na p³ytce dru-
kowanej pokazanej na rysunku 2. Z w³asne-
go doœwiadczenia polecam rozpoczêcie mon-
ta¿u od zamontowania stabilizatora i spraw-
dzenia poprawnoœci jego dzia³ania. „Zaszy-
cie” ca³ej inteligencji uk³adu we wnêtrzu mi-
kroprocesora spowodowa³o, ¿e monta¿ p³ytki
jest banalny, wiêc przeprowadzamy go
w sposób typowy, od elementów najni¿szych
do najwy¿szych. Diody LED montujemy na
przemian raz koloru czerwonego, raz koloru
zielonego. Dwa kolory maj¹ odzwierciedlaæ
klasyczn¹ ruletkê. Niestety nie ma diod œwie-
c¹cych na czarno, dlatego u¿y³em koloru zie-
lonego. Po wlutowaniu podstawki i umie-
szczeniu w niej zaprogramowanego mikro-
procesora mo¿emy zaczynaæ zabawê.
Obs³uga uk³adu
Przy okazji omawiania programu wspomina-
³em ju¿ o obs³udze naszej „zabawki”, ale chcê
tê informacje zebraæ osobno. Obs³uga jest ba-
nalnie prosta: naciskaj¹c klawisz 1 lub przy-
cisk_1 (S1) „rzucamy kostk¹”, naciskaj¹c
klawisz 2 lub Przycisk_2 (S2) „puszczamy
kuleczkê”. ¯yczê wszystkim mi³ej zabawy!!!
£ukasz Hrapek
57
Elektronika dla Wszystkich
Wykaz elementów
Rezystory
R1-RR8 . . . . . . . . . . . . . . . . . . . . . . . . . .320
Ω
R9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Ω
Kondensatory
C1,C2 . . . . . . . . . . . . . . . . . . . . . . . . . . .22pF
C3 . . . . . . . . . . . . . . . . . . . . . . . . . . . .100µF
Pó³przewodniki
D1-DD4 . . . . . . . . . . . . . . . . . . .LED5 czerwone
D5-DD8 . . . . . . . . . . . . . . . . . . . .LED5 zielone
IC1 . . . . . . . . . . . . . . . . . . . . . . . .AT90S2313
IC2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7805
OP1 . . . . . . . . . . . . . . . . . . . . . . . . . .SFH506
Inne
Q1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8MHz
SG1 . . . . . . . . . . . . . . . . . . . . . . .Buzzer piezo
ARK 2
Komplet podzespo³ów z p³ytk¹ jest dostêpny
w sieci handlowej AVT jako kit szkolny AVT-3019
Listing 2
Sub Kostka:
For L = 1 To 15
Diody = &B11000000
Sound Bzyczek , 500 , 50
Diody = &B11111111
Waitms 150
Set Bzyczek
Next L
Select Case Liczba_generowana
Case 0 : Diody = &B11111110
Case 1 : Diody = &B11111100
Case 2 : Diody = &B11111000
Case 3 : Diody = &B11110000
Case 4 : Diody = &B11100000
Case 5 : Diody = &B11000000
End Select
Wait 5
Diody = &B11111111
End Sub Kostka
Listing 3
Sub Ruletka:
Rolowana_liczba = &B11111110
For L = 1 To 25
Zwloka = Zwloka + 5
Rotate Rolowana_liczba , Left , 1
Diody = Rolowana_liczba
Sound Bzyczek , 800 , 10
Set Bzyczek
For I = 1 To Zwloka
Waitms 2
Next I
Next L
For L = 1 To Liczba_generowana
Zwloka = Zwloka + 5
Rotate Rolowana_liczba , Left
, 1
Diody = Rolowana_liczba
Sound Bzyczek , 800 , 10
Set Bzyczek
For I = 1 To Zwloka
Waitms 2
Next I
Next L
Zwloka = 0
Wait 5
Diody = &B11111111
Rys. 2 Schemat monta¿owy