• خونه
  • تماس با ما
  • همکاری با ما
  • حمایت مالی
آزادی حجاز
  • News
  • AVR
    • AVR Train
      • آموزش جامع AVR
      • آموزش صحیح و خوانا نوشتن کد
    • تابلو روان
    • موتور
      • موتور DC
      • موتور پله ای
      • سرو موتور
    • سنسور و ماژول
      • RFID
      • التراسونیک
      • شتاب سنج
      • رطوبت سنج
      • دماسنج
      • بلوتوث
      • اتصال AVR به کامپیوتر
      • اتصال رم به AVR
      • فرستنده گیرنده رادیویی
      • ساعت و تاریخ
      • جوی استیک
    • IC
      • IC حافظه
      • ADC
      • DS1307(ساعت)
      • BCD TO 7S
      • شیفت ریجستر
    • LCD
      • LCD گرافیکی
      • LCD کاراکتری
      • LCD رنگی
    • LED – 7S – Dot Matrix
      • LED
      • سون سگمنت(۷S)
      • دات ماتریس
    • ساعت
    • پروگرامر
    • اسیلوسکوپ
    • ولتاژ،جریان،مقاومت،فرکانس،خازن و…
      • ولت متر
      • اهم متر
    • امواج
    • کی پد(KEY PAD)
    • فوتوسل
  • ARM
    • ARM Projects
    • ARM Train
      • AT91
      • STM32
      • LPC1768
      • LPC2368
  • Arduino
    • Arduino Train
    • Arduino Projects
  • Raspberry
  • FPGA
  • PCB
    • آلتیوم
      • آموزش آلتیوم
      • پروژه آلتیوم
  • S.W
    • Codevision
    • Proteus
    • Serial Port
    • Android
    • Labview
  • Analog
  • etc
    • Components
    • Android
    • C/C++/Qt
    • OpenCV
    • QuadCopter
    • PC And Micro
    • Communication Protocols
دلیل پیشرفت سریع آلمان و ژاپن
آموزش الکترونیک ۱ آموزش سینماتیک روبات ها آموزش آردوینو در Proteus
آموزش الکترونیک ۲ آموزش رباتیک و ربات های سری آموزش Proteus - تحلیل مدار
آموزش مبانی الکترونیک آموزش میکروکنترلر STM32F1xx آموزش آردوینو - کنترل با شبکه
برنامه نویسی Raspberry Pi آموزش AVR و Codevision - مقدماتی آموزش برنامه نویسی آردوینو با متلب
کاربرد Raspberry Pi در صنعت آموزش AVR و Codevision - تکمیلی آموزش برنامه نویسی آردوینو - رباتیک
● تبلیغات دیجیتال هوشمند● آموزش های رایگان● استخدام در فرادرس
شما اینجائید:خانه » الکترونیک » آردوینو » Arduino train » آموزش جامع آردوینو جلسه ۱۶ پروتکول i2c twi

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

ارسال شده توسط:مهدی دمیرچیلو تاریخ ارسال: 2016/02/25 در Arduino train 27 نظر

به نام خدا : این مطلب رو بنا به درخواست برادر “حامد کاظمی” مینویسم، تو این مطلب از سری مطالب آموزش آردوینو میخوایم درباره ارتباط دو سیمه سخت افزاری و نرم افزاری توضیح بدم(حالا این که نرم افزاری رو 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
1
#include <Wire.h>
اول از هر کاری باید این کتابخونه رو فراخونی کنیم؛ اگه میخوایم از ارتباط دوسیمه TWI استفاده کنیم.
منبع کتابخونه Wire
1
2
Wire.begin()
Wire.begin(address)
شروع برقراری ارتباط دو سیمه
این تابع به دو صورت نوشته میشه که تو یه مورد نیازی به آدرس Slave نیستش و تو مورد بعدی باید آدرس Slave مورد نظر رو وارد کنیم، اگه فقط ۲ تا دستگاه دارید که قراره با هم ارتباط برقرار کنن نیازی به قرار دادن آدرس نیست ولی اگه چندین دستگاه داشتین که با هم از طریق ارتباط دو سیمه باید ارتباط برقرار کنن، باید آدرس رو داخل این تابع قرار بدید تا بگید که این دیتا برا کدوم دستگاه هستش.
این تابع چیزی رو برنمیگردونه.
منبع تابع begin
1
Wire.available()
این تابع تعداد بایت هایی که در دسترس هستن برای خوندن رو نشون میده و این تابع پارامتری نداره.(یعنی داخل اون پراتز بعد از نام تابع، نمیخواد چیزی بزاری یا بنویسی O_o)
در دستگاه Master این تابع باید استفاده بشه بعد از این که تابع requestFrom فراخونی شد
و در دستگاه Slave باید داخل تابع تعریف شده توسط onReceive قرار بگیره.(این توابع رو در ادامه میگم، فعلا زیاد گیر ندید.)
منبع تابع available
1
Wire.read()
این تابع ۱ بایت دیتا رو میخونه که :

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

منبع تابع Read

1
2
3
Wire.write(value)
Wire.write(string)
Wire.write(data, length)

نوشتن دیتا :

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

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

1
Wire.beginTransmission(address)

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

1
2
Wire.endTransmission()
Wire.endTransmission(stop)

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

1
2
Wire.requestFrom(address, quantity)
Wire.requestFrom(address, quantity, stop)

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

1
Wire.onRequest(handler)

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

1
Wire.onReceive(handler)

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

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

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

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

پروژه۱) ارسال یه متغییر از نوع int توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع int ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <Wire.h>
void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}
byte x=0;
void loop()
{
  Wire.beginTransmission(8);  // transmit to device #8
  Wire.write(x);
  Wire.endTransmission();     // stop transmitting
  ++x;
  delay(500);
}
برنامه Slave(یه متغییر از نوع int دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);
}
void loop() { }
void receiveEvent(int howMany)
{
  while (Wire.available() > 0) // loop through all but the last
  {
    int x = Wire.read();    // receive byte as an integer
    Serial.println(x);      // print the integer
  }
}
پروژه۲) ارسال یه متغییر از نوع String توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع String ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Wire.h>
void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}
char *myStr = "DMF313.IR";
void loop()
{
  Wire.beginTransmission(8);  // transmit to device #8
  Wire.write(myStr);              // sends one byte
  Wire.endTransmission();     // stop transmitting
  delay(500);
}
برنامه Slave(یه متغییر از نوع String دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);
}
void loop() { }
void receiveEvent(int howMany)
{
  String myStr="";
  char x='\0';
  while (Wire.available() > 0) // loop through all but the last
  {
    x = Wire.read();     // receive byte as an integer
    myStr += x;
  }
  Serial.println(myStr);          // print the integer
}
پروژه۳) ارسال یه متغییر از نوع آرایه توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع آرایه ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Wire.h>
void setup()
{
  Wire.begin(); // join i2c bus (address optional for master)
}
char myArrayChar1[] = "DMF313.IR, I Love Iran, YaHoseinShahid..";
char myArrayChar2[] = "Labbaik Ya Zeinab.";
void loop()
{
  Wire.beginTransmission(8);  // transmit to device #8
  Wire.write(myArrayChar1, 40);
  Wire.endTransmission();     // stop transmitting
  delay(500);
  Wire.beginTransmission(8);  // transmit to device #8
  Wire.write(myArrayChar2, 18);
  Wire.endTransmission();     // stop transmitting
}
برنامه Slave(یه متغییر از نوع آرایه دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);
}
void loop() { }
String myStr;
void receiveEvent(int howMany)
{
  myStr = "";
  while (Wire.available() > 0) // loop through all but the last
    myStr += (char)Wire.read(); // receive byte as an integer
  Serial.println(myStr);          // print the integer
}

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

پروژه۴) دریافت یه متغییر از نوع int توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع int دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Wire.h>
void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}
int x;
void loop()
{
  Wire.requestFrom(8, 1);   // request 1 bytes from slave device #8
  while (Wire.available())  // slave may send less than requested
    x = Wire.read();        // receive a byte as character
  Serial.println(x);
  delay(500);
}
برنامه Slave(یه متغییر از نوع آرایه ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onRequest(requestEvent); // register event
}
void loop() { }
int x = 0;
void requestEvent()
{
  Wire.write(x); // respond with message of 1 bytes
  x++;
}
پروژه۵) دریافت یه متغییر از نوع String توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع String دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}
String myStr;
void loop()
{
  Wire.requestFrom(8, 24);    // request 6 bytes from slave device #8
  myStr = "";
  while (Wire.available())  // slave may send less than requested
    myStr += (char)Wire.read(); // receive a byte as character
  Serial.println(myStr);
  delay(500);
}
برنامه Slave(یه متغییر از نوع String ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onRequest(requestEvent); // register event
}
void loop(){ }
void requestEvent()
{
  Wire.write("Send By Slave, DMF313.IR"); // respond with message of 6 bytes
}
پروژه۶) دریافت یه متغییر از نوع آرایه توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع آرایه دریافت میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Wire.h>
void setup()
{
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}
char myChar;
void loop()
{
  Wire.requestFrom(8, 1);    // request 1 bytes from slave device #8
  while (Wire.available())  // slave may send less than requested
    myChar = Wire.read();   // receive a byte as character
  Serial.println(myChar);
  delay(500);
}
برنامه Slave(یه متغییر از نوع آرایه ارسال میکنه)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
void setup()
{
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onRequest(requestEvent); // register event
}
void loop() { }
int x = 0;
char Array[10] = {'D', 'M', 'F', '3', '1', '3', '.', 'I', 'R'};
void requestEvent()
{
  Wire.write(Array[x]); // respond with message of 6 bytes
  x++;
  if (x > 8)
    x = 0;
}

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

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

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

گروه پرسش و پاسخ الکترونیکی سروش

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

جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)

مطالب مرتبط

  • » ارتباط اردوینو با ویژوال بیسیک

  • » برقراری ارتباط بین آردوینو و متلب

  • » کد نویسی آردوینو در visual studio جلسه 1

  • » آموزش آردوینو بدون کدنویسی نرم افزار modkit

  • » انواع روش ریست نرم افزاری میکرو

  • » آموزش پروگرام کردن آردوینو با کدویژن

  • » روش های استخراج hex از نرم افزار آردوینو و ریختن آن روی میکروکنترلر

  • » هر آنچه در تعریف متغیر باید بدانیم

  • » آموزش جامع آردوینو جلسه 19 string در arduino

  • » آموزش جامع آردوینو جلسه 18 software serial

27 نظر

  1. رامین اصیلی
    2016/02/27 در 08:50

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

    پاسخ
    • مهدی دمرچیلو
      2016/02/27 در 11:38

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

      پاسخ
    • علی
      2016/04/01 در 04:44

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

      پاسخ
  2. ابوالفضل
    2016/03/08 در 13:54

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

    پاسخ
    • مهدی دمرچیلو
      2016/03/08 در 18:58

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

      پاسخ
      • سهند
        2017/01/31 در 22:15

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

        پاسخ
  3. احسان
    2016/04/16 در 13:01

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

    پاسخ
    • مهدی دمرچیلو
      2016/04/16 در 16:57

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

      پاسخ
  4. علیرضا
    2016/05/08 در 15:40

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

    پاسخ
  5. حمید
    2016/05/18 در 17:03

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

    پاسخ
  6. احسان
    2016/07/12 در 01:48

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

    پاسخ
    • مهدی دمرچیلو
      2016/07/12 در 09:39

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

      پاسخ
      • سعید
        2016/12/13 در 14:08

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

        پاسخ
  7. حسینی
    2016/08/06 در 11:55

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

    پاسخ
    • مهدی دمرچیلو
      2016/08/06 در 12:27

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

      پاسخ
  8. Abbas
    2017/01/31 در 00:56

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

    پاسخ
    • مهدی دمرچیلو
      2017/01/31 در 08:49

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

      پاسخ
      • Abbas
        2017/02/04 در 00:03

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

        پاسخ
  9. Abbas
    2017/02/03 در 21:42

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

    پاسخ
  10. Master
    2018/06/12 در 11:27

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

    پاسخ
  11. Master
    2018/06/14 در 12:29

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

    پاسخ
  12. Master
    2018/07/09 در 10:29

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

    پاسخ
    • مهدی دمیرچیلو
      2018/07/13 در 10:49

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

      پاسخ
  13. علی
    2018/08/05 در 14:28

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

    پاسخ
  14. فرشته
    2018/09/30 در 17:52

    ببخشید وقتی کد های مستر و اسلیو (کدهای همین صفحه) رو در محیط پروتئوس ران میکنم ، فقط یکبار داده رو میفرسته و بعد اون اسلیو 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. رسول
    2018/11/17 در 20:58

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

    پاسخ
    • مهدی دمیرچیلو
      2018/11/17 در 21:11

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

      پاسخ

یک نظر بدهید

برای صرف‌نظر کردن از پاسخ‌گویی اینجا را کلیک کنید.

آزادی قدس نزدیک است، ان شاء الله

آزادی قدس نزدیک است، ان شاء الله

مطلب ( پروژه ) بعدی …

فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :

1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG

 

و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :

1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.

 

فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.

 

جزئیات داستان رو در لینک زیر میتویند ببینید :

آموزش جامع پروتکول USB

 

===

 

به علت اثطغبال بیش از حد دوستان از موضوع usb؛ فعلا یکم سرگرم طراحی قالب جدید سایت شدم ^_^

نظرات اخیر

  • میثم : اقا دم شما گرم. سایت شما یکی از منابع عالی الکترونیک هست که خیلی مط ...

  • مهدی دمیرچیلو : سلام پروژه - خط 3 MFRC522 mfrc522(10/*SS_PIN*/, 9/*RST_PIN*/); پین ...

  • مهدی دمیرچیلو : سلام - باید واحد تایمر میکرو رو مطالعه کنید و توابع مورد نیازتون رو ...

  • مهدی دمیرچیلو : سایت شخصی هستش - دوس دارم ته هر مطلبم یه عکس یا یه متلب متفرقه قرار ...

  • mosa : سلام آقا مهدی مرسی بابت مطلب عالیتون یه سوال داشتم!من از آردوینو می ...

جستجو

bigtheme
  1. پسورد فایل های سایت

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

  2. کانال ما در آپارات


ارائه دادن پروژه های سایت به استاد و یا فروختنشون مورد رضایت ما نیست و خلاف شرع و قانون می باشد / کپی کردن مطالب سایت ممنوعه /
  توسط بیگ تم