سلام به همه من یه مشکلی با ربات تعقیب خطی که ساختم دارم اینه که خط 1.5 سانتی که تو مسابقه ای قراره توش شرکت کنم اندازه همین اندازه است اصلا خوب کار نمی کنه ! همش سر پیچ ها رد می کنه ولی خط راست رو تقریبا خوب می ره ! با وجود اینکه برنامه ریزیش رو خوب انجام دادم و سرعتای مختلف رو تقریبا 60 بار امتحان کردم ! سنسورام هم 8 تاست که 7 تاشو هشتی گذاشتم و یکی هم پشت سنسور اولی به فاصله 5 سانت واسه تشخیص 4 راهی !
 
مهندس می شه برنامه تو بذاری !
مطمئنی همه سنسورها درستن !
فاصله سنسورهای کنار از هم چقدره !
بعد ربات شما چجوری می چرخه !
آیا یه چرخ رو قفل و چرخ دیگه می چرخه !
ایا یه چرخ معکوس و دیگری معمولی می چرخه ! ( این پشنهاد می شه )
آیا یه چرخ فقط می چرخه و چرخ دیگه ول هستش ! ( اصلا پیشنهاد نمی شه )
بعد از این قضایا دستور چرخش شما چجوریه !
بهتر بگم : گفتین چقدر بچرخه !
معمولا اینطوری می گن : اگهس سنسور سمت راست یک بود و وسط و سمت چپ صفر بود بچرخ به راست تا زمانی که سنسور وسط یک بشه !
یکم مهندس بیشتر رو کارهایی که کردی توضیح بده !
 
فاصله سه سنسور وسط 1.1 و بقیه 1.5 خودم الان فکر می کنم زیاده !
سرعتشونم اینجوریه نوشتم
کد php: 
If A = &B00010000 Or A = &B00010001 Then
Compare1a = 255
Compare1b = 255
Reset Portd.2
Set Portd.3
Reset Portd.0
Set Portd.1
End If
'****************
If A = &B00001000 Or A = &B00001001 Then
Compare1a = 220
Compare1b = 255
Reset Portd.2
Set Portd.3
Reset Portd.0
Set Portd.1
End If
'****************
If A = &B00000100 Or A = &B00000101 Then
Compare1a = 160
Compare1b = 255
Reset Portd.2
Set Portd.3
Reset Portd.0
Set Portd.1
End If
'****************
If A = &B10000000 Or A = &B10000001 Then
Compare1a = 255
Compare1b = 200
Set Portd.2
Reset Portd.3
Reset Portd.0
Set Portd.1
End If 
بعدش سنسورام رو هم به 7 تاشو به صورت 8 تی گذاشتم ! یکی هم پشت اولی به فاصله 5 سانت البته اگه سرعتش کم باشه رد نمی کنه ! ولی اگه یکم سرعتش زیاد شه چپ می کنه ! سنسورام رو هم ه این صورت نهادم 
| - - - - - - - |   یعنی به جز 2 تای اخر همشون افقی هستن ! اگه می شه آی دی تون رو هم بزارید من باتون چت کنم مشکلم شاید حل بشه ! ممنونم بای
 
مهندس اسم تایپیکو عوض کردم تا بیشتر به موضوع بخوره !
ببخشین که پست شما رو هم ویرایش کردم تا مرتب تر بشه برنامه رو نگاه کرد !
ID من رو هم تو مشخصاتم نگاه کنین نوشته !
بعد مشخصه که شما این قضیه رو تو برنامه لحاظ نکردین :
فکر کنم این قضیه رو تو برنامه بذارین مشکلتون حل بشه !
نقل قول: بهتر بگم : گفتین چقدر بچرخه !
معمولا اینطوری می گن : اگه سنسور سمت راست یک بود و وسط و سمت چپ صفر بود بچرخ به راست تا زمانی که سنسور وسط یک بشه !
و یه چیز دیگه :
اگر وضعیت سنسورها تو حالات شما نبود برنامه چی کار می کنه !
نکنه گفتین مستقیم برو ! ( که اشتباه ترین کار ممکن هستش )
چون ربات در این حالت نباید کاری انجام بده و باید آخرین وضعیتی رو که داشته حفظ کنه ! ( مثل اگه داشته می پیچیده هنوزم بپیچه )
 
مهندس یه برنامه نمونه از من  : ( البته خیلی خلاصه کردم تا مفهوم رو برسونه )
کد php: 
Rp Alias Portd.6                                            ' + MOTOR RIGHT
Rn Alias Portd.7                                            ' - MOTOR RIGHT
Lp Alias Portd.3                                            ' + MOTOR LEFT
Ln Alias Portd.2                                            ' - MOTOR LEFT
Pwml Alias Pwm1b                                            ' PWM LEFT MOTOR
Pwmr Alias Pwm1a                                            ' PWM RIGHT MOTOR
Dip_speed Alias Pinc.2                                      '= 1 = SLOW
Num_sir_int(1) = 59
Num_sir_int(2) = 59
Num_sir_int(3) = 59
Num_sir_int(4) = 59
Num_sir_int(5) = 59
Num_sir_int(6) = 59
Num_sir_int(7) = 59
Num_sir_int(8) = 59
Num_sir_int(9) = 59
Num_sir_int(10) = 59
Num_sir_int(11) = 59
Num_sir_int(12) = 59
Num_sir_int(13) = 59
Num_sir_int(14) = 59
Num_sir_int(15) = 59
Star:
Do
 If Sir.3 = Sir.4 And Sir.6 = Sir.11 And Sir.7 = Sir.12 And Sir.8 = Sir.13 And Sir.9 = Sir.14 Then :
      If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 1 And Sir.5 = 0 And Sir.10 = 0 Then Goto Mostaghim3
      If Sir.0 = 1 And Sir.1 = 0 And Sir.2 = 1 And Sir.5 = 0 And Sir.10 = 0 Then Goto Rast1
      If Sir.0 = 0 And Sir.1 = 1 And Sir.2 = 1 And Sir.5 = 0 And Sir.10 = 0 Then Goto Chap1
      If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 0 And Sir.5 = 0 And Sir.10 = 0 Then Goto Mostaghim2
      If Sir.0 = 1 And Sir.1 = 0 And Sir.2 = 0 And Sir.5 = 0 And Sir.10 = 0 Then Goto Rast1
      If Sir.0 = 0 And Sir.1 = 1 And Sir.2 = 0 And Sir.5 = 0 And Sir.10 = 0 Then Goto Chap1
      If Sir.0 = 0 And Sir.1 = 0 And Sir.2 = 1 And Sir.5 = 0 And Sir.10 = 0 Then Goto Mostaghim2
      If Sir.0 = 0 And Sir.1 = 1 And Sir.5 = 0 And Sir.10 = 1 Then Goto Rast1
      If Sir.0 = 1 And Sir.1 = 0 And Sir.5 = 1 And Sir.10 = 0 Then Goto Chap1
   End If
'===============================================================================  ~~\__@__ /~/  nim dayereh & < 90
   If Sir.6 = 1 Or Sir.7 = 1 Or Sir.8 = 1 Or Sir.9 = 1 Then :
      If Sir.4 = 0 And Sir.10 = 0 And Sir.11 = 0 And Sir.12 = 0 And Sir.13 = 0 And Sir.14 = 0 Then :
         If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 1 Then Goto Mostaghim3
         If Sir.0 = 1 And Sir.1 = 0 And Sir.2 = 1 Then Goto Rast1
         If Sir.0 = 0 And Sir.1 = 1 And Sir.2 = 1 Then Goto Chap1
         If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 0 Then Goto Mostaghim2
         If Sir.0 = 0 And Sir.1 = 0 And Sir.2 = 1 And Sir.3 = 0 Then Goto Rast3
         If Sir.0 = 0 And Sir.1 = 0 Then Goto Rast3
      End If
   End If
   If Sir.11 = 1 Or Sir.12 = 1 Or Sir.13 = 1 Or Sir.14 = 1 Then :
      If Sir.3 = 0 And Sir.5 = 0 And Sir.6 = 0 And Sir.7 = 0 And Sir.8 = 0 And Sir.9 = 0 Then :
         If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 1 Then Goto Mostaghim3
         If Sir.0 = 1 And Sir.1 = 0 And Sir.2 = 1 Then Goto Rast1
         If Sir.0 = 0 And Sir.1 = 1 And Sir.2 = 1 Then Goto Chap1
         If Sir.0 = 1 And Sir.1 = 1 And Sir.2 = 0 Then Goto Mostaghim2
         If Sir.0 = 0 And Sir.1 = 0 And Sir.2 = 1 And Sir.4 = 0 Then Goto Chap3
         If Sir.0 = 0 And Sir.1 = 0 Then Goto Chap3
      End If
   End If
Loop
'===============================================================================
Mostaghim2:
   Set Rp : Set Lp : Reset Rn : Reset Ln
   If Dip_speed = 1 Then : Pwml = 150 : Pwmr = 150
   Else : : Pwml = 200 : Pwmr = 200
   End If
Goto Star
'===============================================================================
Mostaghim3:
   Set Rp : Set Lp : Reset Rn : Reset Ln
   If Dip_speed = 1 Then : Pwml = 200 : Pwmr = 200
   Else : : Pwml = 250 : Pwmr = 250
   End If
Goto Star
'###############################################################################
Rast1:                                                      'kami enheref be rast
   Set Rp : Set Lp : Reset Rn : Reset Ln
   If Dip_speed = 1 Then : Pwml = 150 : Pwmr = 120
   Else : : Pwml = 200 : Pwmr = 160
   End If
Goto Star
'===============================================================================
Rast2:                                                      'be rast ba motor khamosh ta zamani ke sir.0=1 or SIR.1=1
   Reset Rp : Set Lp : Set Rn : Reset Ln
   If Dip_speed = 1 Then : Pwml = 140 : Pwmr = 50
   Else : : Pwml = 180 : Pwmr = 180
   End If
   Do
      Gosub Get_sir
      If Sir.0 = 1 Or Sir.1 = 1 Then Exit Do
   Loop
   Set Rp : Set Lp : Reset Rn : Reset Ln : Pwml = 140 : Pwmr = 140 : Waitms 50
Goto Star
'===============================================================================
Rast3:                                                      'be rast ta zamani ke sir.0=1 or SIR.1=1
   Reset Rp : Set Lp : Set Rn : Reset Ln
   If Dip_speed = 1 Then : Pwml = 140 : Pwmr = 140
   Else : : Pwml = 180 : Pwmr = 180
   End If
   Do
      Gosub Get_sir
      If Sir.0 = 1 Or Sir.1 = 1 Then Exit Do
   Loop
   Set Rp : Set Lp : Reset Rn : Reset Ln : Pwml = 140 : Pwmr = 140 : Waitms 50
Goto Star
'###############################################################################
Chap1:                                                      'kami enheref be chap
   Set Rp : Set Lp : Reset Rn : Reset Ln
   If Dip_speed = 1 Then : Pwmr = 150 : Pwml = 120
   Else : : Pwmr = 200 : Pwml = 160
   End If
Goto Star
'===============================================================================
Chap2:                                                      'be chap ba motor khamosh ta zamani ke sir.0=1 or SIR.1=1
   Set Rp : Reset Lp : Reset Rn : Set Ln
   If Dip_speed = 1 Then : Pwml = 50 : Pwmr = 140
   Else : : Pwml = 180 : Pwmr = 180
   End If
   Do
      Gosub Get_sir
      If Sir.0 = 1 Or Sir.1 = 1 Then Exit Do
   Loop
   Set Rp : Set Lp : Reset Rn : Reset Ln : Pwml = 140 : Pwmr = 140 : Waitms 50
Goto Star
'===============================================================================
Chap3:                                                      'be chap ta zamani ke sir.0=1 or SIR.1=1
   Set Rp : Reset Lp : Reset Rn : Set Ln
   If Dip_speed = 1 Then : Pwml = 140 : Pwmr = 140
   Else : : Pwml = 180 : Pwmr = 180
   End If
   Do
      Gosub Get_sir
      If Sir.0 = 1 Or Sir.1 = 1 Then Exit Do
   Loop
   Set Rp : Set Lp : Reset Rn : Reset Ln : Pwml = 140 : Pwmr = 140 : Waitms 50
Goto Star
'###############################################################################
Get_sir:
   Gosub Read_sir
   Sir = 0
   For B = 0 To 15      
         If Get_sir(b + 1) > Num_sir_int(b + 1) Then Set Sir.b
   Next
Return
'===============================================================================
Read_sir:
   Start Adc
   Reset Portc.5 : Reset Portc.6 : Reset Portc.7 : Waitus 1 '0
      Get_sir(11) = Getadc(0)
      Get_sir(13) = Getadc(7)
   Set Portc.5 : Reset Portc.6 : Reset Portc.7 : Waitus 1   '1
      Get_sir(5) = Getadc(1)
      Get_sir(14) = Getadc(7)
   Reset Portc.5 : Set Portc.6 : Reset Portc.7 : Waitus 1   '2
      Get_sir(2) = Getadc(2)
      Get_sir(15) = Getadc(7)
   Set Portc.5 : Set Portc.6 : Reset Portc.7 : Waitus 1     '3
      Get_sir(1) = Getadc(3)
      Get_sir(12) = Getadc(7)
   Reset Portc.5 : Reset Portc.6 : Set Portc.7 : Waitus 1   '4
      Get_sir(4) = Getadc(4)
      Get_sir(3) = Getadc(7)
   Set Portc.5 : Reset Portc.6 : Set Portc.7 : Waitus 1     '5
      Get_sir(6) = Getadc(5)
      Get_sir(8) = Getadc(7)
   Reset Portc.5 : Set Portc.6 : Set Portc.7 : Waitus 1     '6
      Get_sir(7) = Getadc(6)
      Get_sir(10) = Getadc(7)
   Set Portc.5 : Set Portc.6 : Set Portc.7 : Waitus 5       '7
      Get_sir(9) = Getadc(7)
   Stop Adc
Return 
اینم ارزش گذاری سنسورهام !
 این یه خلاصه ای از برنامه بودش و برنامه خیلی سنگین تر و بزرگ تر بودش که قسمت های بی ربطش رو نگذاشتم !
در ضمن این چیندمان سنسور مربوط به این ربات می شه : 
http://forum.iranled.com/showthread.php?...8#pid97658 
جواب سوالهارو میشه بدین ( ممنون)!!!!!!!!!!!!!!
 
سلام
 مدیرکل کجایی؟ چرا جواب سوالها رو نمیییییدی؟
 
سلام
داشتم Plants vs. Zombies بازی می کردم !!
عجب بازی جالبیه !
کدوم سوال ها رو جواب ندادم ؟
اگه سوال های محسن جون رو می گی ( jadopcb ) رو که خوب فکر می کنم سوال هاش از fayez هستش !!!
این jadopcb ربات منو از خود من بیشتر میشناسه و می دونه چجوریه !!!!!!