سلام
من میخوام موتور پله ای با استفاده از متلب و پورت سریال کنترل کنم کد متلب رو نوشتم و این کد یک رشته رو به پورت سریل ارسال میکن که 3 بیت برای سرعت موتور یک بیت برای زاویه شروع .دو بیت برای زاویه پایان و یک بیت برای جهت پرخش هست این کد رو هم توی بسکام دارم :
کد:
$regfile = "M32def.dat"
$crystal = 11059200
$baud = 9600
Config Portb = Output
Led Alias Portd.2
Drive_b_on Alias Portd.4
Drive_a_on Alias Portd.5
Declare Sub Drive_b_r
Declare Sub Drive_b_l
Dim B As Byte
Dim S As String * 12 , Speed As String * 12 , Dr As String * 12 , My_serial As Byte
Dim My_speed As Word , My_drg As Word , Lf As String * 1
Main:
Input S , "enter your string"
Print S
If Left(s , 1) = "#" And Right(s , 1) = ":" Then
Speed = Mid(s , 1 , 2)
Dr = Mid(s , 4 , 2)
Lf = Mid(s , 6 , 1)
My_serial = Val(lf)
My_speed = Val(speed)
My_drg = Val(dr)
My_drg = My_drg / .9
End If
Select Case My_serial
Do
If Ischarwaiting() <> 0 Then Exit Do
Loop
Case 1:
Set Drive_b_on
Do
If Ischarwaiting() <> 0 Then Exit Do
Call Drive_b_l
Loop
Case 2:
Set Drive_a_on
Do
If Ischarwaiting() <> 0 Then Exit Do
Call Drive_b_r
Loop
End Select
My_serial = Waitkey()
My_serial = Asc(my_serial)
Goto Main
Sub Drive_b_l
Portb = 0
For B = 1 To My_drg
Set Portb.b
Waitms My_speed
Reset Portb.b
Waitms My_speed
Next B
End Sub
Sub Drive_b_r
Portb = 0
For B = My_drg To 1 Step -1
Set Portb.b
Waitms My_speed
Reset Portb.b
Waitms My_speed
Next B
End Sub
حالا می وام بد.نم کسی هست روش کار برنامه و مخصوصا زیربرنامه Sub Drive_b_r
یه کم توضیح بده step در اینجا چی هست؟و اینکه کدوم پایه ها باید به دو سر led وصل بشوند؟