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

led با قابلیت تغییر سرعت چشمک زدن

به نام خدا : led با قابلیت تغییر سرعت چشمک زدن – این جور پروژه ها شاید ساده باشن ولی از بعضیاشون میشه نکته های جالبی رو فهمید مثلا تو همین پروژه اونقدر که من اذیت  شدم تو پروژه ربات مسیر یاب اذیت  نشدم؛ البته این پروژه هیچی نداره ولی یه سری نکات کوچیک بود که من بهش توجه نمیکردم.که انشا الله در زیر بهشون اشاره میکنم.

۱) اگه روی کلید >>TIME=-1<< کلیک کنید زمان تابع  تاخیر ما -۱ میشود یعنی تابع delay_ms  در داخل پرانتزش -۱ قرار میگیرد که در این حالت برنامه قفل میکنه تا ….
انگار یه زمان بینهایت بهش دادی و وقتی برنامه ما به کد تابع تاخیر با زمان منفی میرسید روی این کد میماند و بقیه کد های برنامه رو بررسی نمیکنه. لذا باید برنامه رو دوباره اجرا کنی.
(روی این کلید کلیک کنید تا متوجه بشید>>>البته قبلش باید برنامه شبیه سازی و کد هاش رو که در ته همین مطلب میزارم دانلود کنید.) sarcastic
۲) اگه رو کلید های UP  و  DOWN کلیک کنید زمان چشمک زدن افزایش و کاهش می یابد.
۳) به این نکته توجه کنید که این دکمه ها فشاری هستن و مثل دکمه های موبایل هستن و وقتی روشون کلیک میکنی فعال میشن و وقتی دستت رو از دکمه برداری غیر فعال میش.
۴) یه نکته مهم که اصل همین پروژه هست بعد از کد ها میگمش. dash
۵) مقاومت ها هم برا جلو گیری از سوختن میکرو کنترلر هستش.
برای این که بدونید چرا مقاومت ها اینطوری وصل شدن میتونید قسمت مربو به انواع وصل کردن مقاومت در مدار ها
از مطلب مقابل رو بخونید>>>>انواع وصل کردن مقاومت در مدار ها

تو این کد ها تابع time  برا محاسبه i  یا همون زمان تاخیر هستش که این تابع بررسی میکنه که از بین پین های A.0 –   A.1 – A.2  کدومشون فعاله تا  i  رو محاسبه و ارسال کنه.

۶) اگه برنامه رو دانلود کرده باید و نگاه کرده باشید(البته با نگاه به کد ها هم میشه این موضوع رو فهمید) حتما متوجه این موضوع شدید که چراغ ها از بالا به پایین روشن میشوند و…
نکته ای که هست این هستش که وقتی روی یکی از کلید ها یه لحظه کلیک میکنی (و اون کلید به حالت اولیه خودش برمیگرده) و برنامه مثلا به کد

میرسه ؛ میره سراغ  تابع time  و بررسی میکنه ببینه که رو کدوم کلید لیک شده ، نکته ای که هست اینه که میکرو در حالت عادی بعد از این که رو دکمه ای یه لحظه کلیک شد و دکمه به حالت اولیه خودش برگشت  و اون پین یه لحظه فعال شد نمیتونه اینو تو خودش ذخیره کنه که در فلان زمان روی فلان دکمه کلیک شد و فلان پین فعال شد>>> البته میدونم متوجه نشدید الان بهتر میگم shout
مثلا ما در حین اجرای برنامه روی کلید UP  کلیک میکنیم ( و اون به حالت اوله خودش برمیگرده و پین مورد نظر یه لحظه فعال میشه) حالا برنامه به تابع i=time; میرسه وقتی میره سراغ این تابع میبینه که روی هیچ کدوم از دکمه ها کلیک  نشده (در حالی که ما چند لحظه پیش و قبل از این که برنامه به این کد برسد  روی دکمه ای کلیک کرده بودیم) و علتش هم اینه که نمیتونه این موضوع (که یه پین از پایه های میکرو چند لظه پیش فعال شده) رو تو حالت عادی درک کنه. cry
۷) اندازه مقامت و نحوه بستنش خیلی مهم هست مثلا تواین حالتی که من مقاومت ها رو بستم اگه مقدار مقاومت ها رو از یه مقداری معیین کم تر کنی میبینی که دیگه برنامه عمل نمیکنه و پین مورد نظر فعال نمیشه علتش هم اینه که پایه های میکرو برا فعال شدن به یه حداقل ولتاژی نیاز دارند.
(اگه اشتباه نکم یه چیزی حدود : برا حالت غیر فعال ۰ ولت تا ۲ ولت و برای این که پایه میکرو فعال بشه یه چیزی حدود ۲٫۵ ولت تا ۵ ولت لازمه>>>>>البته بسته به نوع میکرو این مقادیر متفاوت است که خودتون هم میتونید این موضوع رو بررسی کنید البته تو دیتاشیت هم نوشه اینا رو)
۸) با توجه به نکات بالا نباید رو دکمه ای کلیک کرد ؛ بلکه باید روی فلش های بالای دکمه ها کلیک کرد
(وقتی رو اینا کلیک میکنی دکمه یا بسته میشه یا باز و مثل حالت قبل این طور نیست که وقتی کلیک کردی دوباره به حالت اوله خودش برگرده)

چیزی نداشت ولی سعی کردم نکاتی که داشت به زبون ساده بگم ؛ حالا اگه جاییش رو متوجه نشدید یا من بد توضیح دادم ؛ در قسمت نظرات اعلام کنید heart

دانلود این پروژه | حجم: ۱۰۰ کیلوبایت!
گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
9

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

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

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

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

  1. Avatar

    مهمان

    سجاد

    فرکانس چنده؟

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

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

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

      مهم نی زیاد – فقط هر مقدار که از طریق فیوز بیت ها تنظیم کردی – تو کدویژن همون مقدار رو تنظیم کن تا تابع DELAY به مشکل نخوره.

  2. Avatar

    مهمان

    یوسف لاوری

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

  3. Avatar

    مهمان

    جواد

    سلام
    حالا این مشکل رو در واقعیت بای چجوری حل کرد ؟که هر لحظه که کلید رو فشار دادیم میکرو بفهمه و کار ما راه بیفته

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

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

      مهدی دمرچیلو

      سلام
      دقیق داستان رو توضیح بده – متوجه نشدم.

      • Avatar

        مهمان

        جواد

        در انتهای متن گفتی که میکرو تا به اون خط از برنامه نرسه که بهش بگه ببین کلید در چه وضعیتیه متوجه ی فشرده شدن کلید نمیشه و در شبیه ساز باید کلید رو بسته نگه داریم تا میکرو بفهمه
        نکته ی 8 :
        “۸) با توجه به نکات بالا نباید رو دکمه ای کلیک کرد ؛ بلکه باید روی فلش های بالای دکمه ها کلیک کرد
        (وقتی رو اینا کلیک میکنی دکمه یا بسته میشه یا باز و مثل حالت قبل این طور نیست که وقتی کلیک کردی دوباره به حالت اوله خودش برگرده)”
        حالا سوال اینه که در عمل نمیشه که منتظر موند و کلید و نگه داشت تا این اتفاق بیفته راه حل واقعیش چیه ؟

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

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

          مهدی دمرچیلو

          خب ببین برنامه خطوط 18 تا 52 رو هی تکرار میکنه و اجرا میکنه.
          حالا ما 3 تا دکمه داریم که اون دکمه آخری هه به نظر میاد سرکاری باشه و کاری بهش ندارم.
          خب برنامه فقط در خط 21 میاد و دکمه ها رو بررسی میکنه که کلیک شدن یا نه و بعد میره بقیه کد ها رو اجرا میکنه
          حالا چون بعد این تابع(خط21) یه چندتایی DELAY داریم اجرا شدنشون بشته به مقدارشون یه چند ثانیه ای طول میکشه – خب حالا فرض کن برنامه داره این کدهای ست کردن پورت و دیلای رو اجرا میکنه(یعنی داره کد های خط 24 تا 53 رو اجرا میکنه حالا تو این حین اگه دکمه رو فشار بدی و بعد ولش کنی برنامه متوجه نمیشه – دلیلش هم معلومه…..راه حل اینه که یا به مقدار زمان مورد نیاز دکمه رو نگه داری مثلا 2-3 ثانیه دکمه رو نگه داری یا این که از وقفه خارجی استفاده کنی که دیگه نیاز نیست 2-3 ثانیه نگه داری – هر موقع رو دکمه کلیک کنی برنامه 3 سوته متوجه کلیک شدنش میشه حالا برنامه میخواد هر کاری کنه و هر جای پروژه باشه و …. مطلب آموزش وقفه خارجی تو سایت هستش – قسمت اموزش جامع AVR)

  4. Avatar

    مهمان

    دانشجوی سخت افزار

    سلام،این پروژه رو روی بردبردبستم ولی نمی دونم آیاvccوAvccهردوروبایدبه 5ولت وصل کنم؟هردوgndمیکروربایدبه0ولت وصل کنم آخه وقتی این کارارومیکنم روشن نمیشه راستی پایه ریست میکروروچیکارکنم؟لطفاًراهنماییم کنین

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

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

      مهدی دمرچیلو

      سلام
      پایه 10 به + و 11 به – >>>>> فقط همین
      avcc و aref و reset و… رو بیخیال شو.