PROGRAMIRANJE ROBOTA
Razmotrimo principe komandovanja robotom:
1. Kreatanje unapred
Za kretanje unapred neohodno je omogućiti rad oba
motora tj. bitovi D0 i D2 moraju biti postavljeni na 1.
Takođe motori moraju se okretati u istom smeru pa ćemo bitove D1 i D3 takođe postaviti na 1. To znači da na Data port treba poslati broj 1+2+4+8=15(1111
binarno).
2. Kreatanje unazad
I u ovom slučaju neohodno je omogućiti rad oba
motora tj. bitovi D0 i D2 moraju biti postavljeni na 1, ali
sada se njihov smer okretanja mora promenit pa ćemo bitove D1 i D3 postaviti na 0. To znači da na Data port treba poslati broj 1+0+4+0=5(101 binarno).
3. Kreatanje ulevo
Za kretanje ulevo treba zaustaviti motor1 tj. bit D0 treba postaviti na 0, što
znači da na Data port treba
poslati broj 0+2+4+8=14(1110 binarno).
4. Kreatanje udesno
Za kretanje udesno treba zaustaviti motor2 tj. bit D2 treba postaviti na 0, što
znači da na Data port treba
poslati broj 1+2+0+8=13(1011 binarno).
5. Zaustavljanje
robota
Za zaustavljanje motora treba zaustaviti oba motora tj.
bitove D0 i D2 treba postaviti na nulu, što znači da na Data port treba poslati broj
0+0+0+0=0.
6. Zvučni
signal
Za generisanje zvučnog signala treba bit D4 postaviti na 1 i zadržati to
stanje određeno vreme(dužina trajanja) znači da na Data port treba poslati broj: prethodno stanje+16, a nakon završetka
generisanja zvuka ovaj bit treba vratiti na 0 tj. na Data port treba poslati broj : prethodno stanje - 16.
Budući da su nam jasni načini upravljanja
robotom sam program moguće je napisati u bilo kom programskom jeziku. U
ovom primeru program je napisan u Turbo pascal-u. Pozivom programa
dobićemo ekran prikazan kao na donjoj slici:

Za kretanje koriste ste se strelice levo, desno, napred i nazad. Za
zaustavljanje treba koristi Space Bar. Zvučni efekti se proizvode
pritiskom na taster BackSpace, a za napuštanje motora pritisnite Enter
taster. Program Robot.pas i Robot.exe možete preuzeta na
Downloads. U donjoj delu ekrana prikazuje se statusna linije koja pokazuje koja
komanda je izdata robotu.
Program napisan u Visual Basic-u
ima izgled ekrana kao na donjoj slici.

Pritiskom tastera miša na neku od komandi ona će biti automatski
prosleđena robotu. Glavni deo koda programa Robot je sledeći:
|
' '
Generalna delaracija za upotrebu IO.DLL ' Private Declare Sub PortOut Lib
"IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Private Declare Sub PortWordOut Lib
"IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) Private Declare Sub PortDWordOut Lib
"IO.DLL" (ByVal Port As Integer, ByVal Data As Long) Private Declare Function PortIn Lib
"IO.DLL" (ByVal Port As Integer) As Byte Private Declare Function PortWordIn Lib
"IO.DLL" (ByVal Port As Integer) As Integer Private Declare Function PortDWordIn Lib
"IO.DLL" (ByVal Port As Integer) As Long Private Declare Sub SetPortBit Lib
"IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Private Declare Sub ClrPortBit Lib
"IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Private Declare Sub NotPortBit Lib
"IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Private Declare Function GetPortBit Lib
"IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean Private Declare Function RightPortShift Lib
"IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Private Declare Function LeftPortShift Lib
"IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Private Declare Sub Sleep Lib
"kernel32" (ByVal dwMilliseconds As Long) Public LPTadresa As Integer Public Komanda As Byte Public Tekst As String Public uk, isk As Integer _____________________________________________________________________________________________________________ Private Sub Command1_Click() ' Kretanje LEVO
Call Brisi
Komanda = 0 + 2 + 4 + 8
Call PortOut(LPTadresa, Komanda)
Command1.BackColor = &HFF0FF
Command6.BackColor = &HFF00F EndSub _____________________________________________________________________________________________________________ Private Sub Command2_Click() ' Kretanje DESNO
Call Brisi
Komanda = 1 + 2 + 0 + 8
Call PortOut(LPTadresa, Komanda)
Command2.BackColor = &HFF0FF
Command6.BackColor = &HFF00F End Sub _____________________________________________________________________________________________________________ Private Sub Command3_Click() ' Kretanje NAPRED
Call Brisi
Komanda = 1 + 2 + 4 + 8
Call PortOut(LPTadresa, Komanda)
Command3.BackColor = &HFF0FF
Command6.BackColor = &HFF00F End Sub _____________________________________________________________________________________________________________ Private Sub Command4_Click() ' Kretanje NAZAD
Call Brisi
Komanda = 1 + 0 + 4 + 0
Call PortOut(LPTadresa, Komanda)
Command4.BackColor = &HFF0FF
Command6.BackColor = &HFF00F End Sub _____________________________________________________________________________________________________________ Private Sub Command5_Click() ' Zvucni signal
Komanda = Komanda + 16
Call PortOut(LPTadresa, Komanda)
Command5.BackColor = &HFF0FF
Sleep (150)
Komanda = Komanda - 16
Call PortOut(LPTadresa, Komanda)
Command5.BackColor = &HFF0000 End Sub _____________________________________________________________________________________________________________ Private Sub Command6_Click() ' Komanda STOP
Call Brisi
Komanda = 0 + 0 + 0 + 0
Call PortOut(LPTadresa, Komanda)
Command6.BackColor = &HFF End Sub _____________________________________________________________________________________________________________ Private Sub Form_Load()
LPTadresa = &H378
Call Command6_Click End Sub Private Sub Form_Unload(Cancel As Integer)
Call PortOut(LPTadresa, 0)
Unload Me
End End Sub _____________________________________________________________________________________________________________ Private Sub Option1_Click()
LPTadresa = &H378
CPTadresa = LPTadresa + 2 End Sub _____________________________________________________________________________________________________________ Private Sub Option2_Click()
LPTadresa = &H278
CPTadresa = LPTadresa + 2 End Sub _____________________________________________________________________________________________________________ Private Sub Option3_Click()
LPTadresa = &H3BC
CPTadresa = LPTadresa + 2 End Sub . |
|
|
Upravo prema opisanim pravilima izdajemo odgovarajuću komandu,
komandom Call PortOut(LPTadresa, Komanda). Program koristi biblioteku IO.DLL znači da je
podržan na svim Windows platformama.
Program možete takođe preuzeti na Downloads.
http://vojo.milanovic.org
© Copyright, 2004 Milanović Vojo
All right reserved