فهرست مطالب:
تصویری: یک چراغ خلق LED 1 دلاری با ATtiny13 و WS2812: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
توسط arduinocelentano بیشتر توسط نویسنده دنبال کنید:
این یک چراغ خلق کم هزینه با چهار حالت است.
1. جرقه رنگین کمان. جرقه ای از نور هر از گاهی به سمت بالا حرکت می کند و به تدریج رنگ آن را تغییر می دهد.
2. درخشش رنگین کمان. درخشندگی پایدار که به تدریج رنگ را تغییر می دهد.
3. شبیه سازی آتش شمع.
4. خاموش.
با ضربه زدن روی یک دکمه لمسی در بالا می توانید حالت ها را تغییر دهید. حالت فعلی پس از خاموش شدن در حافظه EEPROM ذخیره می شود.
ATtiny13 چقدر کوچک است؟
ایده این بود که حداکثر امکانات را از حداقل سخت افزار بدست آوریم ، چیزی پیچیده تر از کلید یا دماسنج خودکار ، پروژه ای نزدیک به لبه این میکروکنترلر کوچک. پس از همه ، محدودیت ها باعث می شوند شما خلاق فکر کنید ، درست است؟ خوب ، در ابتدا به نظر می رسید.
چالش برانگیزترین در این پروژه این بود که تمام کد را در ATtiny13 قرار دهیم. میکروکنترلر دارای 1K بایت فلش و فقط 64 بایت RAM است. بله ، وقتی می گویم "بایت" ، منظور من آنهایی است که از هشت بیت تشکیل شده است. 64 بایت برای همه متغیرهای محلی و پشته تماس. برای روشن تر شدن ، در نظر داشته باشید که ما باید 8 LED RGB را کنترل کنیم. هر یک از آنها با 3 بایت (به ترتیب یک کانال قرمز ، سبز و آبی) تعریف شده است. بنابراین ، فقط برای ذخیره وضعیت 8 LED ، ما باید یک آرایه از 8 ساختار 3 بایت را پیاده سازی کنیم و یک اشاره گر به ابتدای این آرایه یک بایت دیگر طول می کشد. بنابراین ، 25 از 64 بایت خارج شده است. ما فقط 39 RAM از RAM استفاده کرده ایم و هنوز هنوز شروع به کار نکرده ایم. علاوه بر این ، برای ذخیره هفت رنگ اصلی رنگین کمان ، به 7 × 3 = 21 بایت نیاز دارید ، بنابراین 72 RAM RAM خالی است. خوب ، در مورد رنگهای اصلی ، من اغراق می کنم: ما به همه آنها در RAM همزمان نیاز نداریم و هرگز تغییر نمی کنند ، بنابراین ممکن است به عنوان یک آرایه ثابت برای ذخیره در فلش به جای RAM اجرا شوند. به هر حال ، این یک تصور کلی در مورد سخت افزار استفاده شده است.
با به خاطر آوردن بیانیه Knuth در مورد بهینه سازی زودرس ، از نمونه سازی سه حالت لامپ به طور جداگانه شروع کردم تا ببینم چه اتفاقی می افتد. من آنها را جداگانه آزمایش کرده ام تا مطمئن شوم که درست کار می کنند و هر کدام با میکروکنترلر من سازگار است. انجام آن چند شب طول کشید و همه چیز خوب پیش رفت … تا زمانی که سعی کردم آنها را در دستور switch قرار دهم. ابزار اندازه avr اندازه بخش متن 1.5 کیلوبایت (با پرچم -s از avr-gcc) را گزارش کرد. در آن لحظه قصد اصلی من این بود که مقداری ATtiny25 را با فلاش 2 کیلوبایت بگیرم و این می تواند پایان خوش این داستان باشد.
اما به نوعی احساس کردم که پس از بهینه سازی قابل توجه ، می توانم آن کد تقلب را به 1 کیلوبایت کاهش دهم. با این حال ، یک هفته دیگر طول کشید تا متوجه شوید که غیرممکن است و به هر حال انجام آن یک هفته دیگر به طول انجامید. من مجبور شدم رنگین کمان را به پنج رنگ اصلی برسانم (بدون تفاوت بصری قابل توجه). من از دستورات پرونده خلاص شدم و برای کاهش اندازه کد دودویی از زنجیره ای if-then-if استفاده کردم. انیمیشن آتش به یک مولد شماره شبه تصادفی نیاز دارد که بسیار حجیم است ، بنابراین من یک نسخه ساده شده از LFSR با مقدار اولیه ثابت را پیاده کردم. من به طول دوره کامل PRNG اهمیت نمی دهم و فقط به دنبال ایجاد تعادل بین اندازه کد و "انیمیشن آتش واقعی" هستم. من همچنین بسیاری از بهینه سازی های جزئی را که در حال حاضر به خاطر ندارم پیاده کردم و حتی موفق شدم همه حالت ها را جدا از آتش در تراشه فلش کنم. وقتی ایده هایم تمام شد ، کل کد من حدود 1200 بایت بود.
من وقت گذاشتم و مطالب زیادی در مورد بهینه سازی کد AVR خوانده بودم. من در آستانه تسلیم شدن و بازنویسی همه چیز به زبان اسمبلی بودم اما آخرین فرصت را به آن دادم. در آخرین شتاب بهینه سازی ، من رنگین کمان را به سه رنگ اصلی برش داده و رنگهای دیگر را در حین کار محاسبه کردم ، همه چیز را بررسی کردم و توصیه های بهینه سازی AVR را دنبال کردم و در نهایت…
avrdude: نوشتن فلش (1004 بایت):
نوشتن | ################################################## | 100٪ 0.90s
نیازی به گفتن نیست که من تقریباً از همه RAM و فقط یک بایت EEPROM برای ذخیره حالت فعلی استفاده کردم. منظور من این نیست که این یک اجرای ایده آل و نهایی است. فقط کار می کند و مناسب میکروکنترلر است. مطمئنم ، شما می توانید این کار را بهتر انجام دهید. من واقعا هستم. من فقط می خواهم لذت حل یک مشکل ظاهرا غیرعملی را که در ابتدا تقریباً غیرممکن می دانید به اشتراک بگذارم. "بنابراین ، هک به معنی کشف محدودیت های ممکن است …" -ریچارد استالمن.
تدارکات:
1x ATtiny13 MCU (0.28 دلار = 0.24 دلار برای MCU در بسته SOP-8 و 0.04 دلار برای آداپتور DIP8)
LED های 8x WS2812 RGB (من یک تخته یا یک تکه نوار LED را توصیه می کنم) (0.42 دلار)
1x دکمه لمسی TTP223 (0.10 دلار)
1 برابر میکرو USB به آداپتور DIP (0.14 دلار)
1x مقاومت 10kΩ (<0.01 دلار)
1x خازن سرامیکی 100nF (<0.01 دلار)
1x 10-47µF خازن الکترولیتی (<0.01 دلار)
مجموع <0.97 دلار
مرحله 1: راه اندازی نرم افزار
برای گردآوری کد منبع و ابزار avrdude برای بارگذاری ROM میکروکنترلر ، به ابزارآلات avr-gcc احتیاج دارید. فرآیند نصب بسیار ساده و ساده است ، اما بستگی به سیستم عامل شما دارد. اگر از نوعی GNU/Linux استفاده می کنید ، احتمالاً بسته های مناسبی را در درخت مخزن خود دارید. کد منبع این پروژه را می توانید در اینجا بارگیری کنید:
github.com/arduinocelentano/t13_ws2812_lamp
همچنین به یک کتابخانه light_ws2812 نیاز دارید:
github.com/cpldcpu/light_ws2812
پس از در اختیار داشتن ابزار ابزار avr-gcc و منابع پروژه ، ترمینال خود را اجرا کرده و کد زیر را تایپ کنید:
مسیر cd/به/پروژه
بساز
مرحله 2: برنامه نویسی میکروکنترلر
اگر برنامه نویسی USBASP دارید ، فقط آن را با توجه به pinout خود به Attiny وصل کنید. معمولاً اینطور به نظر می رسد ، اما من اکیداً توصیه می کنم که pinout واقعی خود را بررسی کنید!
متناوبا ، می توانید از برد Arduino به عنوان برنامه نویس استفاده کنید. Arduino IDE را باز کنید و مثال ISP Arduino را در منوی "File → Examples" پیدا کنید. پس از بارگذاری طرح ، برد Arduino شما به عنوان برنامه نویس عمل می کند. نظرات موجود در کد طرح به شما سرنخی برای راه اندازی می دهد.
حالا فرار کن
فلش بساز
برای فلش کردن MCU و
فیوز بزن
برای تنظیم بیت فیوز
توصیه شده:
چراغ خلق LED چاپ سه بعدی: 15 مرحله (همراه با تصاویر)
چراغ خلق LED چاپ سه بعدی: من همیشه این شیفتگی را با لامپ ها داشتم ، بنابراین توانایی ترکیب پرینت سه بعدی و آردوینو با LED ها چیزی بود که من باید دنبال می کردم. مفهوم بسیار ساده است و نتیجه یکی از رضایت بخش ترین دیداری است تجربیاتی که می توانید بگذارید
چراغ خلق با چراغ RGB: 4 مرحله
لامپ خلق و خوی با RGB Led: این برنامه به شما کمک می کند تا از یک لامپارا استفاده کنید و از آردوینو Uno استفاده کنید. Primero se necesitan varios materiales como jumpers ، leds RGB یا Neopixel ، وابسته به cómo se desee hacer. استفاده از سرورهای RGB منجر به ارتباط RGB می شود
چراغ خلق LED کم پلی: 9 مرحله (همراه با تصاویر)
چراغ خلق LED کم پلی: یک افزودنی عالی برای هر میز ، قفسه یا میز! دکمه گسسته واقع شده در پایه به شما امکان می دهد الگوهای مختلف نور LED را طی کنید. مهم نیست که می خواهید از چراغ خود برای مطالعه ، استراحت یا حتی مهمانی استفاده کنید … موارد زیادی وجود دارد
چراغ خلق LED: 9 مرحله (همراه با تصاویر)
چراغ خلق LED: من اخیراً با یک مکعب LED توسط گرگ داویل برخورد کردم. این یک اثر هنری عالی است. با الهام از آن ، حتی من می خواستم چنین چیزی بسازم. اما این یکی از لیگ من خارج شد. من تصمیم گرفتم که یک قدم در یک زمان بردارم و راهی کوچک تر از
چراغ دوربین LED 2 دلاری برای فیلم و عکس: 11 مرحله
چراغ دوربین LED 2 دلاری برای فیلم ها و عکس ها: UPDATE: من یک نسخه جدید و بهبود یافته با 180 لومن دارم از زمانی که دوربین های دیجیتال ویدئوی مناسبی گرفتند ، من دیگر دوربین ویدئویی DV خود را حمل نکردم و در عوض از نقطه و دوربین دیجیتال خود برای چند دقیقه استفاده می کنم. فیلم MOV یا MPG در اینجا و t