نمایش نتایج: از 1 به 2 از 2
Like Tree3 لایک
  • 2 Post By hesam.time
  • 1 Post By mnj222

موضوع: مسافت یاب صوتی (Sonic Range Finder Reader)

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb مسافت یاب صوتی (Sonic Range Finder Reader)

    این مثال چگونگی خواندن یک Devantech SRFxx ، یک مسافت یاب التراسونیک از طریق I2C سنکرون پورت سریال، با استفاده از کتابخانه سیم آردینو(Wire Library) را نشان می دهد. پروتکل I2C شامل استفاده از دو سیم برای ارسال و دریافت داده است: یک پین کلاک سریال (SCL) که پالس های آردینو در یک فاصله منظم باشد و دیگر یک پین سریال داده (SDA) ، که داده ها بین دو دستگاه فرستاده می شود. همانطور که پالس کلاک از پایین به بالا(شناخته شده به عنوان لبه بالا رونده کلاک) تغییر می کند، یک بیت از اطلاعات شامل آدرس یک دستگاه به خصوص و یک درخواست برای داده، از آردینو به دستگاه I2C بر روی خط SDA منتقل می شود. وقتی که پین کلاک از بالا به پایین (لبه پایین رونده کلاک) تغییر می کند. بر روی انتقال دستگاه نامیده می شود. داده های آن بر روی خط یکسان به آردینو دیگر برمی گردند. زیرا پروتکل I2C به هر دستگاه فعال اجازه داشتن یک آدرس منحصربه فرد را می دهد و مانند دو دستگاه master و slave به برقراری به نوبت ارتباط بر روی یک خط تنها میسر می سازد، ممکن است آردینو شما با دستگاه های زیادی (به نوبت) ارتباط برقرار کند درحالی که تنها از دو پین از میکروکنترلر شما استفاده می شود.
    سخت افزار مورد نیاز
    برد آردینو
    سنسور مسافت یاب Devantech SRFxx (مدل SRF02 ،SRF08 ،یا SRF10)
    1 خازن 100uf
    بِرد بُرد
    سیم
    مدار
    پین SDA از SRFxx خود را به پین 4 آنالوگ آردینو خود،و پین SSL به پین 5 آنالوگ متصل کنید. SRFxx خود را از 5V تغذیه کنید به علاوه از یک خازن 100uf بصورت موازی با مسافت یاب برای صاف کردن منبع تغذیه آن (استفاده کنید).
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: SRFxx_bb.jpg
مشاهده: 153
حجم: 20.3 کیلو بایت
    شماتیک
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: SRF_sch (1).jpg
مشاهده: 122
حجم: 9.3 کیلو بایت
    کد
    اگر از دو SRFxx روی یک خط یکسان استفاده می کنید؛ شما باید مطمئن باشید که آنها آدرس یکسان را به اشتراک نمی گذارند. دستورالعمل برای تغییر آدرس مسافت یاب در پایین کد زیر قابل یافت است.
    کد:
    #include <Wire.h> void setup() { Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial communication at 9600bps } int reading = 0; void loop() { // step 1: instruct sensor to read echoes Wire.beginTransmission(112); // transmit to device #112 (0x70) // the address specified in the datasheet is 224 (0xE0) // but i2c adressing uses the high 7 bits so it's 112 Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) // use 0x51 for centimeters // use 0x52 for ping microseconds Wire.endTransmission(); // stop transmitting // step 2: wait for readings to happen delay(70); // datasheet suggests at least 65 milliseconds // step 3: instruct sensor to return a particular echo reading Wire.beginTransmission(112); // transmit to device #112 Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) Wire.endTransmission(); // stop transmitting // step 4: request reading from sensor Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 // step 5: receive reading from sensor if(2 <= Wire.available()) // if two bytes were received { reading = Wire.read(); // receive high byte (overwrites previous reading) reading = reading << 8; // shift high byte to be high 8 bits reading |= Wire.read(); // receive low byte as lower 8 bits Serial.println(reading); // print the reading } delay(250); // wait a bit since people have to read the output :) } /* // The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) // usage: changeAddress(0x70, 0xE6); void changeAddress(byte oldAddress, byte newAddress) { Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xA0)); Wire.endTransmission(); Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xAA)); Wire.endTransmission(); Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xA5)); Wire.endTransmission(); Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(newAddress); Wire.endTransmission(); } */
    لینک سایت:Arduino - SFRRangerReader
    ویرایش توسط hesam.time : 03-27-2013 در ساعت 05:09 PM

  2. #2
    Junior Member
    تاریخ عضویت
    Sep 2015
    نوشته ها
    1
    سلام و عرض ادب
    ممنون از اینکه برنامه ای برای srf نوشته اید
    اما من همین برنامه را استفاده کردم ولی جوابی به من نداد
    لایک کردن

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO