جدول المحتويات:
فيديو: مصباح مزاج LED بقيمة 1 دولار مع ATtiny13 و WS2812: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
من قبل arduinocelentano تابع المزيد من قبل المؤلف:
هذا مصباح مزاج منخفض التكلفة بأربعة أوضاع.
1. شرارة قوس قزح. شرارة من الضوء تتحرك صعودًا مرة تلو الأخرى وتغير اللون تدريجيًا.
2. توهج قوس قزح. توهج ثابت يغير اللون تدريجيًا.
3. محاكاة النار شمعة.
4. إيقاف.
يمكنك تبديل الأوضاع من خلال النقر على زر اللمس في الأعلى. يتم حفظ الوضع الحالي في ذاكرة EEPROM بعد إيقاف التشغيل.
ما مدى صغر حجم ATtiny13؟
كانت الفكرة هي الحصول على الحد الأقصى من الميزات من الحد الأدنى من الأجهزة ، وهو شيء أكثر تعقيدًا من التبديل الآلي أو مقياس الحرارة ، وهو مشروع قريب من حافة هذا المتحكم الدقيق. بعد كل شيء ، القيود تجعلك تفكر بطريقة إبداعية ، أليس كذلك؟ حسنًا ، بدا الأمر كذلك في البداية.
كان التحدي الأكبر في هذا المشروع هو دفع كل الكود إلى ATtiny13. يحتوي المتحكم الدقيق على فلاش 1 كيلو بايت وذاكرة وصول عشوائي بسعة 64 بايت. نعم ، عندما أقول "بايت" ، أعني تلك التي تتكون من ثمانية بتات. 64 بايت لجميع المتغيرات المحلية ومكدس المكالمات. لتوضيح الأمر ، ضع في اعتبارك أنه يتعين علينا التحكم في 8 مصابيح LED RGB. يتم تعريف كل منها بـ 3 بايت (واحد للقناة الأحمر والأخضر والأزرق على التوالي). لذلك ، فقط لتخزين حالة 8 مصابيح LED ، سنحتاج إلى تنفيذ مصفوفة من 8 هياكل 3 بايت لكل منها ، وسيستغرق مؤشر بداية هذه المصفوفة بايت واحدًا إضافيًا. وبالتالي ، تم إخراج 25 من 64 بايت. لقد استخدمنا للتو 39٪ من ذاكرة الوصول العشوائي ولم نبدأ بالفعل بعد. بالإضافة إلى ذلك ، لتخزين سبعة ألوان أساسية بألوان قوس قزح ، ستحتاج إلى 7 × 3 = 21 بايت ، وبالتالي فإن 72٪ من ذاكرة الوصول العشوائي قد نفدت. حسنًا ، بالنسبة للألوان الأساسية ، فأنا أبالغ: لسنا بحاجة إليها جميعًا في نفس الوقت في ذاكرة الوصول العشوائي ولا تتغير أبدًا ، لذلك يمكن تنفيذها كمصفوفة ثابتة يتم تخزينها في فلاش بدلاً من ذاكرة الوصول العشوائي. على أي حال ، فإنه يعطي انطباعًا عامًا عن الأجهزة المستخدمة.
تذكرت عبارة Knuth حول التحسين المبكر ، لقد بدأت من وضع نماذج أولية لثلاثة أوضاع للمصباح بشكل منفصل لمعرفة ما سيحدث. لقد اختبرتها بشكل منفصل للتأكد من أنها تعمل بشكل صحيح وأن كل واحدة تناسبها متحكم. استغرق الأمر بضع أمسيات لإنجازها وسار كل شيء على ما يرام … حتى حاولت تجميعها معًا داخل بيان التبديل. أبلغت الأداة المساعدة avr-size عن حجم قسم نصي يبلغ 1.5 كيلوبايت (مع علامة -s لـ avr-gcc). في تلك اللحظة ، كانت نيتي الأصلية هي الحصول على بعض ATtiny25 مع فلاش 2Kb وكان من الممكن أن تكون هذه هي النهاية السعيدة لهذه القصة.
لكن بطريقة ما شعرت أنه بعد التحسين الكبير يمكنني تقليص هذا الرمز السيء إلى 1 كيلوبايت. ومع ذلك ، فقد استغرق الأمر أسبوعًا آخر لإدراك أنه من المستحيل وأسبوع آخر لتحقيق ذلك على أي حال. اضطررت إلى قص قوس قزح إلى خمسة ألوان أساسية (بدون اختلاف بصري كبير). لقد تخلصت من عبارات الحالة واستخدمت سلسلة من if-then-if لتقليل حجم الشفرة الثنائية. تحتاج الرسوم المتحركة للنار إلى مولد أرقام شبه عشوائي ضخم إلى حد كبير ، لذلك قمت بتطبيق نسخة مبسطة من LFSR بقيمة أولية ثابتة. لا يهمني طول دورة PRNG الكاملة وأبحث فقط عن توازن النسب بين حجم الكود و "رسوم متحركة واقعية للنيران". لقد نفذت أيضًا الكثير من التحسينات الطفيفة التي لا أتذكرها الآن ، بل وتمكنت من وميض جميع الأوضاع باستثناء إطلاق النار على الشريحة. عندما نفدت الأفكار ، كان إجمالي الشفرة حوالي 1200 بايت.
لقد استغرقت المهلة وكنت أقرأ كثيرًا عن تحسين كود AVR. كنت على وشك التخلي عن كل شيء وإعادة كتابته بلغة التجميع ، لكنني أعطيته الفرصة الأخيرة. أثناء اندفاع التحسين النهائي ، قمت بقص قوس قزح إلى ثلاثة ألوان أساسية وجعلت الألوان الأخرى قابلة للحساب بسرعة ، وفحصت كل شيء واتبعت توصيات تحسين AVR وأخيرًا …
avrdude: كتابة فلاش (1004 بايت):
الكتابة | ################################################## | 100٪ 0.90 ث
ليست هناك حاجة للقول إنني استخدمت كل ذاكرة الوصول العشوائي تقريبًا وبايت واحد فقط من EEPROM لتخزين الوضع الحالي. أنا لا أعني أن هذا هو تنفيذ مثالي ونهائي. إنه يعمل فقط ويناسب الميكروكونترولر. أنا متأكد من أنه يمكنك القيام بذلك بشكل أفضل. أنا حقا. أريد فقط أن أشارك متعة حل مشكلة تبدو غير عملية كنت تعتبرها شبه مستحيلة في البداية. "وبالتالي ، فإن القرصنة تعني استكشاف حدود الممكن …" - ريتشارد ستالمان.
اللوازم:
1x ATtiny13 MCU (0.28 دولار = 0.24 دولار لـ MCU في حزمة SOP-8 و 0.04 دولار لمحول DIP8)
8x WS2812 RGB LEDs (أوصي بلوحة أو قطعة من شريط LED) (0.42 دولار)
1x TTP223 زر اللمس (0.10 دولار)
1x Micro USB إلى محول DIP (0.14 دولار)
1x 10kΩ المقاوم (<0.01 دولار)
1x 100nF مكثف سيراميك (<0.01 دولار)
1x 10-47 درجة فهرنهايت مكثف إلكتروليتي (<0.01 دولار أمريكي)
الإجمالي <0.97 دولار
الخطوة 1: إعداد البرنامج
ستحتاج إلى سلسلة أدوات avr-gcc لتجميع شفرة المصدر والأداة المساعدة avrdude لتحميل ذاكرة القراءة فقط الخاصة بوحدة التحكم الدقيقة. عملية التثبيت بسيطة ومباشرة إلى حد كبير ، ولكنها تعتمد على نظام التشغيل الخاص بك. إذا كنت تستخدم نوعًا من GNU / Linux ، فمن المحتمل أن يكون لديك بالفعل حزم مناسبة في شجرة مستودعك. يمكن تنزيل الكود المصدري لهذا المشروع من هنا:
github.com/arduinocelentano/t13_ws2812_lamp
ستحتاج أيضًا إلى مكتبة light_ws2812:
github.com/cpldcpu/light_ws2812
بمجرد حصولك على سلسلة أدوات avr-gcc ومصادر المشروع ، قم بتشغيل المحطة الطرفية واكتب الكود التالي:
مسار القرص المضغوط / إلى / المشروع
صنع
الخطوة الثانية: برمجة المتحكم الدقيق
إذا كان لديك نوع من مبرمج USBASP ، فقم فقط بتوصيله بـ Attiny وفقًا ل pinout الخاص به. عادةً ما يبدو الأمر هكذا ، لكنني أوصي بشدة بمراجعة pinout الفعلي الخاص بك!
بدلاً من ذلك ، يمكنك استخدام لوحة Arduino كمبرمج. افتح Arduino IDE وابحث عن مثال Arduino ISP في قائمة "File → Examples". بعد تحميل الرسم التخطيطي ، تعمل لوحة Arduino كمبرمج. ستعطيك التعليقات الموجودة في رمز الرسم فكرة عن التثبيت.
الآن تشغيل
جعل الفلاش
وميض MCU و
جعل الصمامات
لتعيين بت الصمامات.
موصى به:
مصباح مزاج منزلي الصنع: 6 خطوات
Home Made Mood Lamp: Una Mood Lamp es una lámpara a las cual le puedes personalizar el color de la luz. تواصل معنا
كمبيوتر لوحي صغير للرسومات بقيمة 2 دولار: 4 خطوات
جهاز لوحي رسومات صغير بقيمة 2 دولار: TOUCHPAD HACK - كيفية تحويل لوحة اللمس إلى جهاز لوحي رسومات صغير مفيد مع بعض العناصر اليومية البسيطة للحصول على فيديو كامل ، يرجى زيارة الموقع: //www.metacafe.com/watch/777196/2_mini_graphics_tablet
مصباح مزاج LED منخفض بولي: 9 خطوات (مع صور)
مصباح مزاج LED منخفض بولي: إضافة رائعة لأي مكتب أو رف أو طاولة! يتيح لك الزر المنفصل الموجود في القاعدة التنقل بين أنماط إضاءة LED المختلفة. لا يهم إذا كنت تريد استخدام المصباح الخاص بك للدراسة أو الاسترخاء أو حتى الاحتفال … هناك الكثير
شجرة عيد الميلاد PCB بقيمة 1 دولار: 7 خطوات (بالصور)
1 دولار شجرة عيد الميلاد PCB: شجرة عيد الميلاد PCB بواسطة Loann BOUDIN | 2018: عندما يأتي عيد الميلاد ، ماذا يمكن لمحبي الإلكترونيات أن يفعلوا؟ شجرة عيد الميلاد PCB بالطبع! بصفتي عضوًا في نادي هواة الإلكترونيات الصغير ، أود مشاركة شغفي بالإلكترونيات وتصميم ثنائي الفينيل متعدد الكلور من خلال
اصنع كوشتوب الخاص بك (2.00 دولار بدلاً من 40 دولار): 4 خطوات
اصنع كوشتوب خاص بك (2.00 دولار بدلاً من 40.00 دولار): اصنع مسند ظهر آخر بسهولة دون أي مواد حقيقية