کسی میتونه تو راه اندازی این سنسور آلتراسونیک کمک کنه؟؟؟؟؟؟
به شدت نیاز دارم.....
نمایش نسخه قابل چاپ
کسی میتونه تو راه اندازی این سنسور آلتراسونیک کمک کنه؟؟؟؟؟؟
به شدت نیاز دارم.....
داداش یه سرچ تو نت بزنی پیدا میشه
نیست نیست نیست......................
دیوونه شدم
یه لینک بزار داداش
سلام مهندسنقل قول:
بگردي حتما هست.:wink:
مثلا اينارو يه نگاه بنداز:
[Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
موفق باشيد.
چند تا سوال از دیتاشیت دارم....
1)register ها متوجه نشدم چیه؟
2)commandهای زیر رو هم متوجه نشدم چه کاربردی دارد؟
0x5C , 0x60 , 0xA0 , 0xA5 ,0xAA
3)جدول مربوط به قسمت Changing the I2C Bus Address رو نفهمیدم کاربردش چیه؟؟(توضیح داده ولی از اونجایی که زبان انگلیسی من خیلی قوی هست.....lov:)
سلام
من یه کتابخونه برا داداش بزرگه (srf08) این ماژول آماده کرده بودم که عین آب خوردن میتونستم راش بندازم (البته اگه کتابخونه نباشه هم میشه ها ولی کارت آسون تر میشه). شما فقط بگو با چه زبونی می خوای براش برنامه نویسی کنی ؟نقل قول:
دیوونه شدم
من دارم با زبان C مینویسم...نقل قول:
شما فقط بگو با چه زبونی می خوای براش برنامه نویسی کنی ؟
<<codevision>>
ولی ماژول من SRF02 هست ، نه SRF08:sa:
من تو برنامه نویسی SRF02 خیلی مشکل دارم!!!!!!!
اگه میتونید کمک کنید......
<<با ارتباط I2C>>
کسی نیست مرا یاری کند؟
ای بابا یکم صبر کنید دیگه من تازه دارم میبینم پستتون رو !نقل قول:
کسی نیست مرا یاری کند؟
خب شما با خونسردی تمام ماژول رو با رعایت پلاریته به منبع تغذیه متصل کنید (۵ ولت) .
پشتش یه led وجود داره به محض اینکه به تغذیه متصل کردین چراغ شروع می کنه به چشمک زدن تعداد دفعات چشمک زدنش رو بم بگین (با دقت بشمرین (چند بار تست کنید تا عدد صحیح رو بم بگین))
فقط دقت کنید که به محض متصل شدن یه بار چشمک ممتد میزنه بقیه کوتاه هستن اون ممتد اولی رو نشمرین .
آخه کار من اورژانسیه........cry::cry::cry::نقل قول:
ای بابا یکم صبر کنید دیگه من تازه دارم میبینم پستتون رو !
جریانش چقدر باشه ، مهندس؟نقل قول:
خب شما با خونسردی تمام ماژول رو با رعایت پلاریته به منبع تغذیه متصل کنید (۵ ولت) .
هدف از این پروسۀ شمارش چشمک زدن چراغ چیه؟
\نقل قول:
جریانش چقدر باشه ، مهندس؟
آخه این ماژول جریا نمیکشه که ! همون ولناژ و جریانی که به میکرو میدی همون رو به این ماژول هم بدین .(سعی کن جریانت زیر ۱۰۰میلی آمپر نباشه)
اگه دیتا شیت رو مطالعه میکردین نوشته بود :(نقل قول:
هدف از این پروسۀ شمارش چشمک زدن چراغ چیه؟
هدفم اینه که آدرس پیش فرض ماژولتون رو متوجه بشم (در پروتکل ارتباطی i2c باید آدرس دیوایس slave مشخص باشه)
اگه آدرس رو بدونم کل برنامه رو منطبق بر اون آدرس آماده می کنم همین جا میزارم بری و حالش رو ببری :o
نمیسوزه؟.....35 تومن پولشهنقل قول:
آخه این ماژول جریان نمیکشه که !...
من datasheet رو خوندمنقل قول:
اگه دیتا شیت رو مطالعه میکردین نوشته بود
توی datasheet نوشته آدرس پیش فرض 0xE0 هست.:sa:
ولی بازم ما تست میکنیم
تازه تو پست پنجم برای دانلود گذاشتم
دمت گرم بابا....:018:نقل قول:
اگه آدرس رو بدونم کل برنامه رو منطبق بر اون آدرس آماده می کنم همین جا میزارم بری و حالش رو ببری
برای این که برنامه رو مثلا خودم بنویسم توی میکرو پایههای SCL , SDA به ترتیب کدوم خروجی و کدوم ورودی یا اصلاً هر دو ورودی یا هر دو خروجی تعریف میشه؟(تو codewizard)
عزیز دل من اون آدرس پیش فرض رو دیدم ولی بعضی وقت ها اون آدرس درست نیست
حالا شما یا کاری رو که من گفتم رو بکنید یا اینکه دیگه خودت میدونی .
ای خدا ... :unh:نقل قول:
تازه تو پست پنجم برای دانلود گذاشتم
چشم مهندس چرا عصبانی میشی؟
شما جایه استاده ما هستید و ما شاگرد...........حمل بر کم تجربگی بنده بزارید ، قربان!
اگر اشتباهی کردیم شما ببخشید.....:125:
<<در اولین فرصت خبرشو میدم>>
سلام
ظاهرا تعداد زیادی از دوستان با راه اندازی این ماژول یعنی SRF02 مشکل دارن.
میخوام یکبار برای همیشه مشکل رو حل کنم :0013:
در پاسخ دوستمون medadnoki باید بگم که اگه از کدویژن استفاده میکنی فقط کافیه که تعریف کنی فلان پایه SDA و فلان پایه SCL همین کفایت میکنه.
این یه مثال از راه اندازی این ماژول با بسکام با I2C
اینم یه مثال برای راه اندازی توسط بسکام با سریالکد:$regfile = "m32def.dat"
$crystal = 12000000
Config Lcdpin = Pin , E = Portd.3 , Rs = Portd.4 , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portc.5
Config Lcd = 16 * 2
Config Sda = Portc.1
Config Scl = Portc.0
Dim X As Integer , Y As Integer , Z As Word , Z2 As Word , Z3 As Word
Cursor Off
Do
I2cstart
I2cwbyte &HE0
I2cwbyte &H00
I2cwbyte &H51
I2cstop
I2cstart
I2cwbyte &HE0
I2cwbyte &H02
'I2creceive &HE0 , X
I2cstart
I2cwbyte &HE0 + 1
I2crbyte X , Nack
I2cstop
I2cstart
I2cwbyte &H03
'I2creceive &HE0 , Y
I2cstart
I2cwbyte &HE0 + 1
I2crbyte Y , Nack
I2cstop
Cls
Z = X * 256
Z = Z + Y
'Waitms 200
Lcd Z
Waitms 160
'Wait 2
Loop
اینم یه تابع برای راه اندازی این ماژول با I2C به زبان C در کدویژنکد:$regfile = "m8def.dat"
$crystal = 12000000
$baud = 9600
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = _
Portb.4 , E = Portb.0 , Rs = Portb.5
Config Lcd = 16 * 2
Dim A As Byte
Dim B As Byte
Dim C As Word
Dim Cc As Single
Enable Interrupts
Cls
Cursor Off
Do
Printbin 0
Waitms 50
Printbin 84
A = Waitkey()
B = Waitkey()
C = A * 256
C = C + B
If C > 100 Then
Cc = C / 100
Locate 2 , 1 : Lcd "Range2=" : Lcd Fusing(cc , "#.##") : Lcd "Meter "
Locate 1 , 1 : Lcd "Range1=" : Lcd C : Lcd "Cm "
Elseif C < 100 Then
Cc = 0
Locate 2 , 1 : Lcd "Range2=" : Lcd Fusing(cc , "#.##") : Lcd "Meter "
Locate 1 , 1 : Lcd "Range1=" : Lcd C : Lcd "Cm "
End If
Loop
End
روش استفاده از هر کدوم کاملا واضحه ولی اگر بازم جای سوالی بود در خدمتم.کد:unsigned int SRF(int address)
{
//SRF02
int LSB,MSB;
i2c_start();
i2c_write(address);
i2c_write(0x00);
i2c_write(0x51);
i2c_stop();
i2c_start();
i2c_write(address);
i2c_write(0x02);
i2c_start();
i2c_write(address+1);
MSB=i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(0x03);
i2c_start();
i2c_write(address+1);
LSB=i2c_read(0);
i2c_stop();
return (256 * MSB) + LSB;
}
دوستان توجه داشته باشن که تمامی کد های بالا رو از تو برنامه های خودم در آوردم و گذاشتم این جا پس مطمئن باشین که کار میکنن فقط کافیه یه مقدار سعی کنید تا ازشون جواب بگیرین.
به امید این که روزی برسه که همه اطلاعاتشون رو به اشتراک بزارن :chat:
ii998)نقل قول:
به امید این که روزی برسه که همه اطلاعاتشون رو به اشتراک بزارن
من دیگه این تاپیک رو ادامه نمیدم دوستمون زحمتش رو کشیدن دیگه :sa: (من موندم یا من به سوالات نمی تونم درست جواب بدم یا دنیا عوض شده) .
منظورم شما نبودید دوست عزیز این جمله رو بطور کلی نوشتم و شخص خاصی مد نظرم نبودنقل قول:
امید وارم به کسی بی احترامی نکرده باشم.
من دارم با سوال کننده مرحله مرحله پیش میرم (به تاریخ های ارسال دقت کنید) دیگه دیگه نیازی نیست که یهویی شما بیاین و یک دست بودن موضوع رو تغییر بدین .
اگه دقت میکردین سوال کننده کد زبان سی میخواد نه زبان بسیک . درثانی من اشاره کرده بودم که کتابخونه کاملی رو برای این تیپ ماژول ها آماده دارم فقط کامل می خوام فیکسش کنم تحویلشون بدم .
میدونم هدف شمام کمک بوده حرفی توش نیست ولی چون من خاصیتم اینه که به شدت به نظم مطالب اهمیت میدم اینه که دوست دارم وقتی موضوعی آماده میشه و قراره ایشالا در آینده راه گشای خیلی ها باشه, یه دست باشه .
بعضی مواقع برای برخی سوالات کاربران من راه حل قطعی ندارم اون موقع خب همه میان نظر میدن ولی وقتی کاربری راه حل قطعی داره به نظرم بقیه باید ببینن طرف چیکار می کنه بعدش اگه دیدن به جایی نرسید راه کارهای خودشون رو ارائه بدن (البته این نظر شخصی منه)
اگه چند ماه دیگه یه بنده خدایی این مشکل رو داشته باشه و این تاپیک رو پیدا کنه جان من گیج نمیشه ؟
الان سوال کننده اصلی داره با پیغام خصوصی جوابش رو از من میگیره و حتما جوابش رو میدم .(والا موندم چی بگم ....lov:)
ببخشید من پست های قبل رو نخونده بودمنقل قول:
در مورد زبان هم اون تابع آخری سی هست و با کدویژن
سلام من هم این ماژول را دارم ولی هنوز نتونستم راه اندازیش کنم چندتا سوال دارم اولا اینکه چطوری مسافت رو روی lcd نشون بدم،
دوم :چجور مشخص میشه که سنسور داره کار میکنه وقتی کار کنه led چشمک میزنه یا اینکه فقط یه بار روشن میشه؟
سوم:مقاومت pull upرا چقدر بزارم؟ حتما باید باشه؟
چهارم:مشکل کد منه چیه چرا جواب نمیده لطفا راهنمایی کنید که خیلی واجبه
اینم کد:
کد:#include <mega8.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#include <i2c.h>
#include <stdio.h>
#include <delay.h>
#include <alcd.h>
#asm
.equ __lcd_port=0X18
#endasm
void main(void)
{
unsigned char str[20]="";
unsigned char x,y ;
unsigned char z ;
TWCR=0x00;
TWBR=0x02;
i2c_init();
lcd_init(16);
while (1)
{
delay_ms(50);
i2c_start();
i2c_write(0xE0);
i2c_write(0x00);
i2c_write(0x51);
i2c_stop();
i2c_start();
i2c_write(0xE0);
i2c_write(0x02);
x=i2c_read(0);
i2c_stop();
i2c_start();
i2c_write(0x03);
y=i2c_read(0);
i2c_stop();
z = x * 256;
z = z + y;
delay_ms(60);
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"%u",z);
lcd_puts(str);
delay_ms(60);
}
}