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

آموزش جامع آردوینو جلسه 5

166

به نام خدا

آموزش جامع آردوینو جلسه 5 : سلام دوباره خدمت شما بزرگواران، تو این مطلب از آموزش آردینو که جلسه 5شه میخوام برم سراغ توضیح توابع Serial.read و Serial.readBytes و Serial.readBytesUntil که توابع پروتکول ارتباط سریال در آردینو هستن؛ تو این مطلب تا دلتون بخواد مثال و پروژه آردینو گزاشتم تا دو هزاریتون قشنگ بیوفته.  heart
آموزش جامع آردوینو جلسه 5

آموزش آردینو

خوب بریم سراغ ادامه توضیح توابع ارتباط سریال در آردوینو…این مطلب هم طبق معمول طولانی شد لذا سعی کنید با حوصله بخونید چون من با حوصله نوشتم(چه ربطی داشت crazy )

Serial.read
Serial.read : این تابع کارش دریافت اطلاعات هستش ، اطلاعاتی که توسط فرستنده ارسال میشه ، در گرنده توسط این تابع اطلاعات دریافت میشه.
در زیر یه مثال از کاربرد این تابع میتونید ببینید:
اجرای پروژه : شما میتونید این کد ها رو در نرم افزار آردوینو بریزید و رو بردتون کامپایلش کنید و در نرم افزار آردوینو از منوی tools گزینه serial monitor رو انتخاب گنید تا پنجره ارتباط سریال باز بشه و شروع کنید به تست کردن پروژه ......اینو بعدا توضیح میدم کامل(هر چند که همش رو همین الان گفتم و چیزی غیر از این نداره) ، الان سریع گفتم  شاید کسی بخواد پروژه رو تست کنه و عملکردش رو ببینیه و مثل ما کم طاقت هستش smile

توجه(مهم) : خروجی تابع Serial.read اطلاعات دریافت شده هستش ولی وقتی دیتایی موجود نباشه تابع Serial.read مقدار "1-" رو بر میگردونه.(برای اطمینان میتونید برنامه زیر رو تست کنید)

خط 12 : وقتی دیتایی دریافت بشه توسط تابع Serial.read ؛ این مقدار یه چیزی بین 0 تا 255 هستش ، این دیتایی که ما دریافت میکنیم در واقع همون کد اسکی اون کاراکتر دریافت شده هستش(به هر کاراکتری یه عدد انتساب دادن به نام کد اسکی، اگه خواستید میتونید مطلب مقابل رو بخونید: اسکی (ASCII) چیست؟ )، خوب به این دلیل که کد اسکی ها از صفر شروع میشن تا تقریبا 255 ، لذا مقدار my_data همیشه بزرگتر از صفر هستش >>> وقتی دیتایی ارسال بشه این if توی خط 12 کد های داخلش اجرا میشن.
خط 17 : وقتی دیتایی ارسال نشه ، تابع Serial.read مقدار "1-" رو برمیگردونه(یه مقداری به ما میده ، توجه داشته باشید حتی وقتی دیتایی ارسال نشه تابع Serial.read یه مقداری رو برمیگردونه) ؛ لذا زمان هایی که دیتایی برا دریافت کردن وجود نداره تابع Serial.read  مقدار منفی 1 رو بر میگردونه. و اگه پروژه رو اجرا کنید و این خط رو از حالت توضیحات در بیارید میبینید که هی و هی و هی "!!!Hang" رو نشون میده یعنی برنامه هنگ کرده و رفته تو حلقه بی نهایت ارسال و دریافت دیتا.

Serial.readBytes
Serial.readBytes : این تابع به صورت زیر هستش ، که مثل تابع Serial.read هستش کارش ، با این تفاوت که اطلاعات رو در آرایه buffer ذخیره میکنه و تعداد بایت دریافتی رو هم میشه تعیین کرد.
buffer : یه آرایه از نوع char یا byte که اطلاعات دریافتی درونش ذخیره میشه
length : یه متغیر از نوع int  که کارش تعیین تعداد بایت مورد نظر که باس دریافت بشه و در آرایه ذخیره بشه.

توجه(مهم) : تو کد زیر اطلاعات دریافت شده در my_data و تعداد بایت دریافت شده در data ذخیره میشن.

مثال زیر رو ببینید تا عملکرد این تابع رو قشنگ قشنگ متوجه بشید heart

خط 1 : تعریف یه آرایه که 3 خونه داره ، اطلاعات قراره تو این آرایه ذخیره بشن ( اگه نمیدونید آرایه چیه تو گوگل بسرچید "انواع متغیر و آرایه در c" ؛ فعالا حال توضیح دادنش رو ندارم ، جاش هم نیست بخوام این جا توضیحش بدم )
خط 6 : صد دفه تا حالا گفتم کار اینو  blum
خط 11 : اگه یادتون باشه(که بعید میدونم) تابع Serial.available کار این بود که اگه اطلاعاتی قابل دریافت باشه به ما اعلام میکرد و میتونست تا 64 بایت دیتا رو داخل خودش نگه داره و نزاره که از بین برن؛ حالا تو شرط if اومدیم گفتیم اگه اطلاعاتی قابل دریافت هستش (حداقل اطلاعات قابل دریافت 1 بایت باس باشه یا بزرگتر از 0 باشه ^_^) اون وقت بیا و کد های داخل if رو اجرا کن.
خط 13 : توسط این تابع 3 بایت دیتا دریافت میکنیم ، و اون متغیر number هم تعداد بایت دریافت شده توسط تابع Serial.readBytes هستش.(در "توجه" بالا گفتم که خروجی (چیزی که برمیگردونه) تابع Serial.readBytes تعداد بایت هایی که دریافت کرده هستش)
خط 17 و 18 : تو این دو خط اومدیم دیتا هایی رو که دریافت کردیم رو نشون میدیم ، البته میتونستیم به صورت زیر هم بنویسیم

فقط تنها مشکلی که پیش میومد این بود که تو دفعه اول دریافت و نمایش دیتا پروژه خوب کار میکنه(مثلا فک کنید دفه ی اول 3 بایت در my_data  ذخیره میشه) ولی از دفه دوم به بعد(اگه تعداد بایت ذخیره شده در my_data مثلا بشه 2 تا) میاد و 2 بایت دریافت کرده(2 بایت جدید) رو نشون میده اما بایت 3 ام (که از دفعه ی اول مونه) رو هم نشون میده.
خط 20 : رفتنن به خط بعد. shock >>>> laugh

توجه(مهم) : تو پروژه بالا از تابع Serial.available استفاده کردیم ، میتونیم پروژه ای بنویسیم که از تابع Serial.available استفاده نکنیم و آردوینو هم هنگ نکنه(نره تو حلقه بی نهایت ارسال دیتا)، اگه یادتون  باشه گفتم که تابع Serial.readBytes تعداد بایت دریافت کرده رو نشون میده(بر میگردونه) و اگه چیزی دریافت نکنه "0" برمیگردونه ، حالا از همین خاصیت استفاده میکنیم به طوری که دیگه نیازی به استفاده از تابع Serial.available نباشه و برنامه هم هنگ(حلقه بینهایت ارسال دیتا) نکنه.

تو این پروژه اومدیم و گفتیم اگه تعداد بایت دریافت شده(number) بزرگتر از صفر بود یعنی دیتا دریافت کردیم لذا نشون بده این دیتا ها رو و وقتی مقدار number برابر صفر بشه هم یعنی تابع دیتایی دریافت نکرده لذا برای این که حالت ببینهایت( هنگ کردن آردوینو ) رخ نده خط 22 پروژه بالا رو به صورت توضیحات درابردم.(میتونید این خط رو از حالت توضیحات دربیارید و ببینید که چطور آردوینو هنگ میکنه یا همون میره تو حالت ارسال بینهایت دیتا rofl ....دیالوگ تکراری ، چند بار تا حالا این یه ذره جمله رو من تکرار کردم bad )

Serial.readBytesUntil
Serial.readBytesUntil : این تابع به صورت زیر هستش که اندازه length (یه عدد صحیح) دیتا رو از پورت سریال میخونه و اطلاعات رو در buffer(یه آرایه) ذخیره میکنه و وقتی به کاراکتر تعیین شده(character) رسید عملیات خواندن اطلاعات رو متوقف میکنه.

توجه :  تابع Serial.readBytesUntil تعداد بایتی رو که دریافت کرده(تا قبل از این که به کاراکتر تعیین شده برسه) رو برمیگردونه ، اگه دیتایی موجود نباشه عدد 0 رو برمیگردونه؛ مثال زیر رو ببینید تا کاملا متوجه بشید :

خط 18 : رفتن به خط بعد ^_^
خط 13 : اون متغییر number تعداد بایت های ذخیره شده در my_data رو برمیگردونه
خط 11 : چون از تابع Serial.available درپروژمون استفاده کردیم ، لذا لازم نیست بررسی کنیم که مقدار number بزرگتر از 0 هستش یا نه(چون حتما بزرگتر از 0 است ، دلیلش هم اینه که تابع Serial.available وقتی اجرا میشه که حداقل یه بایت برا خوندن موجود باشه لذا مقدار number همیشه بزرگتر از 0 هستش.)
خط 15 و 16 : توضیحات این قسمت دقیقا مثل توضیحات خط 17 و 18 پروژه توی قسمت Serial.readBytes هستش.(بالا رو ببینید)

توجه(مهم) : تو پروژه زیر از تابع Serial.available استفاده نکردیم و کاری کردیم که برنامه هنگ نکنه.

تو این پروژه اومدیم و گفتیم اگه تعداد بایت دریافت شده(number) بزرگتر از صفر بود یعنی دیتا دریافت کردیم لذا نشون بده این دیتا ها رو و وقتی مقدار number برابر صفر بشه هم یعنی تابع دیتایی دریافت نکرده لذا برای این که حالت ببینهایت( هنگ کردن آردوینو ) رخ نده خط 20 پروژه بالا رو به صورت توضیحات درابردم.(میتونید این خط رو از حالت توضیحات دربیارید و ببینید که چطور آردوینو هنگ میکنه یا همون میره تو حالت ارسال بینهایت دیتا rofl ....دیالوگ تکراری ، چند بار تا حالا این یه ذره جمله رو من تکرار کردم bad )


جمع بندی : تو این مطلب 3 تا تابع گفتم و برا هرکدومشون مثالی زدم و بازم برا هر کدومشون گفتم چیکار کنیم تا از Serial.available استفاده نکنیم و برنامه هم هنگ نکنه.


اوه مای گاد…بابام در اومد….هی مینوشتم بعد میدیدم جابجا نوشتم بعد میدیدم یه چیز برا یه تابع نوشتم و برا 2 تای دیگه ننوشتم بعد میدیدم کدها رو میشه بهتر کنم و ساده تر کنم…بعد دیدم که 2 روز طول کشید این مطلب cry
توجه : دوستان اگه جایی رو اشتباه گفتم لطفا ذکر کنید
جوک : همین الان(دیروز bomb ) دیدم که جزئیات و نکات یه تابع دیگه رو داشتم برا یه تابع دیگه میگفتم و وقتی هم مییرفتم سایت آردوینو میدیدم که اشتباه نوشته ، بعد پیش خودم میگفتم چرا اینا اشتباه نوشتن laugh ، بعد دیدم نه مشکل از خودمه mosking
خوب این قسمت هم تموم شد ، تو مطلب بعدی بازم باس بریم سراغ بقیه توابع cry  ، امیدوارم تا 2 جلسه بعد دیگه تموم بشه و از دستش راحت شیم bomb
امید وارم از این مطلب ناچیز خوشتوم اومده باشه yes ….اگه این مطالب براتون مفید بود :
نظر، انتقاد و پیشنهاداتون رو بگید و تعجیل در فرج آقا و شادی روح شهدا و امام شهدا و سلامتی رهبر و علمای اسلام سه تا صلوات بفرستید  heart 
تا مطلب بعدی یا علی. bye 

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

    مهمان

    امیر

    سلام داداش
    من کل سایتتو گشتم ولی چیزی ک میخواستمو پیدا نکردم
    من میخوام بصورت مثال میگم داخل سریال مانیتور برنامه اردوینو مثلا بنویسم on و یه پین اردوینو ۱ بشه و وقتی off رو ارسال کردم ۰ بشه میدونم کد پیچیده ای نیست ولی خب ممنون میشم توضیحش بدی برام

  2. مهرداد آزرم

    مهمان

    مهرداد آزرم

    ممنون از زحماتتون ، با آرزوی موفقیت برای همه مون

  3. مهرداد آزرم

    مهمان

    مهرداد آزرم

    با سلام
    میبخشید که چنین سوالی رو اینجا مطرح میکنم
    در کد نویسی برای سروو موتور ۳۶۰ ، با تکمیل هر قسمت سروو موتور یک مرحله به جلو حرکت میکند ،آیا دستوری داریم که وقتی در آردوینو شمارشگر به یک عدد معینی رسید مثلا عدد ۸۰ ، سروو موتور به عقب برگردد و در حالت صفر ساکن شود؟
    قبلا از زحمات شما مهندس گران قدر کمال تشکر را دارم

    مشاهده پاسخ ها (2)
    • مهرداد آزرم

      مهمان

      مهرداد آزرم

      سلام
      مهندس من منتظر جواب شما هستم.

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

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

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

        سلام – خب سرو موتور یه موتور که بر مبنای تغییرات ولتاژ میچرخه – معمولا در مدل های مختلف/زاویه های چرخش مختلف تولید میشه، مثلا 180 درجه؛ خب ولتاژ 0 تا 5 رو تغییراتش میشه 0 تا 180 درجه – این از تئوری داستان.
        خب حالا سوال شما : با کتابخونه های مد نظر شما من روشون مسلط نیستم، معمولا سعی میکنم خودم کتابخونه برا خودم بنویسم! اما با روال کار که گفتم خودتون به راحتی میتویند توابع مورد نیازتون رو بنویسید، دیتاشیت موتور هم که هستش.

  4. alihomayon

    مهمان

    alihomayon

    datapacket[0]==0xA2;
    datapacket[10]==0xB2;
    datapacket[1]= synctime & 0xFF;
    datapacket[2]= (synctime >> 8) & 0xFF;
    datapacket[3]= (synctime >> 16) & 0xFF;
    datapacket[4]=(synctime >> 24) & 0xFF;
    datapacket[5]= x & 0xFF;
    datapacket[6]= (x >> 8) & 0xFF;
    datapacket[7]=y;
    checksum=datapacket[0]+datapacket[1]+datapacket[2]+datapacket[3]+datapacket[4]+datapacket[5]+datapacket[6]+datapacket[7]+datapacket[10];
    datapacket[8]= checksum & 0xFF;
    datapacket[9]= (checksum >> 8) & 0xFF;

    Serial.write(datapacket,11);
    سلام خواستم بگم که من 11 بایت می فرستم ولی 8 تا رو میخونه اونور چی کار کنم که 11 تاش برسه؟؟؟؟

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

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

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

      سلام – چطور میخونی اونوقت؟ کد ارسال که به نظر میاد مشکلی نداره.

      • Alihomayon

        مهمان

        Alihomayon

        سلام؛ خیلی ممنون که پاسخ دادید؛ بله ارسالش درسته ولی با serial1.read bytesمی خونم و فقط ۸ بایت بهم برمیگردونه در حالیکه باید ۱۱ بایت باشه و baud rate هم 1000000 هست و از mega r3 2560 استفاده می کنم در دو طرف

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

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

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

          از تابع read استفاده کن – بنداز داخل While هرچی خوند رو نشون بده – بعد برو بررسی کن ببین دیتا ها به درستی دریافت شدن یا نه – اگه درست دریافت شدن که همینطور – بحث timeout تابع فوق رو باید بررسی کنی یا این که یه تابعی بنویسی و توش از Read استفاده کنی.

          • alihomayon

            مهمان

            alihomayon

            از whileاستفاده کردم نشد، باز هم هشت تا دریافت میشه؛ انگار که جلوش بسته است، در صورتی که تا 63 بایت جا داره برای ارسال و دریافت،تایم اوت رو چطور بررسی کنم وقتی دقت میکروثانیه است، اصلا تایم اوت رو نفهمیدم؛ و منظورتون از تابع نوشتن serial.event رو میگید؟

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

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

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

            احتمال میدم موقع نمایش اطلاعات تو پنجره سریال از فرمت نمایش درستی استفاده نکردی و بعضی کاکرکتر ها که قابل نمایش نیستن رو فک میکنی دریافت نکردی – در حالت آخر خاسی حظوری بیار ببینم مشکل از کجاس – شهرقدس ( البته اگه خونتون اینجاس )

          • alihomayon

            مهمان

            alihomayon

            ممنون، فهمیدم مشکل از کجاست، باید از دو درگاه سریال جدا استفاده می کردم.

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

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

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

            یه چیزی – هر موقع خاسی سوال بکنی – کامل توضیح بده به طرف – تا الان من فک میکردم دو تا میکرو داری – یکی دیتا میده یکی دیگه میگیره!

          • alihonayon

            مهمان

            alihonayon

            بله درست فکر کردید فقط گفتم پورت سریال بیشتری استفاده کردم mail

  5. بیژن فرهنگ

    مهمان

    بیژن فرهنگ

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

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

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

      مهدی دمرچیلو

      سلام – این مربوطه به سایت و نه IDE

  6. علی

    مهمان

    علی

    سلام ممنون بابت آموزش خوبتون
    من یه مشکل تو ارتباط سریال آردینو با atmega8 کردم.
    آردینو مگا با آردینو uno به راحتی ارتباط برقرار میکنه ولی با atmega8 نه
    کریستال و باودریت ها یکسانه
    لطفا راهنمایی کنید

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

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

      مهدی دمرچیلو

      سلام – ببین کجا سوتی دادی – اتصالات – برابر نبودن تنظیمات در دو طرف و…

  7. محمد

    مهمان

    محمد

    سلام.
    من این مثالی که زه بودین رو عملی بستم.
    #include
    LiquidCrystal lcd(8,9,10,11,12,13);
    char my_data;
    void setup()
    {
    Serial.begin(9600);
    lcd.begin(16,2);
    }
    void loop()
    {
    lcd.setCursor(0,0); lcd.print(“my_data=”);
    if (Serial.available() > 0)
    {
    my_data =Serial.read();
    Serial.print(“DATA IS = “);
    Serial.println(my_data);
    lcd.setCursor(0,1); lcd.print(my_data);
    }
    }
    بعد میخام دیتا دریافتی رو روی lcd هم نمایش بدم ولی وقتی دیتا میفرستم lcd قاطی میکنه 0علامت ؟ نشون میده.

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

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

      مهدی دمرچیلو

      سلام
      کد زیر رو بزار داخل Setup
      lcd.setCursor(0,0); lcd.print(“my_data=”);
      lcd.write رو هم تست کن.
      مقدار اولیه متغییرت رو ‘0’ قرار بده.
      تو خط زیر، نمیدونم دیتا با چه فرمتی به سمت میکرو ارسال میکنی ولی اگه تمام کار ها رو کردی و جواب نداد بیا یه ‘0’ به مقدار خونده شده از پنجره سریال اضافه کن و بعد بده به متغیرت
      my_data =Serial.read();

  8. اقا

    مهمان

    اقا
  9. احسان

    مهمان

    احسان

    با سلام
    آقا مهدی واسه سایت خوبتون ازت تشکر میکنم.ی مشکل برام پیش اومده دوس داشتم مطرح کنم اگه کسی اطلاع داره کمکم کنه.به وسیله ماژول بلوتوث hc05 به آردوینو ارتباطش برقرار کردم حالا میخوام بوسیله گوشی براش ی کد بفرستم و مثلا ی LED روشن کنه که در اینجا مشکلی پیش نمیاد و درست عمل میکنه.
    جایی که مشکل دارم اینجاست که میگم حالا ی کد دیگه براش بفرستم که اگه فلان LED روشن باشه ی کد از آردوینو به سمت گوشی بفرسته که متاسفانه فرستاده نمیشه میخواستم بدونم مشکل کجاست؟؟
    البته متوجه شدم که اگر دو تا if در هم باشه این مشکل پیش میاد اگه یکی باشه مشکل نداره
    ممنون میشم کمک کنید
    برنامه نویسیش :

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

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

      مهدی دمرچیلو

      سلام
      احتمالا اگه مدار در عمل درست باشه مشکل از ریجستر ها میتونه باشه – که فقط مثلا گیرنده بودن رو فعال کردی و فرستنده رو نه – ریجستر های ارتباط سریال

  10. موسوی

    مهمان

    موسوی

    با سلام. مهندس ممنون از آموزشهای خوبتون. یه سوال داشتم. من کد ارتباط سریال رو نوشتم و برد من آردینو مگا2560 هست. دیتا رو به کامپیوتر با مبدل USB به Serial می فرستم. دیتای ارسالی از برد به درستی در ترمینال ویندوز (نرم افزار RealTerm) دیده می شه اما نمیتونم از کامپیوتر دیتا به برد بفرستم. مشکل از چیه؟

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

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

      مهدی دمرچیلو

      سلام
      تا جایی که یادمه نیاز به برد تبدیل نیست چون خود آردوینو رو که با usb وصل میکنی کافیه
      تو ترمینال خود آردوینو تست کنید و بعد برید سراغ ترمینال های دیگه

  11. حسین

    مهمان

    حسین

    سلام خداقوت
    عالی بود

  12. مملی

    مهمان

    مملی

    عالی بود، جای قلی خالی بود.

  13. mostafa

    مهمان

    mostafa

    سلام داش مهدی!
    دمت گرم ! خداقوت!
    امشب جلسه پنجم رو خوندم!
    حاجی یدونه ای! (دوتا بودی هیئت میزدیم خدایی)
    ولی خدایی من این همه سریال نمیره تو کلم! D-:

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

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

      مهدی دمرچیلو

      سلام
      والا وا سیبیل رو هم بازور داریم چه برسه به ریش
      تیپمون هم که دیگه laugh
      ولی به زودی کبلایی میشم انشاالله blum
      والا اینجا دانشگاه و مدرسه نیست که بخوای همه چیز رو حفظ کنی…..هر موقع لازمت شد یه سر به مطلب بزن و ببین کدوم تابع بدردت میخوره و ازش استفاده کن…..کاری که من میکنم

  14. f@eze

    مهمان

    f@eze

    سلام آقا دمرچیلو.
    واقعاااا بابت مطالب مفید و وقت با ارزشی که میذارین ممنون.
    من همه مباحث آردوینو رو سیو کردم عالی بودن برای یه پروژه قصد دارم ازش استفاده کنم و اگر به مشکلی برخوردم مزاحمتون میشم.
    بازم ممنون.
    خدا قوت victory

  15. مهرداد

    مهمان

    مهرداد

    اقا ممنون عالی بود

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

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

      مهدی دمرچیلو

      yes

  16. محمد حسين

    مهمان

    محمد حسين

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

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

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

      مهدی دمرچیلو

      سلام
      laugh
      دمت گرم داش….نمیدونستم blush
      راستی نمیدونستم بچه تهرونی ها لحجه دارن….. laugh

  17. mohamad

    مهمان

    mohamad

    ببخشید یک سوال داشتم می خواستم بدونم تو آردوینو به چه صورت می شه فایل hex را به دست آورد.مرسی از سایت خوبتون

    مشاهده پاسخ ها (1)