من می خواهم با پروتکل i2c کار بکنم .
اول از همه باید ببینیم که آدرس اولتراسونیک چند است . برای این کار به دیتا شیت srf02 نیاز داریم:
http://m32.ir/up/2011/07/2011/08/SRF02.pdf
وقتی srf را روشن می کنیم چراغ روی آن اول یکبار روشن می شود و سپس چند بار چشمک می زند(ممکن است حتی چشمک نزند). تعداد این چشمک ها را باید بشماریم بعد در دیتاشیت اون باید نگاه کنیم ادرس srf به ازای این تعداد چشمک(short flash ) چقدر است . مثلا اگر یک بار چشمک بزند ادرس ان 226 است.
حالا میریم سراغ کد :
اول از همه باید کتابخانه را اینکلود کنیم:
#include <i2c.h>
بعد باید مشخص کنیم که دو پایه ی scl و sda روی کدام پایه های میکرو باشند. برای مثال ما پایه های 0 و 1 پورت d را انتخاب میکنیم:
خوب حالا باید اول ادرس اولتراسونیک را فراخوانی کنیم و سپس باید خروجی آن را به سانتی متر تنظیم کنیم و در خواست دریافت اطلاعات بکنیم . خروجی srf به صورت دو بایت است که ما این دوبایت را د ردو رجیستر bit1 و bit2 میریزیم.
برنامه مربوط به راه اندازی اولتراسونیک به صورت کلی به شکل زیر می باشد:
#include <i2c.h>
#asm
.equ __i2c_port=0x12 ;PORTD
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
char bit1,bit2;
int ultra;
i2c_start ();
i2c_write (226); //srf adress
i2c_write (0);
i2c_write (0x51); // unit=cm
i2c_stop ();
i2c_start ();
i2c_write (226); // srf adress
i2c_write (2); // data request
i2c_start ();
i2c_write (227); // srf adress +1
bit1=i2c_read (1); // high value data reg
bit2=i2c_read (0); // low value data reg
i2c_stop ();
ultra=bit1;
ultra=ultra*256+bit2;
اگر سوالی داشتید من درخدمتم :nice: :nerd:
موفق باشید :nerd:
سلام مهندس من از برنامه شما استتفاده کردم اما جواب نداد
دیدگاه