ايران ويج

نسخه‌ی کامل: برنامه برای ربات مسیر یاب با 8 سنسور
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام
دوستان من و دوستم داریم اولین رباتمون رو می سازیم و مسیر یابه با موتور گیربکس دار 800 RPM و هشت سنسوره و من فقط برنامه نویسیش رو با بسکام (به زبان بیسیک) بلد بودم و نوشتم ولی الآن فهمیدم که اگه بخوایم ربات واقعاً درست و حسابی عمل کنه باید با C بنویسم
می خوام ببینم چطور می تونم تو یه مدت 2 3 هفته ای c رو یاد بگیرم در حد برنامه نویسی همین ربات
یه مرجعی، سایتی، کتابی، فیلمی .... هر چی که بتونه به من تو این زمان کم این زبان رو یاد بده رو اگه می شناسین معرفی کنین
ممنون
برای این کاری که شما میخواین فرقی نداره زبان برنامه نویسی
برای یاد گیری زبان سی میتونید از مقالات داخل سایت استفاده کنید همچنین تاپیک هایی که در این باره ساخته شده اند
دوست گلم شما لطف کن یک سری به این تاپیک بزن ( لینک )
یعنی به نظرتون همین بیسیک رو ادامه بدم؟
فکر می کنم این تاپیک به دردتون میخوره
http://www.iranled.com/forum/post-177271.html#pid177271
دوست گلم فرقی نداره.
با هردوش میشه برنامه خفن خفن نوشت.
ولی 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 Compare_A_Pwm Clear_Up Compare_B_Pwm Clear_Down Prescale 
من یه برنامه براتون میزارم اگه بشه که فقط به عنوان یه مثال در کابردن فرمان ها ازش استفاده کنید

کد 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
صفحه‌ها: 1 2