# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > مباحث عمومی کار با سخت افزارها، سنسورها و لوازم جانبی >  راهنمایی برای برنامه نویسی ربات مین یاب

## You Were Mine

دوستان سلام.

من میخوام برنامه 1 ربات مین یاب اتوماتیک را بنویسم زیاد از برنامه نویسی  سردر نمیارم اشنایی دارم اما نه ب اون حدی ک خودم تنها برنامه را بنویسم.  از دوستان عزیز خواهش میکنم کمکم کنن ک تا اخر عمر دعای خیر من و هرکسی ک  این تاپیک به کمکش میاد پشت سرشون باشه 

اول از همه بگم ک برنامه را ب زبان بیسیک و با بسکام مینویسم.
- ای سی مورد استفاده mega 32 هست 
- 9 تا اولتراسونیک srf02 برای تشخیص مانع و دور زدن ( i2c mode )
- قطب نمای cmps03 برای حرکت صاف ( i2c mode )
- مادون قرمز cny70 یا tcrt5000 برای تشخیص خط سفید دور زمین
- 2 تا موتور dc با شافت انکودر

خب برای برنامه نوشتن تا اونجایی ک میدونم برای srf02 & cmps03 باید از طریق دستورات i2c استفاده کرد اما دقیق نمیدونم چجوری.
برای مادون قرمز ها هم ک باید از adc استفاده کنم درسته ؟


خب اول از همه باید دستور حرکت ربات یعنی مستقیم رفتن را بنویسیم بعد میرسه به تشخیص مانع ، خط سفید ، قطب نما و ...

باید پیش نیاز ها تعریف بشه بعد برنامه نوشته بشه تا انجایی ک اطلاع داشتم 1 چیزهایی نوشتم خواهش میکنم کمکم کنید تا کاملش کنم :

$regfile = "m32def.dat"
$crystal = 8000000
Config Portb.0 = Output , Portb.1 = Output , Portb.2 = Output , Portb.3 = Output
Config Sda = Portc.1
Config Scl = Portc.0
Config Adc = Single , Prescaler = Auto
Enable Adc
Start Adc
R1 Alias Portb.0 : R2 Alias Portb.1 : L1 Alias Portb.3 : L2 Alias Portb.2


Do


Loop

این برنامه ای هست ک خودم بر طبق پیش نیازهایی ک داشتم نوشتم پورت b برای اتصال 2 تا موتور هست ک همونجور ک نوشتم :
R1 = سر مثبت موتور اول سمت راست
R2 = سر منفی موتور اول سمت راست
L1 = سر مثبت موتور دوم سمت چپ
L2 = سر منفی موتور دوم سمت چپ
بقیش هم ک مشخصه ممنون میشم اگه کمک کنید ، نمیگم ک کسی برنامه را کامل  برام بنویسه میخوام جز ب جز بگین تحقیق کنم و با کمک هاتون یاد بگیرم .  مرسی

----------


## You Were Mine

کسی نیست اینجا کمک کنه ؟

----------


## farzadsw

برای استفاده از i2c باید آدرس وسیله خودتون رو داشته باشید ، در مورد srf02 این آدرس بین 0xE0 , 0xEE هست که خود شما می تونید تنظیم کنید (همزمان 16 تا از این سنسور روی 1 باس می تونن باشن). بعد از داشتن آدرس مورد نظر ، آدرس مورد نظر رو روی باس قرار میدید و بعد از اون دستور یا آدرس رجیستر سنسور رو . توی بسکام تا اونجایی که یادم هست دستورات اماده برای این کار رو داره.
برای مادن قرمز هم می تونید از adc استفاده کنید و هم با یه مدار ساده حالت 0 و 1 رو به وجود بیارید و به یک پایه عادی میکرو بدید . هر کدوم از این روشها مزیت و معایب خودشون رو دارند و شما باید ببینید کدام مناسب تره.

برای حرکت ربات باید مشخص کنید که درایور موتور شما چی هست ؟ اگر از l298 استفاده می کنید باید از اون پایه های  R1,R2 ,L1,L2 برای تعیین جهت چرخش موتور استفاده کنید (راست گرد چپگرد ) و به وسیله دوتا پایه دیگه که سیگنال PWM تولید میکنند ، باید سرعت 2 موتور رو تنظیم کنید .

----------

