نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

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

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

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

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

Advanced I/O

Tone و noTone
Tone : این تابع برا ایجاد صدا های مختلف بر روی buzzer هستش ، به این صورت که با ایجاد موج مربعی(۵۰% duty cycle) و تغییر فرکانسش صدا های مختلفی رو ایجاد میکنه؛ pin پایه ای هستش که buzzer قراره بهش وصل بشه و به جای frequency هم فرکانستون رو بر حسب hz قرار بدید.
 
توجه : نحوه کار این تابع به این صورته که هی پایه ای که buzzer بهش وصله رو ۰ و ۱(منطقی) میکنه و بین هر ۰ و ۱ ایی هم یه تاخیر زمانی میزاره؛ که با تغییر این تاخیر زمانی فرکانس کنترل میشه و زمان صفر و ۱ شدن با هم برابر هستن(۵۰% duty cycle)؛ لذا با تغییر فرکانس صدا های مختلفی بر روی buzzer شنیده میشود.
کد توضیحات بالا یه چیز تو مایه های کد زیر هستش(بدون استفاده از تابع بالا صدای buzzer رو درمیاریم laugh )
 
noTone : این تابع عکس تابع بالا هستش؛ و صدای بازر رو قطع میکنه(صدایی که توسط تابع Tone ایحاد شده بود.)؛ به جای pin شماره پایه ای رو که Buzzer بهش وصل هستش رو قرار میدیم.
 
یه مثال از دو تابع بالا : 
 
 

پروژه آردوینو

یه پروژه جالب و صدای جالب(!!!) با بازر و دو تابع بالا
شماتیک پروژه
پروژه آردوینو
کدهای پروژه

 
عکس از مدار در عمل crazy (اون چیزی که زیر مداره... laugh )
پروژه آردینو
 
اینم از فیلم پروژه(اگه تونستید خودتون پروژه رو تست کنید وگرنه حتما فیلم زیر رو ببینید ؛ ظرر نداره)

 
pulseIn
pulseIn : این تابع برای محاسبه زمان پالس اعمال شده به پایه pin (که ما در کد زیر مقدار دهی میکنیم) هستش(زمانی که بر میگردونه بر حسب میکرو ثانیه هستش) و این که حالا این شمارش پالس کی شروع بشه موقع HIGH اون پایه یا LOW شدن ، که این هم در کد زیر توسط قسمت value تعیین میشه.

timeout : توسط این قسمت تعیین میکنیم که چه مقدار باید تابع صبر کنه تا پالس مد نظر ما تموم بشه ( تعیین حداکثر طول پالسمون )؛ تو حالت عادی 1 ثانیه هستش، که توسط تابع دومی میشه این مقدار رو تغییر داد؛ این ورودی بر حسب ms هستش.
pin : پایه مد نظرو انتخاب میکنیم
Value : تعیین میکنیم لبه حساس مد نظر رو که H باشه یا L
مثال برای این قسمت بمونه برا مطلب بعدی، که میخوام  پروژه  SRF05 با آردوینو رو توضیح بدم و اونجا این تابع نقش اساسی در راه اندازی ماژول SRF05 داره. cool
---> پروژه فاصله سنج التراسونیک srf05 با آردینو

 
خوب از این قسمت دو تابع shiftIn و shiftOut میمونه که برا بحث spi مجازی هستش و بهتره تو جلسات آخر گفته بشه.
سوالی چیزی بود در خدمتیم – نظر هم بدید(زبونم مو درابرد cry ) – هزینه مطلب فراموش نشه(تو مطالب قبل ذکر شده)
سخنی با خدا
خدا ما که میدونیم اول آخر ما رو میبری جهنم ولی کجای جهنم میخوای ببری ما رو....ما که حتی تحمل یه چیز کوچولو رو نداریم،دستمون زخم بشه کلی آه و ناله میکنیم، چطور دلت میاد ما رو بفرستی جهنم، خدایا اگه میدونی میریم جهنم حداقل مرگمون رو فرا برسون تا کمتر گناه کنیم یا این که ما رو به راه راست هدایت کن، والا بعضی وقتا فکرش رو میکنم خندم میگیره؛ یکی بهمون یه چیز بده، کلی ازش تشکر میکنیم و قربون صدقش میریم، ولی خدا تو که این همه به ما دادی چرا ما از تو تشکر نمیکنیم، خداییش تو قرآن راست میگی که انسان ناسپاس هستش، حتی نمازایی که میخونیم برا اینه که نریم جهنم و بریم بهشت و هیچ کاریمون برا تشکر از تو نیست؛ خندم میگیره وقتی فکر میکنم که از عقرب میترسیم ولی از گناه کردن جلوی تو cry >>>خدا خودت میدونی که حرفی برا گفتن ندارم و فقط میتونم سرم رو بندازم پایین از شرمندگی.(خدا خودت میدونی که به امید بخشش تو زنده هستیم و از گناهامون بیمناگ، خدا خودت ما رو ببخش و ما رو به راه راست هدایت کن.)
فعلا یا علی

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

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    حمید

    ممنون ، متوجه شدم
    یه سوال دیگه
    آیا مثل تابع pulseIn داخل AVR هم داریم؟؟؟

    1397/11/23
    09:33
    • نویسنده این مطلب

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

      نمیدونم – من ندیدم – باید بنویسی.

      1397/11/23
      09:43
  2. مهمان

    حمید

    اول از زحمات تون تشکر کنم
    بعد یه سوال
    کار تابع pulselnچیه؟
    تعیین زمان هرپالس ؟ یا شمارش پالس ؟ help

    1397/11/22
    09:22
    • نویسنده این مطلب

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

      سلام ( در پاسخ به اون یکی نظرت )
      خب ببین در مطلب گفتم دیگه :
      “این تابع برای محاسبه زمان پالس اعمال شده به پایه pin هستش”
      مثلا شما میخوای فرکانس رو محاسبه کنی – زمان پالس 0 بودن ( یا 1 بودن ) رو که محاسبه کنیم، به سادگی میشه فرکانس رو هم حساب کرد – در عنوان فوق، یک پروژه هم گزاشتم برا این تابع ( پروژه SRF05 ) – پس میشه مورد اولی که گفتید – زمان هر پالس ( سطح 0 یا 1 اش – که به کمک پارامتر های ورودی تابع فوق، قابل تعیین هستش )

      1397/11/22
      09:48
  3. مهمان

    h

    سلام
    آقا اگر بخوایم تو اردویونو اجرای ی برانامه متوقف کنیم باید چکار کنیم؟؟؟
    همزمان با اموزشی ک گذاشتین دارم پیش میرم و اون مدار buzzer رو بستم میخواستم بدونم چجوری باید متوقفش کرد؟؟

    1397/10/30
    07:10
    • نویسنده این مطلب

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

      سلام –

      اگر بخوایم تو اردویونو اجرای ی برانامه متوقف کنیم باید چکار کنیم؟؟؟

      برنامه چی؟ یعنی چی که متوقفش کنم؟

      مدار buzzer رو بستم میخواستم بدونم چجوری باید متوقفش کرد؟؟

      خب این مربوطه به کدنویسی ++C
      شما مثلا میای میگی به پایه X یه کلید وصل بشه – اگه پایه X فشرده شد – صدا رو وصل یا قطع کن.
      یا روش های دیگه – به کمک DEALY یا تایمر.
      و…

      1397/10/30
      07:26
  4. مهمان

    مهدیار

    سلام
    ی سوال داشتم اینکه با این تابعی که تو این جلسه معرفی کردید فرکانس های بیشتر از 20kهم میشه تولید کرد در عمل؟

    1396/08/26
    08:34
  5. مهمان

    امیرحسین

    ممنون از زحماتتون smile

    1396/07/03
    05:00
  6. مهمان

    M

    سلام.من متوجه تفاوت بین timeoute , value نشدم؟ چون در هردو گفتین زمان شروع پالس رو تعیین میکنه اگه امکانش هست توضیح بدین

    1396/06/25
    05:13
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      همچین کلماتی من تو مطلب پیدا نکردم!

      1396/06/25
      06:45
      • مهمان

        M

        تو قسمت pulse In ‘ گفتین

        1396/06/26
        11:32
        • نویسنده این مطلب

          مهدی دمرچیلو

          آها – مطلب هم یه مشکلی داشت که تصحیح کردم good
          timeout : توسط این قسمت تعیین میکنیم که چه مقدار باید تابع صبر کنه تا پالس مد نظر ما تموم بشه ( تعیین حداکثر طول پالسمون )؛ تو حالت عادی ۱ ثانیه هستش، که توسط تابع دومی میشه این مقدار رو تغییر داد؛ این ورودی بر حسب ms هستش.
          pin : پایه مد نظرو انتخاب میکنیم
          Value : تعیین میکنیم لبه حساس مد نظر رو که H باشه یا L
          حالا فک کنم فرق این دو مورد مد نظرتو فهمیده باشی.

          1396/06/26
          01:06
  7. مهمان

    ABOLFAZL

    salam man mikham az pluseln () estefade bokonam vali ba in k p va l ro bozorg mizanam bazam kar nemikone va aslan in tabeo nemishnase che konim???

    1396/05/04
    02:16
  8. مهمان

    mhsh

    سلام.خیلی جالب بود.فقط یه سوال-میگم اونوقت این تابع tone فقط یه زمان خاص سیگال ایجاد می کنه یا تا وقتی که برسه به دستور notone اون سیگنال رو ایجاد میکنه؟یعنی مثلا میشه این دستور رو توی void setup بنویسیم بعد تا آخر برنامه این همینجور این سیگنال رو ایجاد کنه؟

    1396/03/19
    05:38
  9. مهمان

    ali

    اگه بخواهیم ۲ تا از پایه ها هم زمان فعال بشن و یکیشون ۱ ثانیه delay داشته باشه و اون یکی ۲ ثانیه، یعنی یکیشون ۱ ثانیه بعد از اون یکی غیر فعال بشه اون وقت باید چه کدی بنویسیم؟

    1395/11/19
    05:01
    • نویسنده این مطلب

      مهدی دمرچیلو

      امکان نوشتن کد وجود ندارد

      1395/11/19
      05:43
      • مهمان

        ali

        فهمیدم چه جوریه!!
        digitalWrite(12,HIGH);
        digitalWrite(13,HIGH);
        delay(1000);
        digitalWrite(12,LOW);
        delay(1000);
        digitalWrite(13,LOW);
        اینجوری ۱۲ و ۱۳ با هم فعال میشن و ۱۲ یک ثانیه زودتر از ۱۳ غیر فعال میشه.
        باور کن از رو ورقه کسی نگاه نکردم laugh
        فقط دیتاشیت بازر رو نتونستم پیدا کنم، چه ولتاژی بهش بدم؟؟؟؟؟؟؟
        به ۵ ولت زدم اون رگولاتوری که روش هست خیلی داغ میکنه

        1395/11/19
        06:35
        • نویسنده این مطلب

          مهدی دمرچیلو

          معمولا ۵ ولته ولی ۱۲ ولتش هم فک کنم هستش

          1395/11/19
          06:40
          • مهمان

            ali

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

            1395/11/20
            12:56
  10. مهمان

    سعید توکلی

    ممنون جناب دمرچیلو عالی بود

    1395/09/21
    10:13
  11. مهمان

    نیما

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

    1395/08/25
    04:48
  12. مهمان

    نیما

    سلام آقا مهدی خیلی خیلی ممنون بابت این همه آموزش های کاربردی که قرار میدید من که بدجور وابسته سایتتون شدم دوتا سوال دارم
    یک سوال فرق بیزر با پیزر (پیزو) و فرق این دوتا با بلندگو چیه؟
    دوم اینکه اگر بخوام یک صدای دلخوه مثلا مثل یک بیپ درست کنم چطوری باید مقدار دهی دارم . فرض کنید یک فایل دارم 2 ثانیه که میخوام صدای این پخش بشه راهی هست که بشه اون فایل رو تبدیل به کدهای متتاظر یا فرکانس های قابل استفاده توی آردوینو کرد؟

    1395/08/25
    12:37
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      نمیدونم sorry

      1395/08/25
      02:38
    • نویسنده سایت

      مهدی زمانی

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

      1395/08/25
      06:52
  13. مهمان

    امیر

    سلام خیلی ممنون از مطالب مفید
    چند تا سوال داشتم
    مقدار خروجی که pulseIn میده بر حسب میکرو ثانیه است؟ مثلا داده 901238 یعنی 0.9 ثانیه؟
    و timeout هم بر حسب میکرو ثانیه است؟ نهایتش چقدره؟

    1395/05/20
    02:18
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      microseconds
      برا timeout هم همون طور که تو مطلب گفتم، پروژه SRF05 با آردوینو رو بخون

      1395/05/20
      02:48
  14. مهمان

    علیرضا

    سلام.خیلی خوب بود.ممنون

    1395/04/11
    02:01
  15. مهمان

    حمید

    تشکر…….تشکر….تشکر……..

    1395/02/25
    10:58
  16. مهمان

    اسماعیل

    سلام مهدی جان خدا قوت!
    اقا تا حالا بازر SMD راه انداختی ؟ 4تا پایه داره من هرکار میکنم هیچ صدایی ازش در نمیاد. مشکل کجاست ؟؟؟ sad

    1395/01/18
    03:20
    • نویسنده این مطلب

      مهدی دمرچیلو

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

      1395/01/18
      04:09
  17. مهمان

    حسین

    خیلی هم عالی

    1394/11/21
    12:43
  18. مهمان

    نيما

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

    1394/06/23
    05:23
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      good

      1394/06/23
      05:35
  19. مهمان

    Hodrin

    مرسی اوکی شدم
    فقط ما باید اون شیش تا حرف رو دقیقا ۱ساعت ۵ دقیقه (مثلا) ,۱ساعت ۵ دقیقه ای وارد کنیم؟
    یعنی منظورم اینه که ما اگه تو این فاصله ۱۰۰ تا چیز دیگه وارد کنیم اون ۱۰۰ تارو قبول میکنه یا نه؟
    یعنی فقط سر اون ۱ساعت ۵ دقیقه دیتا قبول میکنه؟

    1394/04/30
    10:08
    • نویسنده این مطلب

      مهدی دمرچیلو

      تا قیامت دیتا قبول میکنه….کایر با این نداریم
      ولی ما ۶ تا عدد مثلا میخوایم و بین هر دو عدد حداکثر ۱ساعت و ۵ دقیقه وقت هستش….بعد از این زمان وارد بشه عدد به عنوان ادامه دیتای قبلی تلقی نمیشه.
      ما میتویم کد ۶ تا دیتا رو تو ۱۰ ثانیه وارد کنیم و میتونید تو ۳۰ دقیقه و میتونیم بین هر دیتا ۱ ساعت فاصله بندایزم که در مجموع میشه ۶ ساعت و…
      تو حالت دیفالت مقدار برابر ۱ ثانیه هستش که ما مثلا میزاریمش رو ۵ ثانیه(که بسته به نیازمون میتونه تغییر کنه.)
      جان خودم تا تست نکنی ok نمیشی….چیز خاصی نداره؛ الکی خودت رو اذیت نکن….الکی گیر نده…..
      جدی میگم…این نظر منه…اگه بخوای سر هر چیز این قدر گیر بدی خودت رو اذیت میکنی فقط
      البته این نظر منه…شاید درست باش شاید غلط
      البته امری باشه بنده دربست درخدمتم…….. yes
      ok?

      1394/04/30
      10:18
  20. مهمان

    Hodrin

    سلام
    بی زحمت میشه یکم بیشتر راجع به timeout توضیح بدی؟

    1394/04/29
    06:33
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      تو کدوم مطلب اینو گفتم من؟

      1394/04/29
      09:05
      • مهمان

        Hodrin

        فکر میکنم تو جلسه قبل این جلسه

        1394/04/30
        04:42
        • نویسنده این مطلب

          مهدی دمرچیلو

          گرفتم
          ببین همون جا هم گفتم بازم میگم…
          ببین مثلا طرف داره اسمش رو وارد میکنه(تو یه جعبه ای)، اگه الان حرف اول اسمش رو وارد کنه و ساعت بعد بیاد حرف دوم اسمش رو وارد کنه و…(فرض کنید اسمش ۶ تا حرف داره) “اون جعبه هه” laugh فک میکنه که ما ۶ تا اسم مجزا وارد کردیم….چون زمان بین هر چیزی که دریافت میکنه به طور پیش فرض ۱ ثانیه هستش…..حالا به کمک این تابع میایم و میگیم زمان بین وارد شدن هر حرف رو ۱ ساعت و ۵ دقیقه(مثلا)در نظر بگیر تا تمام این ۶ تا حرف به عنوان یه اسم دریافت بشه و نه ۶ تا اسم
          ok???

          1394/04/30
          05:45
  21. مهمان

    مهرداد

    سلام
    انجمن لازم هست

    1394/04/28
    06:34
    • نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      پول ندارم laugh
      ساختنش کاری نداره و قبلا ساختم

      1394/04/28
      06:44
  22. مهمان

    محمد

    OK
    مرسی smile

    1394/04/24
    06:55
  23. مهمان

    alireza

    سلام داداش
    ممنون از زحمتات
    دادا یه سوال؟
    fritzing میتونه آردوینو رو شبیه سازی کنه؟

    1394/04/24
    06:21
    • نویسنده این مطلب

      مهدی دمرچیلو

      والا چرا دروغ بگم ….من خودم زیاد با این نرم افزاره کار نکردم…..بیشتر پروتئوس کار میکنم و در عمل تست میکنم.

      1394/04/24
      06:23
      • مهمان

        ali

        ممنون
        داداش برا‌سایتت یه انجمن هم بزنی خوبه ها pardon

        1394/04/24
        07:59
        • نویسنده این مطلب

          مهدی دمرچیلو

          پیله میله یوخدی داش

          1394/04/24
          08:05
  24. مهمان

    محمد

    مثل قسمت های قبلی عالی بود یاشا good
    من یه سوال دارم میشه این قسمت از برنامه رو جوری برای اون قسمت از برنامه پروژه RFID نوشت که فرضا کارت X بیاد کارت بزنه آژیر بزنه سیستم shock یه چیزی تو مایه های فیلما نشون میدن اونجوری laugh

    1394/04/24
    05:23
    • نویسنده این مطلب

      مهدی دمرچیلو

      خوب کاکو برنامه که کارت رو تشخیص میده، فقط باس یه if بزاری و بگی اگه این کارت سنس شد لامپ رو فلان کن بسال کن عین فیلم ها… laugh
      ok???

      1394/04/24
      05:25