برنامه ای ساده برای کنترل ربات مسیریاب

دوستان خوبم، سلام به روی ماهتون 10.gif.... شرمنده از اینکه یکم نه!!! بلکه خیلی دیر کردم. آخه این چند روز خیلی bussy بیدم :)) از صبح ساعت ۵ تا شب ساعت ۹ بعدشم لالا....... حالاشم اینترنتم قطعه و ندید، فقط بخاطر اینکه خیلی دلم براتون تنگ شده بود دارم مینویسم. اگر با نظراتتون ابراز لطف کردید که دمتون گرم! خستگیم دراومد اگر نه خیلی بدید 21.gif.

امروز دیگه می خوام یجورایی این مباحث مقدماتی رو جمعش کنم و ایشالله اگر عمری بود از دفعات بعد بریم برا کارای حرفه ای تر. تو پست امروز می خوام کد کامل یک روبات ساده مسیر یاب رو تحلیل کنم که در واقع اشتراک چند مقاله قبلی مربوط به برنامه نویسی هستش. اول کد رو ببینید بعد توضیح میدم:

$crystal = 1000000
$regfile = "m32def.dat"

Config Portd = Output                                    'right motor
Config Portd = Output                                    'left motor
Config Pinc.0 = Input
Config Pinc.1 = Input

Dim Rm As Byte                                          'right motor
Dim Lm As Byte                                          'left motor
Dim Ls As Bit                                           'left sensor
Dim Rs As Bit                                           'right sensor

Rm = &B10001000
Lm = &B10001000

Declare Sub Left_step()
Declare Sub Right_step()
Declare Sub Turn_left()
Declare Sub Turn_right()
Declare Sub Forward()

Do
  Ls = Pinc.0
  Rs = Pinc.1

  If Ls = 1 Then                              'Left sensor trigered?
    Call Turn_left()
  End If
  If Rs = 1 Then                              'Right sensor trigered?
    Call Turn_right()
  End If

If Pinc.0 = 1 And pinc.1 = 1 Then 'Thanx 2 Rahim!
Call Forward()
End If
If Pinc.0 = 0 And Portc.1 =0 Then
Call Forward()
End If

  Waitms 10
Loop


Sub Forward()                                 'Goes forward 1 step
  Call Left_step()
  Call Right_step()
End Sub

Sub Turn_right()
  Call Left_step()
End Sub

Sub Turn_left()
  Call Right_step()
End Sub

Sub Left_step()                         'rotates left motor n step
    Rotate Lm , Right
    Portd = Lm
End Sub

Sub Right_step()                        'Rotates Right motor n steps
    Rotate Rm , Right
    Portb = Rm
End Sub

End

خوب همونطور که گفتم این کد درواقع اشتراکی هست از مقالات قبلی برای همین موضوع جدید و مهمی نداره بجز استفاده از روال ، زیربرنامه یا Sub. این ویژگی از زبان بیسیک کامپایلر Bascom به شما اجازه میده تا برنامتون رو به چند قسمت ساده تر تقسیم کنید و هر کدوم رو با بکار بردن نامش بعد از کلمه کلیدی CALL به دفعات دلخواه در برنامتون استفاده کنید. (فکر کنم دیگه همه قبلا برنامه نویسی کردن و با مفهوم روال و تابع آشنایی دارند برای همین توضیح اضافی نمیدم فقط کار هر روال این برنامه رو تیتر وار می نویسم:

  • Left_Step(): روالی برای چرخش موتور چپ به اندازه یک استپ
  • Right_Step(): برای چرخش موتور سمت راست به اندازه یک استپ
  • Turn_left(): برای چرخش روبات به سمت چپ (موتور راست ۱ استپ)
  • Turn_right(): برای چرخش ربات به سمت راست (موتور چپ ۱ استپ)
  • Forward(): برای حرکت ربات به سمت جلو (موتور چپ و راست هر کدام ۱ استپ)

راستی برای استفاده از توابع یا روالها باید ابتدا در بالای برنامه با فرمت Declare Sub subname() اونها رو تعریف کنیم تا بتونیم در قسمتها مختلف برنامه از اونها استفاده کنیم... شاید در اینجا استفاده از زیربرنامه ها حتی باعث طولانی تر شدن کد هم شده باشه اما در کل هم باعث خواناتر شدن و هم باعث آسانتر شدن امکان تغیرات در برنامه میشه، که البته در برنامه های حجیم تر باعث کوتاهتر شدن برنامه هم خواهد شد.

شرح کلی: طبق کد موتور سمت چپ رو باید بواسطه درایور به پورت D و موتور سمت راست رو به پورت B وصل کنید (قبلا توضیح داده شده چطور). دو سنسور چپ و راست رو هم به ترتیب به پین ۰ و ۱ از پورت C وصل کنید (اینم قبلا آموزش دادم). حالا طبق کد اگر سنسور سمت چپ خط سایه رو سنس کنه موتور سمت راست حرکت میکنه که باعث حرکت ربات به سمت چپ و اگر سنسور سمت راست خط سیاه رو سنس کنه موتور سمت چپ حرکت میکنه و ربات رو به سمت راست می راند. تا همواره ربات بین خطوط حرکت کنه...  در صورتی که دو سنسور همزمان سطح تیره یا روشن سنس کنند هردو موتور حرکت می کنند تا ربات مستقیم بره!

این بود یکی از ساده ترین کدها برای ربات مسیر یاب شما. ایشاالله از جلسات بعدی مباحث پیشرفته تری رو شروع می کنیم. البته بعد از پست بعدی که قراره تصاویری از مدارات و ربات خودم 17.gif بهمراه ربات دوستانم که در مسابقات حلی کاپ همین دوره هم شرکت کرده بودند تو وبلاگ بزارم. پس تا اونموقع یا حق......


مطالب مشابه :


اموزش ساخت ربات مسیریاب

بخش دیگر در رابطه با برنامه نویسی ربات مسیریاب کسانی که با برنامه نویسی اشنایی




ساخت ربات مسیریاب

چگونه یک ربات مسیریاب برنامه نویسی : برنامه یک ربات مسیریاب می تواند شامل چند بخش باشد که




آموزش ساخت روبات مسیر یاب

مقدمه. برای ساخت یک ربات مسیریاب باید با سه رشته مکانیک , الکترونیک , کامپیوتر ( برنامه نویسی




آموزش ساخت ربات مسیر یاب

موتور یک ربات مسیریاب قبل از این که بحث برنامه نویسی رو شروع کنم باید یه سری تنظیماتی رو




معرفی کتاب ربات مسیر یاب

ساده و نحوه برنامه نویسی باعث شده حتی برنامه نویسی یک ربات مسیریاب عملی را




برنامه ای ساده برای کنترل ربات مسیریاب

آموزش ساخت ربات مسیریاب و سایر پروژه های چند مقاله قبلی مربوط به برنامه نویسی




برچسب :