نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

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

به نام خدا : تو این مطلب از آموزش اردوینو میریم تو جلسه ۷ امش، این مطلب میشه گفت کوتاه ترین مطلب هستش، که دو تا تابع فقط توش گفتم، حالا هم بنا به یه دلیل و هم یه مشکل اون دو تا تابع دیگه رو نمیگم و میزارم برا جلسات بعد. 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 >>>خدا خودت میدونی که حرفی برا گفتن ندارم و فقط میتونم سرم رو بندازم پایین از شرمندگی.(خدا خودت میدونی که به امید بخشش تو زنده هستیم و از گناهامون بیمناگ، خدا خودت ما رو ببخش و ما رو به راه راست هدایت کن.)
فعلا یا علی

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
48

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

4) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    حمید

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

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

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

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

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

  2. Avatar

    مهمان

    حمید

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

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

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

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

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

  3. Avatar

    مهمان

    h

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

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

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

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

      سلام –

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

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

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

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

  4. Avatar

    مهمان

    مهدیار

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

  5. Avatar

    مهمان

    امیرحسین

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

  6. Avatar

    مهمان

    M

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

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        M

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

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

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

          مهدی دمرچیلو

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

  7. Avatar

    مهمان

    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???

  8. Avatar

    مهمان

    mhsh

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

  9. Avatar

    مهمان

    ali

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

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        ali

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

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

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

          مهدی دمرچیلو

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

          • Avatar

            مهمان

            ali

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

  10. Avatar

    مهمان

    سعید توکلی

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

  11. Avatar

    مهمان

    نیما

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

  12. Avatar

    مهمان

    نیما

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

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

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

      مهدی دمرچیلو

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

    • Avatar

      نویسنده سایت

      مهدی زمانی

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

  13. Avatar

    مهمان

    امیر

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

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

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

      مهدی دمرچیلو

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

  14. Avatar

    مهمان

    علیرضا

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

  15. Avatar

    مهمان

    حمید

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

  16. Avatar

    مهمان

    اسماعیل

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

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

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

      مهدی دمرچیلو

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

  17. Avatar

    مهمان

    حسین

    خیلی هم عالی

  18. Avatar

    مهمان

    نيما

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

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

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

      مهدی دمرچیلو

      سلام
      good

  19. Avatar

    مهمان

    Hodrin

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

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

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

      مهدی دمرچیلو

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

  20. Avatar

    مهمان

    Hodrin

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

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        Hodrin

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

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

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

          مهدی دمرچیلو

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

  21. Avatar

    مهمان

    مهرداد

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

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

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

      مهدی دمرچیلو

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

  22. Avatar

    مهمان

    محمد

    OK
    مرسی smile

  23. Avatar

    مهمان

    alireza

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

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        ali

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

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

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

          مهدی دمرچیلو

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

  24. Avatar

    مهمان

    محمد

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

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

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

      مهدی دمرچیلو

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