ايران ويج

نسخه‌ی کامل: کمک در حل مشکل ربات مسیر یاب در رد کردن پیچ ها
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
سلام به همه من یه مشکلی با ربات تعقیب خطی که ساختم دارم اینه که خط 1.5 سانتی که تو مسابقه ای قراره توش شرکت کنم اندازه همین اندازه است اصلا خوب کار نمی کنه ! همش سر پیچ ها رد می کنه ولی خط راست رو تقریبا خوب می ره ! با وجود اینکه برنامه ریزیش رو خوب انجام دادم و سرعتای مختلف رو تقریبا 60 بار امتحان کردم ! سنسورام هم 8 تاست که 7 تاشو هشتی گذاشتم و یکی هم پشت سنسور اولی به فاصله 5 سانت واسه تشخیص 4 راهی !
مهندس می شه برنامه تو بذاری !

مطمئنی همه سنسورها درستن !

فاصله سنسورهای کنار از هم چقدره !

بعد ربات شما چجوری می چرخه !
آیا یه چرخ رو قفل و چرخ دیگه می چرخه !
ایا یه چرخ معکوس و دیگری معمولی می چرخه ! ( این پشنهاد می شه )
آیا یه چرخ فقط می چرخه و چرخ دیگه ول هستش ! ( اصلا پیشنهاد نمی شه )

بعد از این قضایا دستور چرخش شما چجوریه !

بهتر بگم : گفتین چقدر بچرخه !
معمولا اینطوری می گن : اگهس سنسور سمت راست یک بود و وسط و سمت چپ صفر بود بچرخ به راست تا زمانی که سنسور وسط یک بشه !

یکم مهندس بیشتر رو کارهایی که کردی توضیح بده !
فاصله سه سنسور وسط 1.1 و بقیه 1.5 خودم الان فکر می کنم زیاده !
سرعتشونم اینجوریه نوشتم

کد php:
If = &B00010000 Or = &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 
= &B00000100 Or = &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 Or Sir.7 Or Sir.8 Or Sir.9 1 Then :
      If 
Sir.4 And Sir.10 And Sir.11 And Sir.12 And Sir.13 And Sir.14 0 Then :
         If 
Sir.0 And Sir.1 And Sir.2 1 Then Goto Mostaghim3
         
If Sir.0 And Sir.1 And Sir.2 1 Then Goto Rast1
         
If Sir.0 And Sir.1 And Sir.2 1 Then Goto Chap1
         
If Sir.0 And Sir.1 And Sir.2 0 Then Goto Mostaghim2
         
If Sir.0 And Sir.1 And Sir.2 And Sir.3 0 Then Goto Rast3
         
If Sir.0 And Sir.1 0 Then Goto Rast3
      End 
If
   
End If
   If 
Sir.11 Or Sir.12 Or Sir.13 Or Sir.14 1 Then :
      If 
Sir.3 And Sir.5 And Sir.6 And Sir.7 And Sir.8 And Sir.9 0 Then :
         If 
Sir.0 And Sir.1 And Sir.2 1 Then Goto Mostaghim3
         
If Sir.0 And Sir.1 And Sir.2 1 Then Goto Rast1
         
If Sir.0 And Sir.1 And Sir.2 1 Then Goto Chap1
         
If Sir.0 And Sir.1 And Sir.2 0 Then Goto Mostaghim2
         
If Sir.0 And Sir.1 And Sir.2 And Sir.4 0 Then Goto Chap3
         
If Sir.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=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 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=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 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=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 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=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 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 

اینم ارزش گذاری سنسورهام !

[تصویر:  58680003685046183780.png]

این یه خلاصه ای از برنامه بودش و برنامه خیلی سنگین تر و بزرگ تر بودش که قسمت های بی ربطش رو نگذاشتم !

در ضمن این چیندمان سنسور مربوط به این ربات می شه :
http://forum.iranled.com/showthread.php?...8#pid97658
سلامHappy
با تشكر از علي جونClapClapClap
دوست عزيز مي توني در مورد مكانيك ربات هم بكي يا يك عكس ازش بزاري ؟؟Biggrin
چون چيدمان سنسورت بد نيست اما بايد مكانيك ربات هم ببينيم ؟BiggrinShy
مهندس مکانیک و عکسشو هم گذاشتم !

یه سر برو تایپیک http://forum.iranled.com/showthread.php?tid=14272
سلامHappy
عكس ربات توديدم چندتا سوال بپرسم --اميدوارم ناراحت نشي فقط مي خوام كمك كنم شايد بعض سوالام ابتدايي باشه اولش عذر مي خوام---:ShyShy
1- سنسورات جه مدلين
2-خروجي سنسورات من ديدم مستقيم رفته بود به ميكرو درسته؟
3-مقاوت هاي رو گيرنده سنسورت چنده؟
4-مقاومت روي فرتندت چنده
5- دوتا 78داري ايا يكيش مال ميكرو وl298 وديگري مال سنسورا
6- در مورد الگوريتم توضيح ميدي زماني كه مي خوايي زاويه رو تشخيص بدي چه كار ميكني فارسي بگو
شرمنده من با سي كار ميكنم بسكام بلد نيستم درسته عليAngryWhistle
7-فاصله سنسورات از زمين چقدره
8-خروجي سنسورا روي خط سياه وسفيد جند ولت
BiggrinBiggrinBiggrinBiggrin
جواب سوالهارو میشه بدین ( ممنون)!!!!!!!!!!!!!!
سلام
مدیرکل کجایی؟ چرا جواب سوالها رو نمیییییدی؟
سلام
داشتم Plants vs. Zombies بازی می کردم !!
عجب بازی جالبیه !



کدوم سوال ها رو جواب ندادم ؟

اگه سوال های محسن جون رو می گی ( jadopcb ) رو که خوب فکر می کنم سوال هاش از fayez هستش !!!

این jadopcb ربات منو از خود من بیشتر میشناسه و می دونه چجوریه !!!!!!
صفحه‌ها: 1 2