به نام خدا : این مطلب رو بنا به درخواست برادر “حامد کاظمی” مینویسم، تو این مطلب از سری مطالب آموزش آردوینو میخوایم درباره ارتباط دو سیمه سخت افزاری و نرم افزاری توضیح بدم(حالا این که نرم افزاری رو TWI میگفتن یا سخت افزاری رو I2C میگفتن یا برعکس دقیقا خاطرم نیست، اگه کسی میدونه بگه.) و پروژه آردوینو هم یه چند تایی میزارم(تعدادش زیاده نگران نباشید، از تعداد پروژه های خود سایت آردوینو هم بیشتره )، در ضمن فرا رسیدن ایام فاطمیه رو هم تسلیت میگم خدمت شما دوستان گلم.
، راستی سلام داشای گلم
امان از فراموشی
داستان : خب داستانی به ذهنم نمیرسه بگم ، عوضش یه سخن از حضرت آقا میزارم تا دل بچه حزب اللهی ها حال بیاد
، ایشاالله چشم همه بدخواه های ملت ایران کور بشه که چش دیدن پیشرفت و عزت و وحدت و… ایران رو ندارن، مخصوصا این انگلیسی های نفله روباه صفت پدرسوخته :-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 ها میتونیم تبادل داده داشته باشیم باهاشون و کنترلشون کنیم، که چیزی که تو این پروتکول هستش اینه که :
توضیح پایه های i2c / twi
خب این پروتکول دو تا پایه به نام های SDA و SCL داره که در زیر یه کوچولو توضیح میدم دربارشون :
SDA : دیتا رو این پایه قرار میگیره.
SCL : کلاک روی این پایه قرار میگیره.
چطور میتونیم یه متغییر رو به عنوان پارامتر به تابع بدیم و بعد تابع داخلش دیتا ذخیره کنه؟
چون تو کدنویسی ها و تو توابع بالا که توضیح دادم یه متغییر به تابع میدادیم به عنوان پارامتر و بعد تابع اونو ویرایش میکرد، که این شاید براتون عحیب باشه که این موضوع مربوطه به بحث انواع ارجاع در برنامه نویسی C که اینو بعدا تو یه مطلب جدا توضیح میدم چون خودش یه مطلب هستش، حالا عنوان موضوش رو گفتم اگه علاقه دارید و یا عجله میتونید تو نت بسرچید و مطالب و آموزش های موجود رو بخونید وکه انسافا مطالب بدی هم کم نیست تو نت.
1 |
#include <Wire.h> |
1 2 |
Wire.begin() Wire.begin(address) |
1 |
Wire.available() |
1 |
Wire.read() |
1 2 3 |
Wire.write(value) Wire.write(string) Wire.write(data, length) |
نوشتن دیتا :
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
خب در زیر کلی پروژه میزارم براتون که همه رو نوشتم و تست هم کردم، در هر موضوعی پروژه گزاشتم، توابع بالا رو عملکردشون رو بخونید و کد های زیر رو ببینید و متوجه میشید برنامه ها رو خودتون و لذا من توضیح خاصی ندادم برا پروژه ها، ولی اگه جایی نیاز به توضیح داشتین بگین تا توضیح بیشتر بدم.
شماتیک تمام پروژه های زیر :
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); } |
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 } } |
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); } |
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 } |
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 } |
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 } |
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); } |
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++; } |
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); } |
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 } |
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); } |
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; } |
لینک های مفید :
خب امیدوارم از این مطلب خوشتون اومده باشه و براتون مفید بوده باشه….اگه جایی رو اشتباه گفتم/ بد گفتم/کم توضیح دادم و… لطفا ذکر کنید.
هزینه این مطلب : چون امشب ۵ شنبس یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.(همون طور که میدونید هزینه هر چیزی رو باس داد ،جان داش بدید ها، نامردی نکنید، تنبلی هم همین طور)
یا علی در زیر یه عکسی میزارم براتون، رفته بودن بازار این عکسو دیدم تو در یه مغازه ای خوشم اومد و با گوشی عکس گرفتم، جالبه متنش، گفتم برا شما هم بزارم ظرر نداره…
فعلا یا علی تا مطلب بعد اگه زنده بودیم…..راستی یه خبر خوش، آموزش نوشتن کتابخونه برا قطعات رو میخوام بزارم تو سایت، و حدودا وسطای کارش هستم و آموزش طراحی PCB رو هم میخوام بزارم….
دیگه واقعا یا علی
جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. انشاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)
فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :
1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG
و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :
1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.
فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.
جزئیات داستان رو در لینک زیر میتویند ببینید :
===
به علت اثطغبال بیش از حد دوستان از موضوع usb؛ فعلا یکم سرگرم طراحی قالب جدید سایت شدم ^_^
سلام
خیلیییییییییییییییی عالییییییییییییییییی بود
مرسی آقا مهدی
سلام
چطوری بی معرفت
از این طرفا
دوست عزیز خدا خیرت بده بخاطر سایت خیلی خوبت
در پناه قرآن و اهل بیت موفق باشی
مهدی جان اگه میشه یه مطلب درباره وصل کردن ماژولESP8266 به اردوینو و کتابخونش بذار.مرسی
تو نت بگردی به راحتی کتاب خونش رو پیدا میکنی و اموزشش رو هم همین طور
من در گیر مانیتورینگ هستم
آقا مهدی خداقوت.چند دفعه سایتتون رو دیدم دیگه حیفم اومد نظر ندم و ازتون تشکر نکنم.بی نهایت سایت مفیدی دارید.
درود فراوان
تشکر بابت سایت بسیار عالیتون که واقعا هیچ جای حرفی نداره..
دوتا سوال داشتم:1-اتصال ماژول اثرانگشت و همچنین برنامه نویسی آن با آردوینو به چه شکل هست
2- ماژول وایرلس هم میخواستم بدونم به چه شکل متصل و برنامه نویسی میشه(آردوینو)
با تشکر از شما
سلام
میخوام این قطعات رو راه اندازی کنم ولی وقت ندارم شاید بره برا ماه بعد
ولی اگه پروژه پایانی تون هستش و یا لازم دارید، میل بزنید بهم.
با عرض سلام خسته نباشید.
تشکر میکنم بابت مطالب بسیار مفید سایت تون.
خسته نباشی….آقا مهدی یه دونه ای
جناب فک کنم شما از اون حزب الله ی های حال بهم زن هستید…
واقعا؟؟؟؟ نوشتی برای روح شهدا صلوات بفرستین. واقعا؟؟ بابا مردم میخندن بهت. حال مردم از کسایی که طرفداریشو میکنی بهم میخوره. آدمایی که به اسم دین فقط به فکر جیب خودشونن. از رهبرت خامنه ای بگیر تا همه ی سپاهی ها و بسیجی ها…. دیگه فقط مونده بود بگی که برای سلامتی رهبر صلوات. الهم…
واقعا که…
ولی وطالبتون خوب بود. ممنون واسه راهنماییا.
سلام
مسئولینی که پول بیت المال رو عین سگ دارن میخورن چه ربطی به شهدا دارن آخه 
خدا رو شکر که مطلب برات مفید بود داش
حالا ما مفید باشیم برای جامعه و شما دوستان، حالا شما هر چی دوست داری نثار ما کن، حال بهم زن و هر چی دوست داری.
آیا نوشتن متن زیر به عنوان هزینه مطلب کار اشتباهی هستش؟
یه فاتحه بخونید برا اموات خودمو و خودتون، ۱ فاتحه برای شهدا و امام شهدا و ۳ تا صلوات هم برا سلامتی مدافعان حرم.
آیا این افراد دزد و اخلتلاس گر هستن/؟ آیا از این افراد نباید تقدیر بشه؟ آیا یه صلوات و فاتحه چیز زیادی هستش برای تشکر ازشون؟
پسر خوب این شهدا اگه نبودن که من و تو الان اینجا نبودیم تو این وضعیت و امنتیت نبودیم که داش من.(جون خیلی عزیزه و هر کسی تمام زندگیش رو ول نمیکنه بره سمت مرگ)
حال مردم از شهدا بهم میخوره؟ملت عاشق شهادت و شهدا هستن چی چی میگی تو.
خب من میگم شهدا چه ربطی داره به حروم خورها؟
وگرنه منم حالم از دزد ها و حروم خور ها بهم میخوره، نه تنها من بلکه تمام مردم ایران.
متاسفانه مسئولین فاسد تو هر رده ای کم نداریم ولی دیگه خداییش خیلی نامردی هستش که بخوای شهدا رو فاسد و اخلاس گر بدونی و با جمله من که گفتم برا شادی روحشون صلوات و فاتحه بفرستید داری مخالفت میکنی
====================
مهدی جان خدایی دمت گرم. راستی عکس بالا رو گذاشتم رو صفحه دسکتاپم. این عالم فانی …
سلام من سیم بندی i2cانجام دادم (sda به sda)
(scl به scl )
(gndبه gnd)
هر دوتا بردمم به لپ تاپ وصله البته اینم بگم که یه بردم مگا2560 هستش و یه برد دیگم یونو
کدها رو هم مطابق کد پروژه 1 شما اپلود کردم اما توی سریال مانیتور چیزی مشاهده نمیکنم
میشه راهنمایی کنید ؟؟؟
سلام
پایه های i2c تو مگا و یونو تو یه مکان نیستن – میدونی که…
مقاومت پول آپ برا پایه های دیتا و کلاک هم باید قرار بدی
مطمئن باش که 2 برنامه رو در دو میکرو ریختی و یه برنامه رو در دو میکرو نریختی
سلام.
داش مهدی من میخوام یه آرایه ۲۰ پارمتری ارسال کنم اما تو کد نمیتونم این کار رو کنم و خطا میگره
مثلا:
byte dataa[20];
سلام
همین کدت رو من تست کردم خطا نداد آردوینو
سمت گیرنده.منون بابت پاسخ های مفیدت.
سلام.
آقا آرایه من کدی ۲۰ بخشی هست که تو هر بخش مفداری قرار گرفته و من این آرایه رو به صورت زیر دارم و برای ارسال خطا میگره
byte data[20]
سلام داداش فرض میکیم که دستگاه مستر requestFrom رو فرستاد به اسلیو اونوقت از کجا باس فهمید که این دیتایی که مستر ازمون خواسته چند بایت بوده؟
کلا میگم چه تابعی برای رسیدن به تعداد بایت های requestFrom در اسلیو وجود داره؟
چطوری تو اسلیو میشه فهمید که مستر چند بایت از ما خواسته؟
مقاومت پول اپ چند اهم باید باشه
من 10 کیلو میزارم.
سلام ببخشید دوباره مزاحم شدم
چطوری باید Reapeted START ذر آردوینو انجام داد؟؟؟؟
ببخشید وقتی کد های مستر و اسلیو (کدهای همین صفحه) رو در محیط پروتئوس ران میکنم ، فقط یکبار داده رو میفرسته و بعد اون اسلیو 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
……………..
سلام ببخشید من میخوام از اردینو به عنوان Master و ازavrبه عنوان Slave استفاده کنم میشه کمکم کنید
سلام-جفتشون avr هستن و فقط نوع میکرو فرق داره و کتابخونه هایی که داری استفاده میکنی – لذا تو سخت افزار مشکلی نداری – میمونه کدنویسی – که یه مطلب درباره i2c تو سایت هستش چند تا فایل آموزش i2c ( خود پروتکول ) هستش تو اون مطلب – اینو میخونی – رو هر دو تا کتابخونه i2c آردوینو و میکرو avr ( حالا کدویژن یا اتمل استدیو یا …) بعد… – حقیقتا من وقتشو ندارم.