به نام خدا : این مطلب رو بنا به درخواست برادر “حامد کاظمی” مینویسم، تو این مطلب از سری مطالب آموزش آردوینو میخوایم درباره ارتباط دو سیمه سخت افزاری و نرم افزاری توضیح بدم(حالا این که نرم افزاری رو TWI میگفتن یا سخت افزاری رو I2C میگفتن یا برعکس دقیقا خاطرم نیست، اگه کسی میدونه بگه.) و پروژه آردوینو هم یه چند تایی میزارم(تعدادش زیاده نگران نباشید، از تعداد پروژه های خود سایت آردوینو هم بیشتره )، در ضمن فرا رسیدن ایام فاطمیه رو هم تسلیت میگم خدمت شما دوستان گلم. ، راستی سلام داشای گلم امان از فراموشی
آموزش جامع آردوینو جلسه ۱۶ پروتکول i2c twi
داستان : خب داستانی به ذهنم نمیرسه بگم ، عوضش یه سخن از حضرت آقا میزارم تا دل بچه حزب اللهی ها حال بیاد ، ایشاالله چشم همه بدخواه های ملت ایران کور بشه که چش دیدن پیشرفت و عزت و وحدت و… ایران رو ندارن، مخصوصا این انگلیسی های نفله روباه صفت پدرسوخته :-D، بگذریم از این حرفا و بریم سر اصل مطلب……به امید پیشرفت ایران و نابودی دشمناش.
کتابخونه پروتکول نرم افزاری I2C
برای این موضوع لینک زیر رو ببینید حال توضیح دادن ندارم : Software I2C library
فرق سنکرون با غیر سنکرون(آسنکرون)
لپ کلوم، پروتکول هایی همچون I2C/TWI سنکرون هستن چون با کلاک دیتا رو میفرستن و پروتکول هایی همچون USART نسخه های ۲۳۲(برای مسافت هایی با ماکس طول ۱۰-۱۵ متر) , ۴۸۵(برای مسافت های زیاد و حدود ۸۰ متر ماکزیمم) آسنکرون هستن چون خط کلاک ندارن…..توضبحات بیشتر تو گوگل >>>سرچ>>>مطالعه :-D، مطلب زیر رو بخونید یه فایل توش هستش که تو بخش سومش سنکرون و آسنکرون رو توضیح داده که خوب هم توضیح داده : آنالوگ و دیجیتال، سری و موازی، سنکرون و آسنکرون
توضیح پروتکول ارتباط دو سیمه TWI و I2C
برای این موضوع فایل زیر رو دانلود کنید که تقریبا تمام فایل های موجود در نت درباره I2C/TWI هستش.(یعنی دیگه من توضیح نمیدم براش )
فرق TWI با I2C
چیزی که من میدونم اینه که TWI سخت افزاری هستش و I2C نرم افزار، سخت افزاری و نرم افزار رو هم که حتما میدونید یعنی چی…
انواع پروتکول دو سیمه
سخت افزاری(از پایه های خاصی از برد آردوینو باید استفاده کرد)، TWI
نرم افزاری(انتخاب پایه ها دست خودمون هستش.)، I2C
Master و Slave چیست
خب این دو همون فرستنده و گیرنده هستن، به Master فرستنده میگن و به Slave گیرنده هر چند که Master هم میدونه از Slave درخواست دیتا بکنه و Slave هم باید بفرسته(فقط در این حالته که مستر دیتا دریافت میکنه و اسلیو دتا ارسال)، و یه مستر میتونه به چندین اسلیو وصل بشه و بهشون دیتا بده و بعضا ازشون دیتا هم بگیره،
نحوه اتصال پروتکول دوسیمه i2c / twi
خب عکس زیر بهترین توضیح هستش که همین طور که میبینید به کمک این پروتکول i2c / twi با تموم قطعات و ic ها میتونیم تبادل داده داشته باشیم باهاشون و کنترلشون کنیم، که چیزی که تو این پروتکول هستش اینه که :
زمین تمام مدار هایی که از این پروتکول استفاده میکنن باید مشترک باشد(به هم دیگه باید وصل باشه)
پایه های SDA و SCL رو باید پول آپ کنیم، که ۲ پایه ارتباطی رو با یه مقاومت به Vcc وصل میکنیم
(اگه پول آپ نمیدونید چیه مطلب مقابل رو بخونید : آموزش جامع میکروکنترلر AVR جلسه۱۲)
نحوه اتصال دو پایه ارتباطی رو هم که میبینید، که ۱ مستر داریم و ۳ تا Slave
توضیح پایه های i2c / twi
خب این پروتکول دو تا پایه به نام های SDA و SCL داره که در زیر یه کوچولو توضیح میدم دربارشون :
SDA : دیتا رو این پایه قرار میگیره.
SCL : کلاک روی این پایه قرار میگیره.
چطور میتونیم یه متغییر رو به عنوان پارامتر به تابع بدیم و بعد تابع داخلش دیتا ذخیره کنه؟
چون تو کدنویسی ها و تو توابع بالا که توضیح دادم یه متغییر به تابع میدادیم به عنوان پارامتر و بعد تابع اونو ویرایش میکرد، که این شاید براتون عحیب باشه که این موضوع مربوطه به بحث انواع ارجاع در برنامه نویسی C که اینو بعدا تو یه مطلب جدا توضیح میدم چون خودش یه مطلب هستش، حالا عنوان موضوش رو گفتم اگه علاقه دارید و یا عجله میتونید تو نت بسرچید و مطالب و آموزش های موجود رو بخونید وکه انسافا مطالب بدی هم کم نیست تو نت.
آموزش ارتباط دو سیمه TWI
آموزش ارتباط دو سیمه سخت افزاری TWI
آردوینو DUE دو تا ارتباط دوسیمه TWIداره، که در زیر تعداد ارتباط های دوسیمه و شماره پایه متناظر در برد آردوینو رو برا چند مدل از بردهای آردوینو میبینید :
C
1
#include <Wire.h>
اول از هر کاری باید این کتابخونه رو فراخونی کنیم؛ اگه میخوایم از ارتباط دوسیمه TWI استفاده کنیم. منبع کتابخونه Wire
C
1
2
Wire.begin()
Wire.begin(address)
شروع برقراری ارتباط دو سیمه
این تابع به دو صورت نوشته میشه که تو یه مورد نیازی به آدرس Slave نیستش و تو مورد بعدی باید آدرس Slave مورد نظر رو وارد کنیم، اگه فقط ۲ تا دستگاه دارید که قراره با هم ارتباط برقرار کنن نیازی به قرار دادن آدرس نیست ولی اگه چندین دستگاه داشتین که با هم از طریق ارتباط دو سیمه باید ارتباط برقرار کنن، باید آدرس رو داخل این تابع قرار بدید تا بگید که این دیتا برا کدوم دستگاه هستش.
این تابع چیزی رو برنمیگردونه. منبع تابع begin
C
1
Wire.available()
این تابع تعداد بایت هایی که در دسترس هستن برای خوندن رو نشون میده و این تابع پارامتری نداره.(یعنی داخل اون پراتز بعد از نام تابع، نمیخواد چیزی بزاری یا بنویسی O_o)
در دستگاه Master این تابع باید استفاده بشه بعد از این که تابع requestFrom فراخونی شد
و در دستگاه Slave باید داخل تابع تعریف شده توسط onReceive قرار بگیره.(این توابع رو در ادامه میگم، فعلا زیاد گیر ندید.) منبع تابع available
C
1
Wire.read()
این تابع ۱ بایت دیتا رو میخونه که :
این دیتا ارسال شده از سمت Slave به سمت Master بعد از فراخونی تابع requestFrom
یا دیتایی که از سمت Master به سمت Slave ارسال شده است.
از دستگاه Slave در پاسخ به درخواست Master (در ادامه میبینید که تابعی داریم که Master ّه کمکش به Slave میگه من این تعداد بایت دیتا میخوام، برام بفرست!!!)
یا در صف گزاشتن دیتا برای ارسال از سمت Master به سمت Slave (در بین دو تابع beginTransmission() و endTransmission() باید قرار گیرد این تابع.)
Value : یه متغییر
String : یه رشته
Data : یه آرایه به طول length
این تابع تعداد بایت هایی رو که مینویسه رو برمیگردونه. توجه۱ : اگه میبینید که حداکثر تعداد بایتی که میشه فرستاد به صورت یکجا برابر ۳۲ بایت هستش فک کنم به این خاطر هستش که تابع write محدودیت داره، و مشکل از متغییر های از نوع String نیستش، این چیزی هستش که به فکر من میرسه، حالا اگه کسی دلیل اصلیش رو میدونه بگه( و این که احتمال من اشتباه هستش) توجه۲ : چیزی که هم هستش اینه که اگه یه دیتای ۳۲ بایتی فرستادی(یا چند دیتا که مجموعش ۳۲ بایت میشه) بعد باید ارتباط رو قطع کنی و پایان بدی و دوباره از اول شروع کنی و دیتای جدید رو بفرستی و... در آخر پایان بدی | در ضمن باید بین هر بار ارسال و قطع ارتباط و ذوباره برقرار ارتباط یه delay قرار بدید(در پروژه های زیر خواهید دید.) منبع تابع Write
C
1
Wire.beginTransmission(address)
برقراری ارتباط با یه دستگاه Slave برای این که دیتا بهش بدیم، این تابع یه پارامتری به نام آدرس داره که همون آدرس Slave مورد نظر هستش و این آدرس ۷ بیتی هستش(که یعنی با این کار میگید این دیتایی که به زودی ارسال میکنم برای کدوم دستگاه Slave هستش)، این تابع چیزی رو برنمیگردونه. منبع تابع beginTransmission
C
1
2
Wire.endTransmission()
Wire.endTransmission(stop)
پایان دادن به ارسال دیتا به دستگاه Slave که شروع شده بود به وسیله تابع beginTransmission و دیتایی که فرستاده شد به وسیله تابع write
Stop : تابع بالا مقادیر زیر رو میتونه در این متغییر قرار بده(که اگه تابع بالا کارش رو درست انجام بده عدد ۰ رو در متغییر stop ذخیره میکنه و اگه نتونه بسته به خطای رخ داده یکی از اعداد زیر رو در این متغییر ذخیره میکنه) :
۰ : قطع ارتباط با موفقیت انجام شده.
۱ : دیتا در بافر ارسال وجود دارد.
۲ : گرفته NACK در آدرس ارسالی.
۳ : گرفته NACK در دیتای ارسالی
۴ : ارور ها و خطاهای دیگه. منبع تابع endTransmission
C
1
2
Wire.requestFrom(address,quantity)
Wire.requestFrom(address,quantity,stop)
این تابع به وسیله Master استفاده میشه برای درخواست دادن دیتا از Slave، که این دیتا میتونه به وسیله تابع available متوجه بشیم از وجودش و دریافتش کنیم به وسیله تابع read
اگه این تابع کارش رو درست انجام بده از طریق پارامتر stop که بهش میدیم ما رو خبردار میکنه.
Address : یه متغییر ۷ بیتی که آدرس Slave ما هستش.
Quantity : تعداد بایت هایی که درخواست میدیم.
Stop : این متغییر هم برا اینه که بفهمیم تابع کارش رو درست انجام داده یا نه.
این تابع تعداد بایت هایی که برگشت داده میشه از دستگاه Slave رو برمیگردونه. منبع تابع requestFrom
C
1
Wire.onRequest(handler)
فراخونی تابع handler وقتی Master درخواست دیتا میکنه از Slave، این تابع برای Slave هستش.
که این handler نام یه تابع هستش(که حالا میتونید نامش رو تغییر بدید)، که این تابع handler پارامتری نداره.
این تابع onRequest چیزی برنمیگردونه. منبع تابع onRequest
C
1
Wire.onReceive(handler)
یه تابعی به نام handler که فراخونی میشه وقتی Slave دریافت میکنه(وقتی دیتایی میکرو دریافت مکنه و در بافر ذخیره میشه اون وقت ما توسط توابع available میتونیم بغهمیم که دیتایی در بافر ذخیره شده یا نه و بعد توسط تابع read اون دیتا رو بخونیم/دریافت کنیم ) یه بسته از Master، تابع handler یه پارامتر داره که اونم تعداد بایت های خونده شده از Master هستش و چیزی برنمیگردونه. منبع تابع onReceive
پروژه های ارتباط دو سیمه سخت افزاری TWI
خب در زیر کلی پروژه میزارم براتون که همه رو نوشتم و تست هم کردم، در هر موضوعی پروژه گزاشتم، توابع بالا رو عملکردشون رو بخونید و کد های زیر رو ببینید و متوجه میشید برنامه ها رو خودتون و لذا من توضیح خاصی ندادم برا پروژه ها، ولی اگه جایی نیاز به توضیح داشتین بگین تا توضیح بیشتر بدم. شماتیک تمام پروژه های زیر :
۱) Master دیتا ارسال میکند و Slave دیتا دریافت میکند
پروژه۱) ارسال یه متغییر از نوع int توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع int ارسال میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
}
bytex=0;
voidloop()
{
Wire.beginTransmission(8);// transmit to device #8
Wire.write(x);
Wire.endTransmission();// stop transmitting
++x;
delay(500);
}
برنامه Slave(یه متغییر از نوع int دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
voidsetup()
{
Wire.begin(8);// join i2c bus with address #8
Wire.onReceive(receiveEvent);// register event
Serial.begin(9600);
}
voidloop(){}
voidreceiveEvent(inthowMany)
{
while(Wire.available()>0)// loop through all but the last
{
intx=Wire.read();// receive byte as an integer
Serial.println(x);// print the integer
}
}
پروژه۲) ارسال یه متغییر از نوع String توسط Master و دریافت توسط Slave
برنامه Master(یه متغییر از نوع String ارسال میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
}
char*myStr="DMF313.IR";
voidloop()
{
Wire.beginTransmission(8);// transmit to device #8
Wire.write(myStr);// sends one byte
Wire.endTransmission();// stop transmitting
delay(500);
}
برنامه Slave(یه متغییر از نوع String دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <Wire.h>
voidsetup()
{
Wire.begin(8);// join i2c bus with address #8
Wire.onReceive(receiveEvent);// register event
Serial.begin(9600);
}
voidloop(){}
voidreceiveEvent(inthowMany)
{
StringmyStr="";
charx='\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(یه متغییر از نوع آرایه ارسال میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
}
charmyArrayChar1[]="DMF313.IR, I Love Iran, YaHoseinShahid..";
charmyArrayChar2[]="Labbaik Ya Zeinab.";
voidloop()
{
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(یه متغییر از نوع آرایه دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
voidsetup()
{
Wire.begin(8);// join i2c bus with address #8
Wire.onReceive(receiveEvent);// register event
Serial.begin(9600);
}
voidloop(){}
StringmyStr;
voidreceiveEvent(inthowMany)
{
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 دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
Serial.begin(9600);// start serial for output
}
intx;
voidloop()
{
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(یه متغییر از نوع آرایه ارسال میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Wire.h>
voidsetup()
{
Wire.begin(8);// join i2c bus with address #8
Wire.onRequest(requestEvent);// register event
}
voidloop(){}
intx=0;
voidrequestEvent()
{
Wire.write(x);// respond with message of 1 bytes
x++;
}
پروژه۵) دریافت یه متغییر از نوع String توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع String دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
Serial.begin(9600);// start serial for output
}
StringmyStr;
voidloop()
{
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 ارسال میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
#include <Wire.h>
voidsetup()
{
Wire.begin(8);// join i2c bus with address #8
Wire.onRequest(requestEvent);// register event
}
voidloop(){}
voidrequestEvent()
{
Wire.write("Send By Slave, DMF313.IR");// respond with message of 6 bytes
}
پروژه۶) دریافت یه متغییر از نوع آرایه توسط Master و ارسال توسط Slave
برنامه Master(یه متغییر از نوع آرایه دریافت میکنه)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <Wire.h>
voidsetup()
{
Wire.begin();// join i2c bus (address optional for master)
Serial.begin(9600);// start serial for output
}
charmyChar;
voidloop()
{
Wire.requestFrom(8,1);// request 1 bytes from slave device #8
while(Wire.available())// slave may send less than requested
لینک مقابل هم فیلم های قسمت ۵۹ تا ۷۵ درباره TWI هستش و زبونش هم فارسیه و رایگان هم هستش : فیلم های آموزش AVR
خب امیدوارم از این مطلب خوشتون اومده باشه و براتون مفید بوده باشه….اگه جایی رو اشتباه گفتم/ بد گفتم/کم توضیح دادم و… لطفا ذکر کنید. هزینه این مطلب : چون امشب ۵ شنبس یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.(همون طور که میدونید هزینه هر چیزی رو باس داد ،جان داش بدید ها، نامردی نکنید، تنبلی هم همین طور)
یا علی در زیر یه عکسی میزارم براتون، رفته بودن بازار این عکسو دیدم تو در یه مغازه ای خوشم اومد و با گوشی عکس گرفتم، جالبه متنش، گفتم برا شما هم بزارم ظرر نداره…
فعلا یا علی تا مطلب بعد اگه زنده بودیم…..راستی یه خبر خوش، آموزش نوشتن کتابخونه برا قطعات رو میخوام بزارم تو سایت، و حدودا وسطای کارش هستم و آموزش طراحی PCB رو هم میخوام بزارم….
دیگه واقعا یا علی
سلام خیلی عالی بود. خدا خیرت بده. من برات خیلی دعا میکنم چون بشدت تشنه یادگیری بودم ولی مطلبی هم سطح خودم کم پیدا میکردم. خیلی خوب بود.
مهمان
ارمیا
سلام
وقت به خیر
برای مورد زیر چه راه حلی رو پیشنهاد می کنید؟
دو تا سنسور هست که می خوام هر کدوم به یه برد آردوینو وصل بشه
بعد مقادیر دو تا سنسور خونده بشه و با هم مقایسه بشه و بردی که مقدار ورودیش بیشتر بود به عنوان مستر انتخاب بشه
ممنون میشم راهنمایی کنید
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمیرچیلو
سلام
A) دو تا سنسور داری، هر سنسور به یه برد آردوینو وصل میشه؟ ( سنسور 1 به آردوینو 1 / سنسور 2 هم به آردوینو 2 وصل میشه : درست متوجه شدم؟ خب چه کاریه که از 2 تا میکرو استفاده میکنی؛ والا پرتکول ها و روش های زیادی برای ارتباط 2 تا میکرو با همدیگه هستش، ساده ترینش UART هستش ) :
1) یه برد آردوینو میشه مرجع و برد دیگه میشه پایه، که برد پایه اطلاعاتشو میفرسته برا برد مرجع و برد مرجع هم اطلاعات سنسور خودشو هم میخونه و با اون چیزی که از برد پایه دریافت کرده مقایسه میکنه؛ که خب مثلا برد پایه، اطلاعات زمان الان رو میفرسته، برد مرجع که اطلاعات رو از برد پایه گرفت، بعد میره اطلاعات سنسور خودشو میخونه و بعد مقایسه میکنه که خب ممکنه 100ms اختلاف زمانی باشه بین محاسبه مقدار سنسور متصل به برد مرجع و پایه، که خب اگه سنسور ما، دما باشه فک نکنم این اختلاف زمانی مشکلی ایجاد کنه تو بحث مقایسه ( اینو دیگه خودتون باید ببینید که این اختلاف زمان محاسبه مقدار سنسور ها و مقایسشون اهمیت داره یا نه؛ اگه اهمیت داشت یه روش حل مشکل اینه که محاسبات بر مبنای ساعت انجام بشه که شما یه ماژول ساعت داشته باشی که بین 2 تا برد آردوینو مشترک باشه و … )؛
2) حالا ممکنه بردهای آردوینو شما به PC وصل میشن که خب کار ساده میشه، هر دو برد آردوینو اطلاعاتشونو به PC میفرستن و اونجا یه نرم افزار تحت ویندوز طراحی میکنید که اطلاعات رو میگیره و مقایسه میکنه و ایجاد نمودار و کلی کار دیگه
3) اگه میکرو ها به صورت بیسیم قراره به هم وصل بشن که از طریق اینترنت ( ماژول های GPRS ) و ارتباط رادیویی، بلوتوث وایفای و … با هم ارتباط برقرار میکنن؛ اگه هم میکرو ها سیمی قراره به هم وصل بشن که خب پروتکول های زیادی هستش و همونطور که گفتم یکی از ساده ترین هاشون هم UART هستش.
B) حالا اگه منظورت اینه که 2 تا سنسور داری و 1 میکرو : خب مقدار سنسور ها رو میخونی و مقایسه میکنی دیگه، کار سختی نی که.
مهمان
ارمیا
ممنون
منظورم حالت A بود
باید دو تا برد همزمان کار کنن که اگه یکی مشکلی براش پیش اومد دومی وارد مدار بشه
مهمان
زهرا
سلام من میخام از اون دوتا پایه i2c، ADCبگیرم میشه بپرسم چطور میتونم بجای A4,A5 از پایه های دیگه برای اتصال I2C استفاده کرد.
در حالتی که میکرو مورد نظر ATxmega باشه این ارتباط به چه صورتی هستش. به طور مثال ATxmega128A1U چهار TWI روی پورتهای مختلف داره.
مهمان
عرفان جهانشاهلو
من هر چی گشتم چیزی پیدا نکردم. چطور میشه دو تا سنسور رو که از I2C استفاده میکنن راه اندازی کرد با یک میکرو (آردینو). تا جایی که میدونم باید از ارتباط نرم افزاری برای چند تا سنسور و سخت افزاری برای یکیش(تقریبا مثل software serial و همون پایه rx و tx یا 0 و 1 آردینو) .
مشاهده پاسخ ها(4)
نویسنده این مطلب
مهدی دمیرچیلو
چرا مطلب تو نت هس، کم هم نی؛ شما اینو ( connect 2 i2c devices to arduino ) سرچ کنید، قطعا مطالب زیادی وجود داره؛ من حقیقتا حوصله ندارم یه مطلب در این باره بنویسم، دلم میخواد ولی…
نمونش این لینک : Connecting multiple I2C device on Arduino Uno R3
مهمان
عرفان جهانشاهلو
خیلی ممنون. واقعا سایتی به تکمیلی مثل سایت شما ندیدم.
مهمان
عرفان جهانشاهلو
حالا که فهمیدم توضیحی میدم تا دوستان دیگه خیلی نگردن . همه دستگاه ها رو و پین های I2C شون رو به هم وصل میکنیم و به آردینو وصل میکنیم. با برنامه i2c_scanner اسکن میکنیم و تمام کد هاشون رو بدست میاریم و طبق لینک برنامه اش رو مینیویسیم و بجای DEV_ID2 و DEV_ID کد دستگاه هارو میزاریم.
مهمان
محسن
دمتون گرم
مهمان
محمد
منم مثل خودت آقا مهدی بچه حزب اللهی ام و افتخارمه که اینطوری هستم منم مثل خودت علاقه مند به رباتیک و …(الان دیگه کم و بیش شغل دومم هم شده) خلاصه خیلی دوستت دارم خیلی داری زحمت میکشی تو اشتراک دانش و کارات. ممنون
مهمان
محمد
سلام. از یک آردوینو مگا به عنوان مستر و چند آردوینو uno به عنوان slave استفاده کردم تا مقدار آنالوگ خوانده شده رو انتقال بدم به مستر. یعنی مستر اینجا گیرنده و اسلیو فرستنده است. موقعی که پاور یکی از اسلیوها رو قطع می کنم، متسر هنگ میکنه و دیگه اطلاعات رو نمی خونه. یعنی توی سریال مانیتور دیگه اطلاعاتی نمایش داده نمیشه و قفل میکنه. مشکل از کجاست و راه حلی براش دارین؟ چون پروتکل I2C یه شبکه هست و اگه قرار باشه با از کار افتادن یکی از نودها کل شبکه مختل بشه نمیشه ازش استفاده کرد…
در ضمن در آردوینو مگا مقاومت پول آپ داخلی برای I2C قرار داده شده، اما من برای اطمینان خارجی 4.7 کیلو هم برای هر دو خط sda , scl هم گذاشتم . در هر دو صورت فرقی نکرد و این هنگ بودن اتفاق می افتاد.
مهمان
علی
سلام دوستان لطفا راهنمایی کنید .اگر در مثال 4 من بخواهم چند متغیر از نوع int را از طریق slave به mater بفرستم برنامه را باید چگونه بنویسم یعنی مستر علاوه بر ارسال دیتا گیرنده دیتا نیز باشد.
مهمان
mahdi
سلام
ممنون از مطالب مفیدتون.راجع به قسمتی که در مورد متغیر stop گفته بودید
“Stop : تابع بالا مقادیر زیر رو میتونه در این متغییر قرار بده(که اگه تابع بالا کارش رو درست انجام بده عدد ۰ رو در متغییر stop ذخیره میکنه و اگه نتونه بسته به خطای رخ داده یکی از اعداد زیر رو در این متغییر ذخیره میکنه) :
۰ : قطع ارتباط با موفقیت انجام شده.
۱ : دیتا در بافر ارسال وجود دارد.
۲ : گرفته NACK در آدرس ارسالی.
۳ : گرفته NACK در دیتای ارسالی
۴ : ارور ها و خطاهای دیگه.”
stop یک ورودی هست و اگر 0 باشه باس آزاد میشه و اگر 1 باشه یه restart ارسال میشه.
مهمان
مهدی
سلام
ممنون از زحمات شما
آقا یه سوال
اگر بخام یکسری پکت از نوع هگز از طریق i2c بین دوتا آردیونو انو و نانو در ارتباط بزارم (هم از طرف مستر به اسلیو هم برعکس) دقیقا باید چجوری متغیر هارو تعریف کنم ؟
اینم بگم هگز از هردو دستگاه توسط پورت سریال حقیقی خونده میشه
مهمان
امین
سلام. برای اینکه با آردوینو اسلیو دیتا از کاربر بگیریم و هر زمان که کاربر دیتا را وارد کرد برای مستر به منظور ذخیره سازی و استفاده در برنامه اصلی ارسال کنیم ، چه راه کاری هست؟ یعنی اسلیو چطور به مستر بگه که میخواد دیتا بفرسته و مستر همون موقع بره دیتا را بخونه که ذخیره کنیم؟ با تشکر
مهمان
ناشناس
آخه آدم میاد چیزی نگه،راهشو بکشه بره ولی …
یکم خجالتم خوب چیزیه، از میکرو کنترلر به خامنه ای و قدس و کعبه چه مربوطه؟
آوردی درست گذاشتی وسط مطلب، حتما فکر میکنی مثلا خیلی آدم درست حسابی هم هستی!
برو بشین یه گوشه خلوت، فقط نیم ساعت به خودت فکر کن…
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمیرچیلو
آخه الزامی نی که سایت الکترونیکی مطلب متفرقه نزاره – در ضمن اینی که میبینید سایت شخصی هستش – باز انجمن بود، اون وقت یه حرفی –
من علاقه دارم در مطالب الکترونیکیم – حدبثی – مطلبی داستانی چیز جالی پیدا کردم بزارم، حالا باید به امثال مثل شما توضیح بدم که چرا تو سایت شخصی خودم مطالبی از امام خامنه ای گزاشتم توضیح بدم؟
حالا تو عکس این مطلب رهبر چی گفته؟ یه حرفی که آمریکایی ها زمان توافق برجام به بعضیا که میدونید میگفتن …. دولت هم به جماعت انقلابی میگفت تندرو – که بعد رهبری اومد پاسخ داد – یا مثل اون درس مذاکره گرفتن از کربلا که بعد رهبری اومد پاسخ روحانی رو داد و…. – اینا رو میزارم تا ملت آگاه بشن –
اگه شما اصل داستان مشکل دارید و حرف حق میبینید قابل قبول نی براتون و فشار میاد بهتون که مشکل شماس و به من مربوط نی
اگه هم فقط مشکلتون اینه که سایت الکترونیکی چرا مطلب غیر الکترونیکی گزاشته میشه که میدونم 100% مشکلتون همینه! که جوابتون رو قبلتر دادم- سایت شخصی هستش – به امثال شما باید توضیح بدم که چرا تو سایت شخصی خودم همچین مطلبی گزاشتم؟
موفق باشید
مهمان
#AghaMahdi79
سایت خودشه دلش میخاد
این همه مطالب زیبا و کاربردی گزاشته اون وسط هم 2 تا مطالب خارج الکترونیک گذاشته درباره عقایدش
منم مخالف مطالبش هستم ولی ب خودم اجازه نمیدم چیزی بهشون بگم
مهمان
رسول
سلام ببخشید من میخوام از اردینو به عنوان Master و ازavrبه عنوان Slave استفاده کنم میشه کمکم کنید
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمیرچیلو
سلام-جفتشون avr هستن و فقط نوع میکرو فرق داره و کتابخونه هایی که داری استفاده میکنی – لذا تو سخت افزار مشکلی نداری – میمونه کدنویسی – که یه مطلب درباره i2c تو سایت هستش چند تا فایل آموزش i2c ( خود پروتکول ) هستش تو اون مطلب – اینو میخونی – رو هر دو تا کتابخونه i2c آردوینو و میکرو avr ( حالا کدویژن یا اتمل استدیو یا …) بعد… – حقیقتا من وقتشو ندارم.
مهمان
فرشته
ببخشید وقتی کد های مستر و اسلیو (کدهای همین صفحه) رو در محیط پروتئوس ران میکنم ، فقط یکبار داده رو میفرسته و بعد اون اسلیو 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
……………..
مهمان
علی
سلام ببخشید دوباره مزاحم شدم
چطوری باید Reapeted START ذر آردوینو انجام داد؟؟؟؟
مهمان
Master
مقاومت پول اپ چند اهم باید باشه
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمیرچیلو
من 10 کیلو میزارم.
مهمان
Master
چطوری تو اسلیو میشه فهمید که مستر چند بایت از ما خواسته؟
مهمان
Master
سلام داداش فرض میکیم که دستگاه مستر requestFrom رو فرستاد به اسلیو اونوقت از کجا باس فهمید که این دیتایی که مستر ازمون خواسته چند بایت بوده؟
کلا میگم چه تابعی برای رسیدن به تعداد بایت های requestFrom در اسلیو وجود داره؟
مهمان
Abbas
سلام.
آقا آرایه من کدی ۲۰ بخشی هست که تو هر بخش مفداری قرار گرفته و من این آرایه رو به صورت زیر دارم و برای ارسال خطا میگره
byte data[20]
مهمان
Abbas
سلام.
داش مهدی من میخوام یه آرایه ۲۰ پارمتری ارسال کنم اما تو کد نمیتونم این کار رو کنم و خطا میگره
مثلا:
byte dataa[20];
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمرچیلو
سلام
همین کدت رو من تست کردم خطا نداد آردوینو
مهمان
Abbas
سمت گیرنده.منون بابت پاسخ های مفیدت.
مهمان
حسینی
سلام من سیم بندی i2cانجام دادم (sda به sda)
(scl به scl )
(gndبه gnd)
هر دوتا بردمم به لپ تاپ وصله البته اینم بگم که یه بردم مگا2560 هستش و یه برد دیگم یونو
کدها رو هم مطابق کد پروژه 1 شما اپلود کردم اما توی سریال مانیتور چیزی مشاهده نمیکنم
میشه راهنمایی کنید ؟؟؟
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمرچیلو
سلام
پایه های i2c تو مگا و یونو تو یه مکان نیستن – میدونی که…
مقاومت پول آپ برا پایه های دیتا و کلاک هم باید قرار بدی
مطمئن باش که 2 برنامه رو در دو میکرو ریختی و یه برنامه رو در دو میکرو نریختی
مهمان
احسان
جناب فک کنم شما از اون حزب الله ی های حال بهم زن هستید…
واقعا؟؟؟؟ نوشتی برای روح شهدا صلوات بفرستین. واقعا؟؟ بابا مردم میخندن بهت. حال مردم از کسایی که طرفداریشو میکنی بهم میخوره. آدمایی که به اسم دین فقط به فکر جیب خودشونن. از رهبرت خامنه ای بگیر تا همه ی سپاهی ها و بسیجی ها…. دیگه فقط مونده بود بگی که برای سلامتی رهبر صلوات. الهم…
واقعا که…
ولی وطالبتون خوب بود. ممنون واسه راهنماییا.
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمرچیلو
سلام
خدا رو شکر که مطلب برات مفید بود داش
حالا ما مفید باشیم برای جامعه و شما دوستان، حالا شما هر چی دوست داری نثار ما کن، حال بهم زن و هر چی دوست داری.
آیا نوشتن متن زیر به عنوان هزینه مطلب کار اشتباهی هستش؟ یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.
آیا این افراد دزد و اخلتلاس گر هستن/؟ آیا از این افراد نباید تقدیر بشه؟ آیا یه صلوات و فاتحه چیز زیادی هستش برای تشکر ازشون؟
پسر خوب این شهدا اگه نبودن که من و تو الان اینجا نبودیم تو این وضعیت و امنتیت نبودیم که داش من.(جون خیلی عزیزه و هر کسی تمام زندگیش رو ول نمیکنه بره سمت مرگ)
حال مردم از شهدا بهم میخوره؟ملت عاشق شهادت و شهدا هستن چی چی میگی تو.
خب من میگم شهدا چه ربطی داره به حروم خورها؟ مسئولینی که پول بیت المال رو عین سگ دارن میخورن چه ربطی به شهدا دارن آخه
وگرنه منم حالم از دزد ها و حروم خور ها بهم میخوره، نه تنها من بلکه تمام مردم ایران.
متاسفانه مسئولین فاسد تو هر رده ای کم نداریم ولی دیگه خداییش خیلی نامردی هستش که بخوای شهدا رو فاسد و اخلاس گر بدونی و با جمله من که گفتم برا شادی روحشون صلوات و فاتحه بفرستید داری مخالفت میکنی
====================
مهمان
سعید
مهدی جان خدایی دمت گرم. راستی عکس بالا رو گذاشتم رو صفحه دسکتاپم. این عالم فانی …
مهمان
حمید
خسته نباشی….آقا مهدی یه دونه ای
مهمان
علیرضا
با عرض سلام خسته نباشید.
تشکر میکنم بابت مطالب بسیار مفید سایت تون.
مهمان
احسان
درود فراوان
تشکر بابت سایت بسیار عالیتون که واقعا هیچ جای حرفی نداره..
دوتا سوال داشتم:1-اتصال ماژول اثرانگشت و همچنین برنامه نویسی آن با آردوینو به چه شکل هست
2- ماژول وایرلس هم میخواستم بدونم به چه شکل متصل و برنامه نویسی میشه(آردوینو)
با تشکر از شما
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمرچیلو
سلام
میخوام این قطعات رو راه اندازی کنم ولی وقت ندارم شاید بره برا ماه بعد
ولی اگه پروژه پایانی تون هستش و یا لازم دارید، میل بزنید بهم.
مهمان
ابوالفضل
مهدی جان اگه میشه یه مطلب درباره وصل کردن ماژولESP8266 به اردوینو و کتابخونش بذار.مرسی
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمرچیلو
تو نت بگردی به راحتی کتاب خونش رو پیدا میکنی و اموزشش رو هم همین طور
من در گیر مانیتورینگ هستم
مهمان
سهند
آقا مهدی خداقوت.چند دفعه سایتتون رو دیدم دیگه حیفم اومد نظر ندم و ازتون تشکر نکنم.بی نهایت سایت مفیدی دارید.
نویسنده سایت
رامین اصیلی
سلام
خیلیییییییییییییییی عالییییییییییییییییی بود
مرسی آقا مهدی
مشاهده پاسخ ها(2)
نویسنده این مطلب
مهدی دمرچیلو
سلام
چطوری بی معرفت
از این طرفا
مهمان
علی
دوست عزیز خدا خیرت بده بخاطر سایت خیلی خوبت
در پناه قرآن و اهل بیت موفق باشی
مهمان
سلام خیلی عالی بود. خدا خیرت بده. من برات خیلی دعا میکنم چون بشدت تشنه یادگیری بودم ولی مطلبی هم سطح خودم کم پیدا میکردم. خیلی خوب بود.
مهمان
سلام
وقت به خیر
برای مورد زیر چه راه حلی رو پیشنهاد می کنید؟
دو تا سنسور هست که می خوام هر کدوم به یه برد آردوینو وصل بشه
بعد مقادیر دو تا سنسور خونده بشه و با هم مقایسه بشه و بردی که مقدار ورودیش بیشتر بود به عنوان مستر انتخاب بشه
ممنون میشم راهنمایی کنید
نویسنده این مطلب
سلام
A) دو تا سنسور داری، هر سنسور به یه برد آردوینو وصل میشه؟ ( سنسور 1 به آردوینو 1 / سنسور 2 هم به آردوینو 2 وصل میشه : درست متوجه شدم؟ خب چه کاریه که از 2 تا میکرو استفاده میکنی؛ والا پرتکول ها و روش های زیادی برای ارتباط 2 تا میکرو با همدیگه هستش، ساده ترینش UART هستش ) :
1) یه برد آردوینو میشه مرجع و برد دیگه میشه پایه، که برد پایه اطلاعاتشو میفرسته برا برد مرجع و برد مرجع هم اطلاعات سنسور خودشو هم میخونه و با اون چیزی که از برد پایه دریافت کرده مقایسه میکنه؛ که خب مثلا برد پایه، اطلاعات زمان الان رو میفرسته، برد مرجع که اطلاعات رو از برد پایه گرفت، بعد میره اطلاعات سنسور خودشو میخونه و بعد مقایسه میکنه که خب ممکنه 100ms اختلاف زمانی باشه بین محاسبه مقدار سنسور متصل به برد مرجع و پایه، که خب اگه سنسور ما، دما باشه فک نکنم این اختلاف زمانی مشکلی ایجاد کنه تو بحث مقایسه ( اینو دیگه خودتون باید ببینید که این اختلاف زمان محاسبه مقدار سنسور ها و مقایسشون اهمیت داره یا نه؛ اگه اهمیت داشت یه روش حل مشکل اینه که محاسبات بر مبنای ساعت انجام بشه که شما یه ماژول ساعت داشته باشی که بین 2 تا برد آردوینو مشترک باشه و … )؛
2) حالا ممکنه بردهای آردوینو شما به PC وصل میشن که خب کار ساده میشه، هر دو برد آردوینو اطلاعاتشونو به PC میفرستن و اونجا یه نرم افزار تحت ویندوز طراحی میکنید که اطلاعات رو میگیره و مقایسه میکنه و ایجاد نمودار و کلی کار دیگه
3) اگه میکرو ها به صورت بیسیم قراره به هم وصل بشن که از طریق اینترنت ( ماژول های GPRS ) و ارتباط رادیویی، بلوتوث وایفای و … با هم ارتباط برقرار میکنن؛ اگه هم میکرو ها سیمی قراره به هم وصل بشن که خب پروتکول های زیادی هستش و همونطور که گفتم یکی از ساده ترین هاشون هم UART هستش.
B) حالا اگه منظورت اینه که 2 تا سنسور داری و 1 میکرو : خب مقدار سنسور ها رو میخونی و مقایسه میکنی دیگه، کار سختی نی که.
مهمان
ممنون
منظورم حالت A بود
باید دو تا برد همزمان کار کنن که اگه یکی مشکلی براش پیش اومد دومی وارد مدار بشه
مهمان
سلام من میخام از اون دوتا پایه i2c، ADCبگیرم میشه بپرسم چطور میتونم بجای A4,A5 از پایه های دیگه برای اتصال I2C استفاده کرد.
نویسنده این مطلب
سلام – درباره i2c نرم افزار تحقیق کنید.
Arduino Software I2C
مهمان
در حالتی که میکرو مورد نظر ATxmega باشه این ارتباط به چه صورتی هستش. به طور مثال ATxmega128A1U چهار TWI روی پورتهای مختلف داره.
مهمان
من هر چی گشتم چیزی پیدا نکردم. چطور میشه دو تا سنسور رو که از I2C استفاده میکنن راه اندازی کرد با یک میکرو (آردینو). تا جایی که میدونم باید از ارتباط نرم افزاری برای چند تا سنسور و سخت افزاری برای یکیش(تقریبا مثل software serial و همون پایه rx و tx یا 0 و 1 آردینو) .
نویسنده این مطلب
چرا مطلب تو نت هس، کم هم نی؛ شما اینو ( connect 2 i2c devices to arduino ) سرچ کنید، قطعا مطالب زیادی وجود داره؛ من حقیقتا حوصله ندارم یه مطلب در این باره بنویسم، دلم میخواد ولی…

نمونش این لینک : Connecting multiple I2C device on Arduino Uno R3
مهمان
خیلی ممنون. واقعا سایتی به تکمیلی مثل سایت شما ندیدم.
مهمان
حالا که فهمیدم توضیحی میدم تا دوستان دیگه خیلی نگردن
. همه دستگاه ها رو و پین های I2C شون رو به هم وصل میکنیم و به آردینو وصل میکنیم. با برنامه i2c_scanner اسکن میکنیم و تمام کد هاشون رو بدست میاریم و طبق لینک برنامه اش رو مینیویسیم و بجای DEV_ID2 و DEV_ID کد دستگاه هارو میزاریم.
مهمان
دمتون گرم
مهمان
منم مثل خودت آقا مهدی بچه حزب اللهی ام و افتخارمه که اینطوری هستم منم مثل خودت علاقه مند به رباتیک و …(الان دیگه کم و بیش شغل دومم هم شده) خلاصه خیلی دوستت دارم خیلی داری زحمت میکشی تو اشتراک دانش و کارات. ممنون
مهمان
سلام. از یک آردوینو مگا به عنوان مستر و چند آردوینو uno به عنوان slave استفاده کردم تا مقدار آنالوگ خوانده شده رو انتقال بدم به مستر. یعنی مستر اینجا گیرنده و اسلیو فرستنده است. موقعی که پاور یکی از اسلیوها رو قطع می کنم، متسر هنگ میکنه و دیگه اطلاعات رو نمی خونه. یعنی توی سریال مانیتور دیگه اطلاعاتی نمایش داده نمیشه و قفل میکنه. مشکل از کجاست و راه حلی براش دارین؟ چون پروتکل I2C یه شبکه هست و اگه قرار باشه با از کار افتادن یکی از نودها کل شبکه مختل بشه نمیشه ازش استفاده کرد…
در ضمن در آردوینو مگا مقاومت پول آپ داخلی برای I2C قرار داده شده، اما من برای اطمینان خارجی 4.7 کیلو هم برای هر دو خط sda , scl هم گذاشتم . در هر دو صورت فرقی نکرد و این هنگ بودن اتفاق می افتاد.
مهمان
سلام دوستان لطفا راهنمایی کنید .اگر در مثال 4 من بخواهم چند متغیر از نوع int را از طریق slave به mater بفرستم برنامه را باید چگونه بنویسم یعنی مستر علاوه بر ارسال دیتا گیرنده دیتا نیز باشد.
مهمان
سلام
ممنون از مطالب مفیدتون.راجع به قسمتی که در مورد متغیر stop گفته بودید
“Stop : تابع بالا مقادیر زیر رو میتونه در این متغییر قرار بده(که اگه تابع بالا کارش رو درست انجام بده عدد ۰ رو در متغییر stop ذخیره میکنه و اگه نتونه بسته به خطای رخ داده یکی از اعداد زیر رو در این متغییر ذخیره میکنه) :
۰ : قطع ارتباط با موفقیت انجام شده.
۱ : دیتا در بافر ارسال وجود دارد.
۲ : گرفته NACK در آدرس ارسالی.
۳ : گرفته NACK در دیتای ارسالی
۴ : ارور ها و خطاهای دیگه.”
stop یک ورودی هست و اگر 0 باشه باس آزاد میشه و اگر 1 باشه یه restart ارسال میشه.
مهمان
سلام
ممنون از زحمات شما
آقا یه سوال
اگر بخام یکسری پکت از نوع هگز از طریق i2c بین دوتا آردیونو انو و نانو در ارتباط بزارم (هم از طرف مستر به اسلیو هم برعکس) دقیقا باید چجوری متغیر هارو تعریف کنم ؟
اینم بگم هگز از هردو دستگاه توسط پورت سریال حقیقی خونده میشه
مهمان
سلام. برای اینکه با آردوینو اسلیو دیتا از کاربر بگیریم و هر زمان که کاربر دیتا را وارد کرد برای مستر به منظور ذخیره سازی و استفاده در برنامه اصلی ارسال کنیم ، چه راه کاری هست؟ یعنی اسلیو چطور به مستر بگه که میخواد دیتا بفرسته و مستر همون موقع بره دیتا را بخونه که ذخیره کنیم؟ با تشکر
مهمان
آخه آدم میاد چیزی نگه،راهشو بکشه بره ولی …
یکم خجالتم خوب چیزیه، از میکرو کنترلر به خامنه ای و قدس و کعبه چه مربوطه؟
آوردی درست گذاشتی وسط مطلب، حتما فکر میکنی مثلا خیلی آدم درست حسابی هم هستی!
برو بشین یه گوشه خلوت، فقط نیم ساعت به خودت فکر کن…
نویسنده این مطلب
آخه الزامی نی که سایت الکترونیکی مطلب متفرقه نزاره – در ضمن اینی که میبینید سایت شخصی هستش – باز انجمن بود، اون وقت یه حرفی –
من علاقه دارم در مطالب الکترونیکیم – حدبثی – مطلبی داستانی چیز جالی پیدا کردم بزارم، حالا باید به امثال مثل شما توضیح بدم که چرا تو سایت شخصی خودم مطالبی از امام خامنه ای گزاشتم توضیح بدم؟
حالا تو عکس این مطلب رهبر چی گفته؟ یه حرفی که آمریکایی ها زمان توافق برجام به بعضیا که میدونید میگفتن …. دولت هم به جماعت انقلابی میگفت تندرو – که بعد رهبری اومد پاسخ داد – یا مثل اون درس مذاکره گرفتن از کربلا که بعد رهبری اومد پاسخ روحانی رو داد و…. – اینا رو میزارم تا ملت آگاه بشن –
اگه شما اصل داستان مشکل دارید و حرف حق میبینید قابل قبول نی براتون و فشار میاد بهتون که مشکل شماس و به من مربوط نی
اگه هم فقط مشکلتون اینه که سایت الکترونیکی چرا مطلب غیر الکترونیکی گزاشته میشه که میدونم 100% مشکلتون همینه! که جوابتون رو قبلتر دادم- سایت شخصی هستش – به امثال شما باید توضیح بدم که چرا تو سایت شخصی خودم همچین مطلبی گزاشتم؟
موفق باشید
مهمان
سایت خودشه دلش میخاد
این همه مطالب زیبا و کاربردی گزاشته اون وسط هم 2 تا مطالب خارج الکترونیک گذاشته درباره عقایدش
منم مخالف مطالبش هستم ولی ب خودم اجازه نمیدم چیزی بهشون بگم
مهمان
سلام ببخشید من میخوام از اردینو به عنوان Master و ازavrبه عنوان Slave استفاده کنم میشه کمکم کنید
نویسنده این مطلب
سلام-جفتشون avr هستن و فقط نوع میکرو فرق داره و کتابخونه هایی که داری استفاده میکنی – لذا تو سخت افزار مشکلی نداری – میمونه کدنویسی – که یه مطلب درباره i2c تو سایت هستش چند تا فایل آموزش i2c ( خود پروتکول ) هستش تو اون مطلب – اینو میخونی – رو هر دو تا کتابخونه i2c آردوینو و میکرو avr ( حالا کدویژن یا اتمل استدیو یا …) بعد… – حقیقتا من وقتشو ندارم.
مهمان
ببخشید وقتی کد های مستر و اسلیو (کدهای همین صفحه) رو در محیط پروتئوس ران میکنم ، فقط یکبار داده رو میفرسته و بعد اون اسلیو 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
……………..
مهمان
سلام ببخشید دوباره مزاحم شدم
چطوری باید Reapeted START ذر آردوینو انجام داد؟؟؟؟
مهمان
مقاومت پول اپ چند اهم باید باشه
نویسنده این مطلب
من 10 کیلو میزارم.
مهمان
چطوری تو اسلیو میشه فهمید که مستر چند بایت از ما خواسته؟
مهمان
سلام داداش فرض میکیم که دستگاه مستر requestFrom رو فرستاد به اسلیو اونوقت از کجا باس فهمید که این دیتایی که مستر ازمون خواسته چند بایت بوده؟
کلا میگم چه تابعی برای رسیدن به تعداد بایت های requestFrom در اسلیو وجود داره؟
مهمان
سلام.
آقا آرایه من کدی ۲۰ بخشی هست که تو هر بخش مفداری قرار گرفته و من این آرایه رو به صورت زیر دارم و برای ارسال خطا میگره
byte data[20]
مهمان
سلام.
داش مهدی من میخوام یه آرایه ۲۰ پارمتری ارسال کنم اما تو کد نمیتونم این کار رو کنم و خطا میگره
مثلا:
byte dataa[20];
نویسنده این مطلب
سلام
همین کدت رو من تست کردم خطا نداد آردوینو
مهمان
سمت گیرنده.منون بابت پاسخ های مفیدت.
مهمان
سلام من سیم بندی i2cانجام دادم (sda به sda)
(scl به scl )
(gndبه gnd)
هر دوتا بردمم به لپ تاپ وصله البته اینم بگم که یه بردم مگا2560 هستش و یه برد دیگم یونو
کدها رو هم مطابق کد پروژه 1 شما اپلود کردم اما توی سریال مانیتور چیزی مشاهده نمیکنم
میشه راهنمایی کنید ؟؟؟
نویسنده این مطلب
سلام
پایه های i2c تو مگا و یونو تو یه مکان نیستن – میدونی که…
مقاومت پول آپ برا پایه های دیتا و کلاک هم باید قرار بدی
مطمئن باش که 2 برنامه رو در دو میکرو ریختی و یه برنامه رو در دو میکرو نریختی
مهمان
جناب فک کنم شما از اون حزب الله ی های حال بهم زن هستید…
واقعا؟؟؟؟ نوشتی برای روح شهدا صلوات بفرستین. واقعا؟؟ بابا مردم میخندن بهت. حال مردم از کسایی که طرفداریشو میکنی بهم میخوره. آدمایی که به اسم دین فقط به فکر جیب خودشونن. از رهبرت خامنه ای بگیر تا همه ی سپاهی ها و بسیجی ها…. دیگه فقط مونده بود بگی که برای سلامتی رهبر صلوات. الهم…
واقعا که…
ولی وطالبتون خوب بود. ممنون واسه راهنماییا.
نویسنده این مطلب
سلام
مسئولینی که پول بیت المال رو عین سگ دارن میخورن چه ربطی به شهدا دارن آخه 
خدا رو شکر که مطلب برات مفید بود داش
حالا ما مفید باشیم برای جامعه و شما دوستان، حالا شما هر چی دوست داری نثار ما کن، حال بهم زن و هر چی دوست داری.
آیا نوشتن متن زیر به عنوان هزینه مطلب کار اشتباهی هستش؟
یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.
آیا این افراد دزد و اخلتلاس گر هستن/؟ آیا از این افراد نباید تقدیر بشه؟ آیا یه صلوات و فاتحه چیز زیادی هستش برای تشکر ازشون؟
پسر خوب این شهدا اگه نبودن که من و تو الان اینجا نبودیم تو این وضعیت و امنتیت نبودیم که داش من.(جون خیلی عزیزه و هر کسی تمام زندگیش رو ول نمیکنه بره سمت مرگ)
حال مردم از شهدا بهم میخوره؟ملت عاشق شهادت و شهدا هستن چی چی میگی تو.
خب من میگم شهدا چه ربطی داره به حروم خورها؟
وگرنه منم حالم از دزد ها و حروم خور ها بهم میخوره، نه تنها من بلکه تمام مردم ایران.
متاسفانه مسئولین فاسد تو هر رده ای کم نداریم ولی دیگه خداییش خیلی نامردی هستش که بخوای شهدا رو فاسد و اخلاس گر بدونی و با جمله من که گفتم برا شادی روحشون صلوات و فاتحه بفرستید داری مخالفت میکنی
====================
مهمان
مهدی جان خدایی دمت گرم. راستی عکس بالا رو گذاشتم رو صفحه دسکتاپم. این عالم فانی …
مهمان
خسته نباشی….آقا مهدی یه دونه ای
مهمان
با عرض سلام خسته نباشید.
تشکر میکنم بابت مطالب بسیار مفید سایت تون.
مهمان
درود فراوان
تشکر بابت سایت بسیار عالیتون که واقعا هیچ جای حرفی نداره..
دوتا سوال داشتم:1-اتصال ماژول اثرانگشت و همچنین برنامه نویسی آن با آردوینو به چه شکل هست
2- ماژول وایرلس هم میخواستم بدونم به چه شکل متصل و برنامه نویسی میشه(آردوینو)
با تشکر از شما
نویسنده این مطلب
سلام
میخوام این قطعات رو راه اندازی کنم ولی وقت ندارم شاید بره برا ماه بعد
ولی اگه پروژه پایانی تون هستش و یا لازم دارید، میل بزنید بهم.
مهمان
مهدی جان اگه میشه یه مطلب درباره وصل کردن ماژولESP8266 به اردوینو و کتابخونش بذار.مرسی
نویسنده این مطلب
تو نت بگردی به راحتی کتاب خونش رو پیدا میکنی و اموزشش رو هم همین طور
من در گیر مانیتورینگ هستم
مهمان
آقا مهدی خداقوت.چند دفعه سایتتون رو دیدم دیگه حیفم اومد نظر ندم و ازتون تشکر نکنم.بی نهایت سایت مفیدی دارید.
نویسنده سایت
سلام
خیلیییییییییییییییی عالییییییییییییییییی بود
مرسی آقا مهدی
نویسنده این مطلب
سلام
چطوری بی معرفت
از این طرفا
مهمان
دوست عزیز خدا خیرت بده بخاطر سایت خیلی خوبت
در پناه قرآن و اهل بیت موفق باشی