نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

آموزش جامع آردوینو جلسه ۱۶ پروتکول i2c twi

205

به نام خدا : این مطلب رو بنا به درخواست برادر “حامد کاظمی” مینویسم، تو این مطلب از سری مطالب آموزش آردوینو میخوایم درباره ارتباط دو سیمه سخت افزاری و نرم افزاری توضیح بدم(حالا این که نرم افزاری رو TWI میگفتن یا سخت افزاری رو I2C میگفتن یا برعکس دقیقا خاطرم نیست، اگه کسی میدونه بگه.) و پروژه آردوینو هم یه چند تایی میزارم(تعدادش زیاده نگران نباشید، از تعداد پروژه های خود سایت آردوینو هم بیشتره laugh )، در ضمن فرا رسیدن ایام فاطمیه رو هم تسلیت میگم خدمت شما دوستان گلم. cry، راستی سلام داشای گلم laugh امان از فراموشی
آموزش جامع آردوینو جلسه ۱۶ پروتکول i2c twi

آموزش جامع آردوینو جلسه ۱۶ پروتکول i2c twi


داستان : خب داستانی به ذهنم نمیرسه بگم sarcastic، عوضش یه سخن از حضرت آقا میزارم تا دل بچه حزب اللهی ها حال بیاد heart ، ایشاالله چشم همه بدخواه های ملت ایران کور بشه که چش دیدن پیشرفت و عزت و وحدت و… ایران رو ندارن، مخصوصا این انگلیسی های نفله روباه صفت پدرسوخته :-D، بگذریم از این حرفا و بریم سر اصل مطلب……به امید پیشرفت ایران و نابودی دشمناش.
سخنان حضرت آقا

کتابخونه پروتکول نرم افزاری I2C
برای این موضوع لینک زیر رو ببینید حال توضیح دادن ندارم :
Software I2C library

فرق سنکرون با غیر سنکرون(آسنکرون)
لپ کلوم، پروتکول هایی همچون I2C/TWI سنکرون هستن چون با کلاک دیتا رو میفرستن و پروتکول هایی همچون USART نسخه های ۲۳۲(برای مسافت هایی با ماکس طول ۱۰-۱۵ متر) , ۴۸۵(برای مسافت های زیاد و حدود ۸۰ متر ماکزیمم) آسنکرون هستن چون خط کلاک ندارن…..توضبحات بیشتر تو گوگل >>>سرچ>>>مطالعه :-D، مطلب زیر رو بخونید یه فایل توش هستش که تو بخش سومش سنکرون و آسنکرون رو توضیح داده که خوب هم توضیح داده :
آنالوگ و دیجیتال، سری و موازی، سنکرون و آسنکرون

توضیح پروتکول ارتباط دو سیمه TWI و I2C
برای این موضوع فایل زیر رو دانلود کنید که تقریبا تمام فایل های موجود در نت درباره I2C/TWI هستش.(یعنی دیگه من توضیح نمیدم براش diablo )

توضیح پروتکول ارتباط دو سیمه TWI و I2C

فرق TWI با I2C
چیزی که من میدونم اینه که TWI سخت افزاری هستش و I2C نرم افزار، سخت افزاری و نرم افزار رو هم که حتما میدونید یعنی چی…

انواع پروتکول دو سیمه

  1. سخت افزاری(از پایه های خاصی از برد آردوینو باید استفاده کرد)، TWI
  2. نرم افزاری(انتخاب پایه ها دست خودمون هستش.)، I2C

Master و Slave چیست
خب این دو همون فرستنده و گیرنده هستن، به Master فرستنده میگن و به Slave گیرنده هر چند که Master هم میدونه از Slave درخواست دیتا بکنه و Slave هم باید بفرسته(فقط در این حالته که مستر دیتا دریافت میکنه و اسلیو دتا ارسال)، و یه مستر میتونه به چندین اسلیو وصل بشه و بهشون دیتا بده و بعضا ازشون دیتا هم بگیره،

نحوه اتصال پروتکول دوسیمه i2c / twi
خب عکس زیر بهترین توضیح هستش که همین طور که میبینید به کمک این پروتکول i2c / twi با تموم قطعات و ic ها میتونیم تبادل داده داشته باشیم باهاشون و کنترلشون کنیم، که چیزی که تو این پروتکول هستش اینه که :

  1. زمین تمام مدار هایی که از این پروتکول استفاده میکنن باید مشترک باشد(به هم دیگه باید وصل باشه)
  2. پایه های SDA و SCL رو باید پول آپ کنیم، که ۲ پایه ارتباطی رو با یه مقاومت به Vcc وصل میکنیم
    (اگه پول آپ نمیدونید چیه مطلب مقابل رو بخونید : آموزش جامع میکروکنترلر AVR جلسه۱۲)
  3. نحوه اتصال دو پایه ارتباطی رو هم که میبینید، که ۱ مستر داریم و ۳ تا Slave

نحوه اتصال پروتکول دوسیمه i2c

توضیح پایه های i2c / twi
خب این پروتکول دو تا پایه به نام های SDA و SCL داره که در زیر یه کوچولو توضیح میدم دربارشون :
SDA : دیتا رو این پایه قرار میگیره.
SCL : کلاک روی این پایه قرار میگیره.

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

آموزش ارتباط دو سیمه TWI

آموزش ارتباط دو سیمه سخت افزاری TWI
آردوینو DUE دو تا ارتباط دوسیمه TWIداره، که در زیر تعداد ارتباط های دوسیمه و شماره پایه متناظر در برد آردوینو رو برا چند مدل از بردهای آردوینو میبینید :
ارتباط دو سیمه سخت افزاری TWI
اول از هر کاری باید این کتابخونه رو فراخونی کنیم؛ اگه میخوایم از ارتباط دوسیمه TWI استفاده کنیم.
منبع کتابخونه Wire
شروع برقراری ارتباط دو سیمه
این تابع به دو صورت نوشته میشه که تو یه مورد نیازی به آدرس Slave نیستش و تو مورد بعدی باید آدرس Slave مورد نظر رو وارد کنیم، اگه فقط ۲ تا دستگاه دارید که قراره با هم ارتباط برقرار کنن نیازی به قرار دادن آدرس نیست ولی اگه چندین دستگاه داشتین که با هم از طریق ارتباط دو سیمه باید ارتباط برقرار کنن، باید آدرس رو داخل این تابع قرار بدید تا بگید که این دیتا برا کدوم دستگاه هستش.
این تابع چیزی رو برنمیگردونه.
منبع تابع begin
این تابع تعداد بایت هایی که در دسترس هستن برای خوندن رو نشون میده و این تابع پارامتری نداره.(یعنی داخل اون پراتز بعد از نام تابع، نمیخواد چیزی بزاری یا بنویسی O_o)
در دستگاه Master این تابع باید استفاده بشه بعد از این که تابع requestFrom فراخونی شد
و در دستگاه Slave باید داخل تابع تعریف شده توسط onReceive قرار بگیره.(این توابع رو در ادامه میگم، فعلا زیاد گیر ندید.)
منبع تابع available
این تابع ۱ بایت دیتا رو میخونه که :

  1. این دیتا ارسال شده از سمت Slave به سمت Master بعد از فراخونی تابع requestFrom
  2. یا دیتایی که از سمت Master به سمت Slave ارسال شده است.

منبع تابع Read

نوشتن دیتا :

  1. از دستگاه Slave در پاسخ به درخواست Master (در ادامه میبینید که تابعی داریم که Master ّه کمکش به Slave میگه من این تعداد بایت دیتا میخوام، برام بفرست!!!)
  2. یا در صف گزاشتن دیتا برای ارسال از سمت Master  به سمت Slave (در بین دو تابع beginTransmission() و endTransmission() باید قرار گیرد این تابع.)

Value : یه متغییر
String : یه رشته
Data : یه آرایه به طول length
این تابع تعداد بایت هایی رو که مینویسه رو برمیگردونه.
توجه۱ : اگه میبینید که حداکثر تعداد بایتی که میشه فرستاد به صورت یکجا برابر ۳۲ بایت هستش فک کنم به این خاطر هستش که تابع write محدودیت داره، و مشکل از متغییر های از نوع String نیستش، این چیزی هستش که به فکر من میرسه، حالا اگه کسی دلیل اصلیش رو میدونه بگه( و این که احتمال من اشتباه هستش)
توجه۲ : چیزی که هم هستش اینه که اگه یه دیتای ۳۲ بایتی فرستادی(یا چند دیتا که مجموعش ۳۲ بایت میشه) بعد باید ارتباط رو قطع کنی و پایان بدی و دوباره از اول شروع کنی و دیتای جدید رو بفرستی و... در آخر پایان بدی | در ضمن باید بین هر بار ارسال و قطع ارتباط و ذوباره برقرار ارتباط یه delay قرار بدید(در پروژه های زیر خواهید دید.)
منبع تابع Write

برقراری ارتباط با یه دستگاه Slave برای این که دیتا بهش بدیم، این تابع یه پارامتری به نام آدرس داره که همون آدرس Slave مورد نظر هستش و این آدرس ۷ بیتی هستش(که یعنی با این کار میگید این دیتایی که به زودی ارسال میکنم برای کدوم دستگاه Slave هستش)، این تابع چیزی رو برنمیگردونه.
منبع تابع beginTransmission

پایان دادن به ارسال دیتا به دستگاه Slave که شروع شده بود به وسیله تابع beginTransmission و دیتایی که فرستاده شد به وسیله تابع write
Stop : تابع بالا مقادیر زیر رو میتونه در این متغییر قرار بده(که اگه تابع بالا کارش رو درست انجام بده عدد ۰ رو در متغییر stop ذخیره میکنه و اگه نتونه بسته به خطای رخ داده یکی از اعداد زیر رو در این متغییر ذخیره میکنه) :
۰ : قطع ارتباط با موفقیت انجام شده.
۱ : دیتا در بافر ارسال وجود دارد.
۲ :  گرفته NACK در آدرس ارسالی.
۳ : گرفته NACK در  دیتای ارسالی
۴ : ارور ها و خطاهای دیگه.
منبع تابع endTransmission

این تابع به وسیله Master استفاده میشه برای درخواست دادن دیتا از Slave، که این دیتا میتونه به وسیله تابع available متوجه بشیم از وجودش و دریافتش کنیم به وسیله تابع read
اگه این تابع کارش رو درست انجام بده از طریق پارامتر stop که بهش میدیم ما رو خبردار میکنه.
Address : یه متغییر ۷ بیتی که آدرس Slave  ما هستش.
Quantity : تعداد بایت هایی که درخواست میدیم.
Stop : این متغییر هم برا اینه که بفهمیم تابع کارش رو درست انجام داده یا نه.
این تابع تعداد بایت هایی که برگشت داده میشه از دستگاه Slave رو برمیگردونه.
منبع تابع requestFrom

فراخونی تابع handler وقتی Master درخواست دیتا میکنه از Slave، این تابع برای Slave  هستش.
که این handler  نام یه تابع هستش(که حالا میتونید نامش رو تغییر بدید)، که این تابع handler پارامتری نداره.
این تابع onRequest چیزی برنمیگردونه.
منبع تابع onRequest

یه تابعی به نام handler که فراخونی میشه وقتی Slave دریافت میکنه(وقتی دیتایی میکرو دریافت مکنه و در بافر ذخیره میشه اون وقت ما توسط توابع available میتونیم بغهمیم که دیتایی در بافر ذخیره شده یا نه و بعد توسط تابع read اون دیتا رو بخونیم/دریافت کنیم ) یه بسته از Master، تابع handler  یه پارامتر داره که اونم تعداد بایت های خونده شده از Master  هستش و چیزی برنمیگردونه.
منبع تابع onReceive

پروژه های ارتباط دو سیمه سخت افزاری TWI

خب در زیر کلی پروژه میزارم براتون که همه رو نوشتم و تست هم کردم، در هر موضوعی پروژه گزاشتم، توابع بالا رو عملکردشون رو بخونید و کد های زیر رو ببینید و متوجه میشید برنامه ها رو خودتون و لذا من توضیح خاصی ندادم برا پروژه ها، ولی اگه جایی نیاز به توضیح داشتین بگین تا توضیح بیشتر بدم.
شماتیک تمام پروژه های زیر :
آموزش I2C در آردوینو

۱) Master دیتا ارسال میکند و Slave دیتا دریافت میکند

پروژه۱) ارسال یه متغییر از نوع int توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع int ارسال میکنه)
برنامه Slave(یه متغییر از نوع int دریافت میکنه)
پروژه۲) ارسال یه متغییر از نوع String توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع String ارسال میکنه)
برنامه Slave(یه متغییر از نوع String دریافت میکنه)
پروژه۳) ارسال یه متغییر از نوع آرایه توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع آرایه ارسال میکنه)
برنامه Slave(یه متغییر از نوع آرایه دریافت میکنه)

۲) Master دیتا دریافت میکند و Slave دیتا ارسال میکند(مستر درخواست دیتا میده و اسلیو هم براش دیتا میفرسته)

پروژه۴) دریافت یه متغییر از نوع int توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع int دریافت میکنه)
برنامه Slave(یه متغییر از نوع آرایه ارسال میکنه)
پروژه۵) دریافت یه متغییر از نوع String توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع String دریافت میکنه)
برنامه Slave(یه متغییر از نوع String ارسال میکنه)
پروژه۶) دریافت یه متغییر از نوع آرایه توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع آرایه دریافت میکنه)
برنامه Slave(یه متغییر از نوع آرایه ارسال میکنه)

لینک های مفید :

  1. راه اندازه ماژول SRF05 با I2C
  2. راه اندازی IC پتانسومتر دیجیتال با I2C
  3. آموزش برنامه نویسی پیشرفته BASIC – ارتباط سریال I2C
  4. لینک مقابل هم فیلم های قسمت ۵۹ تا ۷۵ درباره TWI هستش و زبونش هم فارسیه و رایگان هم هستش : فیلم های آموزش AVR

خب امیدوارم از این مطلب خوشتون اومده باشه و براتون مفید بوده باشه….اگه جایی رو اشتباه گفتم/ بد گفتم/کم توضیح دادم و… لطفا ذکر کنید.
هزینه این مطلب : چون امشب ۵ شنبس یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.(همون طور که میدونید هزینه هر چیزی رو باس داد laugh ،جان داش بدید ها، نامردی نکنید، تنبلی هم همین طور)
یا علی در زیر یه عکسی میزارم براتون، رفته بودن بازار این عکسو دیدم تو در یه مغازه ای خوشم اومد و با گوشی عکس گرفتم، جالبه متنش، گفتم برا شما هم بزارم ظرر نداره…
این عالم فانی به یه ارزن نمی ارزد
فعلا یا علی تا مطلب بعد اگه زنده بودیم…..راستی یه خبر خوش، آموزش نوشتن کتابخونه برا قطعات رو میخوام بزارم تو سایت، و حدودا وسطای کارش هستم و آموزش طراحی PCB رو هم میخوام بزارم….
دیگه واقعا یا علی laugh

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات : آموزش جامع آردوینو
ارسال دیدگاه
48
نظرات این مطلب بسته شده است.
  1. جلیل

    مهمان

    جلیل

    سلام خیلی عالی بود. خدا خیرت بده. من برات خیلی دعا میکنم چون بشدت تشنه یادگیری بودم ولی مطلبی هم سطح خودم کم پیدا میکردم. خیلی خوب بود.

  2. ارمیا

    مهمان

    ارمیا

    سلام
    وقت به خیر
    برای مورد زیر چه راه حلی رو پیشنهاد می کنید؟
    دو تا سنسور هست که می خوام هر کدوم به یه برد آردوینو وصل بشه
    بعد مقادیر دو تا سنسور خونده بشه و با هم مقایسه بشه و بردی که مقدار ورودیش بیشتر بود به عنوان مستر انتخاب بشه
    ممنون میشم راهنمایی کنید

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام

      A) دو تا سنسور داری، هر سنسور به یه برد آردوینو وصل میشه؟ ( سنسور 1 به آردوینو 1 / سنسور 2 هم به آردوینو 2 وصل میشه : درست متوجه شدم؟ خب چه کاریه که از 2 تا میکرو استفاده میکنی؛ والا پرتکول ها و روش های زیادی برای ارتباط 2 تا میکرو با همدیگه هستش، ساده ترینش UART هستش ) :

      1) یه برد آردوینو میشه مرجع و برد دیگه میشه پایه، که برد پایه اطلاعاتشو میفرسته برا برد مرجع و برد مرجع هم اطلاعات سنسور خودشو هم میخونه و با اون چیزی که از برد پایه دریافت کرده مقایسه میکنه؛ که خب مثلا برد پایه، اطلاعات زمان الان رو میفرسته، برد مرجع که اطلاعات رو از برد پایه گرفت، بعد میره اطلاعات سنسور خودشو میخونه و بعد مقایسه میکنه که خب ممکنه 100ms اختلاف زمانی باشه بین محاسبه مقدار سنسور متصل به برد مرجع و پایه، که خب اگه سنسور ما، دما باشه فک نکنم این اختلاف زمانی مشکلی ایجاد کنه تو بحث مقایسه ( اینو دیگه خودتون باید ببینید که این اختلاف زمان محاسبه مقدار سنسور ها و مقایسشون اهمیت داره یا نه؛ اگه اهمیت داشت یه روش حل مشکل اینه که محاسبات بر مبنای ساعت انجام بشه که شما یه ماژول ساعت داشته باشی که بین 2 تا برد آردوینو مشترک باشه و … )؛

      2) حالا ممکنه بردهای آردوینو شما به PC وصل میشن که خب کار ساده میشه، هر دو برد آردوینو اطلاعاتشونو به PC میفرستن و اونجا یه نرم افزار تحت ویندوز طراحی میکنید که اطلاعات رو میگیره و مقایسه میکنه و ایجاد نمودار و کلی کار دیگه

      3) اگه میکرو ها به صورت بیسیم قراره به هم وصل بشن که از طریق اینترنت ( ماژول های GPRS ) و ارتباط رادیویی، بلوتوث وایفای و … با هم ارتباط برقرار میکنن؛ اگه هم میکرو ها سیمی قراره به هم وصل بشن که خب پروتکول های زیادی هستش و همونطور که گفتم یکی از ساده ترین هاشون هم UART هستش.

      B) حالا اگه منظورت اینه که 2 تا سنسور داری و 1 میکرو : خب مقدار سنسور ها رو میخونی و مقایسه میکنی دیگه، کار سختی نی که.

      • ارمیا

        مهمان

        ارمیا

        ممنون
        منظورم حالت A بود
        باید دو تا برد همزمان کار کنن که اگه یکی مشکلی براش پیش اومد دومی وارد مدار بشه

  3. زهرا

    مهمان

    زهرا

    سلام من میخام از اون دوتا پایه i2c، ADCبگیرم میشه بپرسم چطور میتونم بجای A4,A5 از پایه های دیگه برای اتصال I2C استفاده کرد. dash

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام – درباره i2c نرم افزار تحقیق کنید.
      Arduino Software I2C

  4. میلاد لشنی

    مهمان

    میلاد لشنی

    در حالتی که میکرو مورد نظر ATxmega باشه این ارتباط به چه صورتی هستش. به طور مثال ATxmega128A1U چهار TWI روی پورتهای مختلف داره.

  5. عرفان جهانشاهلو

    مهمان

    عرفان جهانشاهلو

    من هر چی گشتم چیزی پیدا نکردم. چطور میشه دو تا سنسور رو که از I2C استفاده میکنن راه اندازی کرد با یک میکرو (آردینو). تا جایی که میدونم باید از ارتباط نرم افزاری برای چند تا سنسور و سخت افزاری برای یکیش(تقریبا مثل software serial و همون پایه rx و tx یا 0 و 1 آردینو) .

    مشاهده پاسخ ها (4)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      چرا مطلب تو نت هس، کم هم نی؛ شما اینو ( connect 2 i2c devices to arduino ) سرچ کنید، قطعا مطالب زیادی وجود داره؛ من حقیقتا حوصله ندارم یه مطلب در این باره بنویسم، دلم میخواد ولی…
      نمونش این لینک : Connecting multiple I2C device on Arduino Uno R3
      Connecting multiple I2C device on Arduino

      • عرفان جهانشاهلو

        مهمان

        عرفان جهانشاهلو

        خیلی ممنون. واقعا سایتی به تکمیلی مثل سایت شما ندیدم.

      • عرفان جهانشاهلو

        مهمان

        عرفان جهانشاهلو

        حالا که فهمیدم توضیحی میدم تا دوستان دیگه خیلی نگردن smile . همه دستگاه ها رو و پین های I2C شون رو به هم وصل میکنیم و به آردینو وصل میکنیم. با برنامه i2c_scanner اسکن میکنیم و تمام کد هاشون رو بدست میاریم و طبق لینک برنامه اش رو مینیویسیم و بجای DEV_ID2 و DEV_ID کد دستگاه هارو میزاریم.

      • محسن

        مهمان

        محسن

        دمتون گرم heart

  6. محمد

    مهمان

    محمد

    منم مثل خودت آقا مهدی بچه حزب اللهی ام و افتخارمه که اینطوری هستم منم مثل خودت علاقه مند به رباتیک و …(الان دیگه کم و بیش شغل دومم هم شده) خلاصه خیلی دوستت دارم خیلی داری زحمت میکشی تو اشتراک دانش و کارات. ممنون

  7. محمد

    مهمان

    محمد

    سلام. از یک آردوینو مگا به عنوان مستر و چند آردوینو uno به عنوان slave استفاده کردم تا مقدار آنالوگ خوانده شده رو انتقال بدم به مستر. یعنی مستر اینجا گیرنده و اسلیو فرستنده است. موقعی که پاور یکی از اسلیوها رو قطع می کنم، متسر هنگ میکنه و دیگه اطلاعات رو نمی خونه. یعنی توی سریال مانیتور دیگه اطلاعاتی نمایش داده نمیشه و قفل میکنه. مشکل از کجاست و راه حلی براش دارین؟ چون پروتکل I2C یه شبکه هست و اگه قرار باشه با از کار افتادن یکی از نودها کل شبکه مختل بشه نمیشه ازش استفاده کرد…
    در ضمن در آردوینو مگا مقاومت پول آپ داخلی برای I2C قرار داده شده، اما من برای اطمینان خارجی 4.7 کیلو هم برای هر دو خط sda , scl هم گذاشتم . در هر دو صورت فرقی نکرد و این هنگ بودن اتفاق می افتاد.

  8. علی

    مهمان

    علی

    سلام دوستان لطفا راهنمایی کنید .اگر در مثال 4 من بخواهم چند متغیر از نوع int را از طریق slave به mater بفرستم برنامه را باید چگونه بنویسم یعنی مستر علاوه بر ارسال دیتا گیرنده دیتا نیز باشد.

  9. mahdi

    مهمان

    mahdi

    سلام
    ممنون از مطالب مفیدتون.راجع به قسمتی که در مورد متغیر stop گفته بودید
    “Stop : تابع بالا مقادیر زیر رو میتونه در این متغییر قرار بده(که اگه تابع بالا کارش رو درست انجام بده عدد ۰ رو در متغییر stop ذخیره میکنه و اگه نتونه بسته به خطای رخ داده یکی از اعداد زیر رو در این متغییر ذخیره میکنه) :
    ۰ : قطع ارتباط با موفقیت انجام شده.
    ۱ : دیتا در بافر ارسال وجود دارد.
    ۲ : گرفته NACK در آدرس ارسالی.
    ۳ : گرفته NACK در دیتای ارسالی
    ۴ : ارور ها و خطاهای دیگه.”
    stop یک ورودی هست و اگر 0 باشه باس آزاد میشه و اگر 1 باشه یه restart ارسال میشه.

  10. مهدی

    مهمان

    مهدی

    سلام
    ممنون از زحمات شما
    آقا یه سوال
    اگر بخام یکسری پکت از نوع هگز از طریق i2c بین دوتا آردیونو انو و نانو در ارتباط بزارم (هم از طرف مستر به اسلیو هم برعکس) دقیقا باید چجوری متغیر هارو تعریف کنم ؟
    اینم بگم هگز از هردو دستگاه توسط پورت سریال حقیقی خونده میشه

  11. امین

    مهمان

    امین

    سلام. برای اینکه با آردوینو اسلیو دیتا از کاربر بگیریم و هر زمان که کاربر دیتا را وارد کرد برای مستر به منظور ذخیره سازی و استفاده در برنامه اصلی ارسال کنیم ، چه راه کاری هست؟ یعنی اسلیو چطور به مستر بگه که میخواد دیتا بفرسته و مستر همون موقع بره دیتا را بخونه که ذخیره کنیم؟ با تشکر

  12. ناشناس

    مهمان

    ناشناس

    آخه آدم میاد چیزی نگه،راهشو بکشه بره ولی …
    یکم خجالتم خوب چیزیه، از میکرو کنترلر به خامنه ای و قدس و کعبه چه مربوطه؟
    آوردی درست گذاشتی وسط مطلب، حتما فکر میکنی مثلا خیلی آدم درست حسابی هم هستی!
    برو بشین یه گوشه خلوت، فقط نیم ساعت به خودت فکر کن…

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      آخه الزامی نی که سایت الکترونیکی مطلب متفرقه نزاره – در ضمن اینی که میبینید سایت شخصی هستش – باز انجمن بود، اون وقت یه حرفی –
      من علاقه دارم در مطالب الکترونیکیم – حدبثی – مطلبی داستانی چیز جالی پیدا کردم بزارم، حالا باید به امثال مثل شما توضیح بدم که چرا تو سایت شخصی خودم مطالبی از امام خامنه ای گزاشتم توضیح بدم؟
      حالا تو عکس این مطلب رهبر چی گفته؟ یه حرفی که آمریکایی ها زمان توافق برجام به بعضیا که میدونید میگفتن …. دولت هم به جماعت انقلابی میگفت تندرو – که بعد رهبری اومد پاسخ داد – یا مثل اون درس مذاکره گرفتن از کربلا که بعد رهبری اومد پاسخ روحانی رو داد و…. – اینا رو میزارم تا ملت آگاه بشن –

      اگه شما اصل داستان مشکل دارید و حرف حق میبینید قابل قبول نی براتون و فشار میاد بهتون که مشکل شماس و به من مربوط نی
      اگه هم فقط مشکلتون اینه که سایت الکترونیکی چرا مطلب غیر الکترونیکی گزاشته میشه که میدونم 100% مشکلتون همینه! که جوابتون رو قبلتر دادم- سایت شخصی هستش – به امثال شما باید توضیح بدم که چرا تو سایت شخصی خودم همچین مطلبی گزاشتم؟

      موفق باشید

    • #AghaMahdi79

      مهمان

      #AghaMahdi79

      سایت خودشه دلش میخاد

      این همه مطالب زیبا و کاربردی گزاشته اون وسط هم 2 تا مطالب خارج الکترونیک گذاشته درباره عقایدش
      منم مخالف مطالبش هستم ولی ب خودم اجازه نمیدم چیزی بهشون بگم

  13. رسول

    مهمان

    رسول

    سلام ببخشید من میخوام از اردینو به عنوان Master و ازavrبه عنوان Slave استفاده کنم میشه کمکم کنید

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      سلام-جفتشون avr هستن و فقط نوع میکرو فرق داره و کتابخونه هایی که داری استفاده میکنی – لذا تو سخت افزار مشکلی نداری – میمونه کدنویسی – که یه مطلب درباره i2c تو سایت هستش چند تا فایل آموزش i2c ( خود پروتکول ) هستش تو اون مطلب – اینو میخونی – رو هر دو تا کتابخونه i2c آردوینو و میکرو avr ( حالا کدویژن یا اتمل استدیو یا …) بعد… – حقیقتا من وقتشو ندارم.

  14. فرشته

    مهمان

    فرشته

    ببخشید وقتی کد های مستر و اسلیو (کدهای همین صفحه) رو در محیط پروتئوس ران میکنم ، فقط یکبار داده رو میفرسته و بعد اون اسلیو Nack میفرسته؟؟ مثلا برای برنامه اول در I2C Debug داریم: S 10 N P
    S 10 A 01 A P
    S 10 A 02 A P
    S 10 A 03 N P
    S 10 A 04 N P
    ……………..

  15. علی

    مهمان

    علی

    سلام ببخشید دوباره مزاحم شدم
    چطوری باید Reapeted START ذر آردوینو انجام داد؟؟؟؟ unknw

  16. Master

    مهمان

    Master

    مقاومت پول اپ چند اهم باید باشه

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

      نویسنده این مطلب

      مهدی دمیرچیلو

      من 10 کیلو میزارم.

  17. Master

    مهمان

    Master

    چطوری تو اسلیو میشه فهمید که مستر چند بایت از ما خواسته؟

  18. Master

    مهمان

    Master

    سلام داداش فرض میکیم که دستگاه مستر requestFrom رو فرستاد به اسلیو اونوقت از کجا باس فهمید که این دیتایی که مستر ازمون خواسته چند بایت بوده؟
    کلا میگم چه تابعی برای رسیدن به تعداد بایت های requestFrom در اسلیو وجود داره؟

  19. Abbas

    مهمان

    Abbas

    سلام.
    آقا آرایه من کدی ۲۰ بخشی هست که تو هر بخش مفداری قرار گرفته و من این آرایه رو به صورت زیر دارم و برای ارسال خطا میگره
    byte data[20]

  20. Abbas

    مهمان

    Abbas

    سلام.
    داش مهدی من میخوام یه آرایه ۲۰ پارمتری ارسال کنم اما تو کد نمیتونم این کار رو کنم و خطا میگره
    مثلا:
    byte dataa[20];

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      همین کدت رو من تست کردم خطا نداد آردوینو

      • Abbas

        مهمان

        Abbas

        سمت گیرنده.منون بابت پاسخ های مفیدت.

  21. حسینی

    مهمان

    حسینی

    سلام من سیم بندی i2cانجام دادم (sda به sda)
    (scl به scl )
    (gndبه gnd)
    هر دوتا بردمم به لپ تاپ وصله البته اینم بگم که یه بردم مگا2560 هستش و یه برد دیگم یونو
    کدها رو هم مطابق کد پروژه 1 شما اپلود کردم اما توی سریال مانیتور چیزی مشاهده نمیکنم
    میشه راهنمایی کنید ؟؟؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      پایه های i2c تو مگا و یونو تو یه مکان نیستن – میدونی که…
      مقاومت پول آپ برا پایه های دیتا و کلاک هم باید قرار بدی
      مطمئن باش که 2 برنامه رو در دو میکرو ریختی و یه برنامه رو در دو میکرو نریختی

  22. احسان

    مهمان

    احسان

    جناب فک کنم شما از اون حزب الله ی های حال بهم زن هستید…
    واقعا؟؟؟؟ نوشتی برای روح شهدا صلوات بفرستین. واقعا؟؟ بابا مردم میخندن بهت. حال مردم از کسایی که طرفداریشو میکنی بهم میخوره. آدمایی که به اسم دین فقط به فکر جیب خودشونن. از رهبرت خامنه ای بگیر تا همه ی سپاهی ها و بسیجی ها…. دیگه فقط مونده بود بگی که برای سلامتی رهبر صلوات. الهم…
    واقعا که…
    ولی وطالبتون خوب بود. ممنون واسه راهنماییا.

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      خدا رو شکر که مطلب برات مفید بود داش
      حالا ما مفید باشیم برای جامعه و شما دوستان، حالا شما هر چی دوست داری نثار ما کن، حال بهم زن و هر چی دوست داری.
      آیا نوشتن متن زیر به عنوان هزینه مطلب کار اشتباهی هستش؟
      یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.
      آیا این افراد دزد و اخلتلاس گر هستن/؟ آیا از این افراد نباید تقدیر بشه؟ آیا یه صلوات و فاتحه چیز زیادی هستش برای تشکر ازشون؟
      پسر خوب این شهدا اگه نبودن که من و تو الان اینجا نبودیم تو این وضعیت و امنتیت نبودیم که داش من.(جون خیلی عزیزه و هر کسی تمام زندگیش رو ول نمیکنه بره سمت مرگ)
      حال مردم از شهدا بهم میخوره؟ملت عاشق شهادت و شهدا هستن چی چی میگی تو.
      خب من میگم شهدا چه ربطی داره به حروم خورها؟ shock مسئولینی که پول بیت المال رو عین سگ دارن میخورن چه ربطی به شهدا دارن آخه shout
      وگرنه منم حالم از دزد ها و حروم خور ها بهم میخوره، نه تنها من بلکه تمام مردم ایران.
      متاسفانه مسئولین فاسد تو هر رده ای کم نداریم ولی دیگه خداییش خیلی نامردی هستش که بخوای شهدا رو فاسد و اخلاس گر بدونی و با جمله من که گفتم برا شادی روحشون صلوات و فاتحه بفرستید داری مخالفت میکنی
      ====================

      • سعید

        مهمان

        سعید

        مهدی جان خدایی دمت گرم. راستی عکس بالا رو گذاشتم رو صفحه دسکتاپم. این عالم فانی …

  23. حمید

    مهمان

    حمید

    خسته نباشی….آقا مهدی یه دونه ای

  24. علیرضا

    مهمان

    علیرضا

    با عرض سلام خسته نباشید.
    تشکر میکنم بابت مطالب بسیار مفید سایت تون.

  25. احسان

    مهمان

    احسان

    درود فراوان
    تشکر بابت سایت بسیار عالیتون که واقعا هیچ جای حرفی نداره..
    دوتا سوال داشتم:1-اتصال ماژول اثرانگشت و همچنین برنامه نویسی آن با آردوینو به چه شکل هست
    2- ماژول وایرلس هم میخواستم بدونم به چه شکل متصل و برنامه نویسی میشه(آردوینو)
    با تشکر از شما

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      میخوام این قطعات رو راه اندازی کنم ولی وقت ندارم شاید بره برا ماه بعد
      ولی اگه پروژه پایانی تون هستش و یا لازم دارید، میل بزنید بهم.

  26. ابوالفضل

    مهمان

    ابوالفضل

    مهدی جان اگه میشه یه مطلب درباره وصل کردن ماژولESP8266 به اردوینو و کتابخونش بذار.مرسی

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

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

      • سهند

        مهمان

        سهند

        آقا مهدی خداقوت.چند دفعه سایتتون رو دیدم دیگه حیفم اومد نظر ندم و ازتون تشکر نکنم.بی نهایت سایت مفیدی دارید.

  27. رامین اصیلی

    نویسنده سایت

    رامین اصیلی

    سلام
    خیلیییییییییییییییی عالییییییییییییییییی بود
    مرسی آقا مهدی

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      چطوری بی معرفت
      از این طرفا

    • علی

      مهمان

      علی

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