*   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