سلام
دوستان من و دوستم داریم اولین رباتمون رو می سازیم و مسیر یابه با موتور گیربکس دار 800 RPM و هشت سنسوره و من فقط برنامه نویسیش رو با بسکام (به زبان بیسیک) بلد بودم و نوشتم ولی الآن فهمیدم که اگه بخوایم ربات واقعاً درست و حسابی عمل کنه باید با C بنویسم
می خوام ببینم چطور می تونم تو یه مدت 2 3 هفته ای c رو یاد بگیرم در حد برنامه نویسی همین ربات
یه مرجعی، سایتی، کتابی، فیلمی .... هر چی که بتونه به من تو این زمان کم این زبان رو یاد بده رو اگه می شناسین معرفی کنین
ممنون
برای این کاری که شما میخواین فرقی نداره زبان برنامه نویسی
برای یاد گیری زبان سی میتونید از مقالات داخل سایت استفاده کنید همچنین تاپیک هایی که در این باره ساخته شده اند
دوست گلم شما لطف کن یک سری به این تاپیک بزن (
لینک )
یعنی به نظرتون همین بیسیک رو ادامه بدم؟
دوست گلم فرقی نداره.
با هردوش میشه برنامه خفن خفن نوشت.
ولی C یک زبان خیلی خیلی خیلی کلی تره.
سلام
من داشتم می نوشتم برنامه رو توی خط 3 تا مونده به آخر، دستور case &B..... به مشکل خوردم
وقتی بعد : ، موتور mr1 رو صفر می کنم خطایی نمی ده ولی وقتی موتور های دیگه رو می نویسم خطا می ده چه یکیشون یه هر سه تاشون باهم.... چطور همه ی موتور هام رو با این دستور صفر کنم؟
کد:
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
Config Portb = Output 'motors
Config Portd = Input 'sensors
Config Pinb.7 = Input 'start key
Ml1 Alias Portb.3
Ml2 Alias Portb.4
Mr1 Alias Portb.5
Mr2 Alias Portb.6
Start Alias Pinb.7
Reset Alias Pinc.6
Sen1 Alias Pind.0
Sen2 Alias Pind.1
Sen3 Alias Pind.2
Sen4 Alias Pind.3
Sen5 Alias Pind.4
Sen6 Alias Pind.5
Sen7 Alias Pind.6
Sen8 Alias Pind.7
Dim A As Byte
Dim B As Byte
'------------------------------'
Do
Select Case Pind
Case &B00011000 : Mr1 = 0 And Ml1 = 0 And Ml2 = 0
Loop
End
سلام شما یه مشکلی دارن که اینجا اومدین دوتایی رو از یک نوع قرار دادین که طبق هلپ بسکام باید به صورت زیر باشه
کد php:
Config Timer1 = Pwm , Pwm = 8 , Compare_A_Pwm = Clear_Up , Compare_B_Pwm = Clear_Down , Prescale = 1
من یه برنامه براتون میزارم اگه بشه که فقط به عنوان یه مثال در کابردن فرمان ها ازش استفاده کنید
کد php:
$regfile = "m32def.dat"
$crystal = 12000000
Config Portd.6 = Output : M11 Alias Portd.6
Config Portd.7 = Output : M12 Alias Portd.7
Config Portd.3 = Output : M21 Alias Portd.3
Config Portd.1 = Output : M22 Alias Portd.1
Config Portb.4 = Output : Led Alias Portb.4 : Led = 1 'for status led
Config Portd.5 = Output : Portd.5 = 1 'for Enaable motor's
Config Portd.4 = Output : Portd.4 = 1 'for enable motor's
Config Pinc.3 = Input : S1 Alias Pinc.3
Config Pinc.4 = Input : S2 Alias Pinc.4
Config Pinc.5 = Input : S3 Alias Pinc.5
Config Pinc.6 = Input : S4 Alias Pinc.6
Config Pinc.7 = Input : S5 Alias Pinc.7
Config Pina.7 = Input : S6 Alias Pina.7
Config Pina.6 = Input : S7 Alias Pina.6
Config Pina.5 = Input : S8 Alias Pina.5
Config Pina.4 = Input : S9 Alias Pina.4
Config Pina.3 = Input : S10 Alias Pina.3
Config Pina.2 = Input : S11 Alias Pina.2
Config Pina.1 = Input : S12 Alias Pina.1
Config Pina.0 = Input : S13 Alias Pina.0
Config Pinc.0 = Input : S14 Alias Pinc.0
Main:
Do
If S6 = 1 Then Goto Front
If S7 = 1 Then Goto Rast
If S5 = 1 Then Goto Chap
If S4 = 1 Then Goto Chap
If S8 = 1 Then Goto Rast
If S3 = 1 Then Goto Chap
If S9 = 1 Then Goto Rast
If S2 = 1 Then Goto Chap
If S10 = 1 Then Goto Rast
If S6 = 0 Then
If S13 = 1 Then Goto Front
End If
'If S13 = 0 Then
'If S14 = 1 Then Goto Front
'End If
Loop
End
Front:
Toggle Led
M11 = 0
M12 = 1
M21 = 0
M22 = 1
Goto Main
Chap:
Toggle Led
M11 = 0
M12 = 0
M21 = 0
M22 = 1
Goto Main
Rast:
Toggle Led
M11 = 0
M12 = 1
M21 = 0
M22 = 0
Goto Main
برای ربات مسیر یاب هم نیازی به pwm نیست .بزار از سرعت بالا پرواز کنه
خوب این درست من مشکلم تو قسمت select case هست که بعد از case خواستم وقتی B00011000& شد همه موتور هام رو خاموش کنم
ولی نمیتونم این کار رو بکنم
من نمی خوام از if برای شرط گذاریم استفاده کنم
میخوام از select case استفاده کنم
می تونید از این برنامه استفاده کنید
کد:
$regfile = "m32def.dat"
$crystal = 8000000
'-------------------------------- Variables ----------
Config Porta = Input
Config Portb = Input
Config Portd = Output
Config Portc = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim I As Bit
Dim Loop1 As Byte
Dim X As Bit
Dim Tim As Word
Dim Lop As Bit
Dim Pin0 As Bit
Dim Pin1 As Bit
'-------------------------------- main ------------------
B = 0
C = 0
D = 0
E = 0
I = 0
Do
Goooo:
A.0 = Pina.0
A.1 = Pina.1
A.2 = Pina.2
A.3 = Pina.3
A.4 = Pina.4
A.5 = Pina.5
A.6 = Pina.6
'---------------------- zamine meshki-------------------
Select Case A
Case &B0111111: '0111111
Pwm1a = 0
Pwm1b = 255
Portc.0 = 0
Portc.1 = 1
I = 1
Goto Goooo
Case &B1011111: '1011111
Pwm1a = 10
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1101111: '1101111
Pwm1a = 120
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1110111: '1110111
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1111011: '1111011
Pwm1a = 255
Pwm1b = 120
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1111101: '1111101
Pwm1a = 255
Pwm1b = 10
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1111110: '1111110
Pwm1a = 255
Pwm1b = 0
Portc.0 = 1
Portc.1 = 0
I = 1
Goto Goooo
Case &B1100011 : '1100011
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
I = 1
Goto Goooo
Case &B1111111 : '1111111
I = 1
Goto Goooo
End Select
'--------------------- zamine sefid ------------------
I = 0
B.0 = A.4
B.1 = A.2
C.0 = A.5
C.1 = A.1
D.0 = A.6
D.1 = A.0
If A.3 = 1 Then
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
End If
Select Case B
Case 1: '01
Pwm1a = 120
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
Case 2: '10
Pwm1a = 255
Pwm1b = 120
Portc.0 = 0
Portc.1 = 0
Goto Goooo
Case 3: '11
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
End Select
Select Case C '01
Case 1:
Pwm1a = 5
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
Case 2: '10
Pwm1a = 255
Pwm1b = 5
Portc.0 = 0
Portc.1 = 0
Goto Goooo
Case 3: '11
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
End Select
Select Case D
Case 1:
Pwm1a = 0
Pwm1b = 255
Portc.0 = 0
Portc.1 = 1
Goto Goooo
Case 2:
Pwm1a = 255
Pwm1b = 10
Portc.0 = 1
Portc.1 = 0
Goto Goooo
Case 3 :
Pwm1a = 255
Pwm1b = 255
Portc.0 = 0
Portc.1 = 0
Goto Goooo
End Select
Loop
End