جدول المحتويات:
- الخطوة 1: اصنع القاعدة
- الخطوة 2: تحضير حلقات Neopixel
- الخطوة 3: الأسلاك
- الخطوة 4: الكود
- الخطوة 7: توصيل الميكروفون
فيديو: Arduino & Neopixel Coke Bottle Rainbow Party Light: 7 خطوات (مع صور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
لذلك ، اكتشف ابني Doon ضوءًا رائعًا جدًا للحفلة مصنوعًا من زجاجات فحم الكوك القديمة والأجزاء الداخلية اللزجة من Glow Sticks ، ويسأل عما إذا كان بإمكاننا صنع واحدة من أجل امتحاناته المدرسية القادمة هي أكثر من Blowout PartAYYY !!! أقول بالتأكيد ، لكن ألا تفضل الحصول على بعض خواتم Adafruit Neopixel الأنيقة التي كنا نقرأ عنها … لقد نظر إليّ بنظرة فارغة. لأن الحقيقة هي أنه لا يعرف ما أتحدث عنه ، لكن أبي اكتشف فرصة للعب مع حلقات Neopixel التي كان يقرأ عنها ، ونعلم جميعًا أن أحد أهم أسباب إنجاب الآباء المهووسين هو الحصول على عذرًا للعب بأدوات رائعة يقولون إن الجميع من أجل أطفالهم.
هذا مشروع فائق البساطة يبدو رائعًا حقًا. لقد قمنا ببناء قواريرنا المكونة من 3 زجاجات فحم الكوك القديمة ، ولوح خشبي ، وقوس عمود الملعب - أشياء ملقاة في الطابق السفلي - جنبًا إلى جنب مع Arduino (ليوناردو في حالتنا ، ولكن أي لوح Genuino سيفي بالغرض!) وثلاث حلقات Neopixel. لقد طلبت حلقة 9-LED ، لكن انتهى بي الأمر بحلقة 12 LED بنفس السعر. الذي كان حلوًا ، ولكنه كان يعني القيام بذلك على فتحات الآبار - يبلغ عرض حلقات 12-LED 35 مم ، بدلاً من 23 مم. ماذا ستحتاج:
- لوحة Genuino / Arduino (استخدمنا لوحة ليوناردو ، ولكن أي لوحة تقريبًا ستفعل ذلك)
- 3 حلقات Neopixel (12 مصباحًا لكل مصباح): احصل عليها من Adafruit ، وادعم هؤلاء الأشخاص الرائعين
- 1000 f 6.3 فولت أو مكثف أفضل
- 300-500 أوم المقاوم
- لوح خشبي ، أو مربع من خشب الخردة ، أو أي شيء يمكنك ضبط neopixels فيه ووضع زجاجات الكوك في الأعلى
- شكل ما من أشكال التركيب للوحة - عملت قوس عمود الملعب بشكل رائع بالنسبة لنا
- 9v جدار البثره
- 40mm ثقب الحفار
- البراغي والصواميل والغسالات والفواصل
- سلك صلب صلب
- لحام الحديد ولحام
- اللوح
- حافظة بلاستيكية للاردوينو. يمكنك الخروج وشراء علبة بلاستيكية مناسبة تمامًا مصنوعة من بترول عمره مليون عام تم حفره من الأرض في بيئة هشة وتم تصنيعه على الجانب الآخر من الكوكب وشحنه في حاوية إلى مستودع بالقرب منك مع كل تقطع الموانئ في محاذاة مثالية ويتم توصيلها إلى باب منزلك بواسطة شاحنة تقذف ثاني أكسيد الكربون في الغلاف الجوي. أو يمكنك أن تفعل ما فعلته واستخدام صندوق بلاستيكي قديم مهمل.. في هذه الحالة ، صندوق مساعدة ضمادة مدغشقر ملقى في خزانة الأدوية … وحفر بعض الثقوب فيه. هنا تنتهي المحاضرة. هيا نصنع…
الخطوة 1: اصنع القاعدة
يمكنك ارتجال قاعدتك من أي خردة لديك في الطابق السفلي الخاص بك ، أو حتى مجرد استخدام صندوق خشبي أو أي شيء يخفي الأجهزة الإلكترونية الخاصة بك.
أولاً قمنا بحفر ثلاثة ثقوب ، متباعدة بشكل متساوٍ على اللوح الخشبي ، كبيرة بما يكفي لتجلس فيها حلقات Neopixel. في الصورة ، تم حفر الآبار باستخدام مثقاب بأسمائها الحقيقية. في النهاية ، نظرًا للحجم الأكبر للحلقات المكونة من 12 LED ، كان علينا حفر ثقوب بقمة ثقب. كان هذا يعني المرور على طول اللوحة ، وبدلاً من إحضار الحلقات بشكل جيد في آبارهم الصغيرة الدقيقة التي يبلغ عمقها 2 مم مع فتحة مركزية لتشغيل سلك أنيق ، انتهى بي الأمر بتأمين الحلقات باستخدام … ahem … شريط لاصق عبر الجزء السفلي من اللوحة. لا تحكم. لا يمكنك رؤية الجزء السفلي من اللوحة في تصميمي على أي حال. ويكون الجو مظلمًا عند تشغيله. وإلى جانب ذلك - ما الخطأ في الشريط اللاصق؟
كنت بحاجة إلى فسحة بين اللوح والقوس للحصول على لوح توصيل في أسفل اللوحة ومكون واحد - المكثف ، وللأسلاك التي يجب أن تنتقل من لوح التجارب إلى Arduino ، والتي خططت لوضعها داخل الحامل. لذلك وضعت مجموعة من الفواصل المؤقتة على أعمدة المزلاج لإعطاء خلوص كافٍ - حوالي 3 سم ، ارتفاع اللوح وقليلًا حتى لا تسحق الأسلاك. لقد استخدمت اثنين من مسامير التثبيت الخشبية في كل زاوية لأنهما كانا بارتفاع مناسب وكانا مستلقين في درج الرجل … هذا الصندوق من البراغي المفكوكة والمسامير والمسامير ووصلات السلاسل الصدئة ووصلات الخراطيم والعملات المعدنية القديمة والأشياء الحادة بشكل غير متوقع وجميع الأساليب من القطع الصغيرة والبوب التي يمكن أن توفر لك بطريقة سحرية رحلة إلى متجر الأجهزة من خلال تقديم ، إن لم يكن الشيء الذي تحتاجه بالضبط ، شيء من شأنه أن يفعل ما يرام.
حادث سعيد حول عمود الملعب الذي وجدته في الطابق السفلي كان به ثقوب تمر عبر اللوحة بالفعل. لا حاجة لحفر الحديد! تحتوي القاعدة على أربعة فتحات مسامير ملولبة ، وقد قمنا بحفر أربعة فتحات غارقة في اللوح الخشبي لتتناسب.
ثم قمنا برش كل شيء بالأسود القوطي.
الخطوة 2: تحضير حلقات Neopixel
ستحتاج إلى لحام الأسلاك في حلقات neopixel الخاصة بك: سلك Data-In لكل منهم ، وسلك Data-Out لاثنين منهم ، والطاقة والأرض لكل منهما. مهما كان الطول الذي تعتقد أنك بحاجة إليه ، أضف البعض. يمكنك دائمًا قطع الأسلاك الزائدة ، ولا يمكنك تمديد السلك القصير جدًا. واحذر من التحذير من Adafruit:
عند لحام الأسلاك في هذه الحلقات ، يجب أن تكون يقظًا جدًا بشأن نقاط اللحام والدوائر القصيرة. التباعد بين المكونات ضيق للغاية! غالبًا ما يكون من الأسهل إدخال السلك من الأمام واللحام من الخلف.
أتمنى أن أقرأ ذلك قبل أن ألحم في المقدمة. تمكنت من عدم حرق أي من مصابيح LED الخاصة بي ، لكنني أحرقت حافة أحدها بطريقة جعلتني أتعرق حتى قمت بتشغيله. أيضًا ، لو قرأت الدليل الجيد ، كنت قد قرأت أيضًا التحذير بعدم وضع مقطع التمساح على مؤشر LED. دع حطامي القريب من سفينتي يكون منارة لك.
حلقات سلسلة ديزي من Neopixel ، مما يعني أنه يمكنك التحكم في جميع مصابيح LED الخاصة بها في وقت واحد من Arduino عن طريق توصيل سلك من مخرج حلقة واحدة إلى IN في أخرى. كل حلقة تحتاج إلى أسلاك كهربائية وأرضية أيضًا.
الخطوة 3: الأسلاك
قم بربطها كما في Fritzing أعلاه - يأخذ دبوس 6 من Arduino البيانات إلى الحلقة الأولى ، وتنتقل البيانات الخارجة من تلك الحلقة إلى Data-in من التالي ، وتنتقل البيانات الخارجة من ذلك الواحد إلى البيانات الواردة للحلقة الأخيرة. لا تحتاج إلى سلك إخراج البيانات من الحلقة النهائية.
تبلغ سعة 1000 f بين القضبان الموجبة والسالبة للوح. يحمي هذا الغطاء الحلقات من ارتفاعات الطاقة ويوصى به قسم أفضل الممارسات في Adafruit NeoPixel Uberguide. يوصى أيضًا Adafruit بالمقاوم الموجود على البيانات في أول neopixel - إنه 1K في Fritzing لكن المقاومة الموصى بها هي 300-500 أوم.
في بنائي ، قمت بتشغيل الأسلاك من Neopixels عبر الجزء الخلفي من اللوحة إلى لوحة توصيل مثبتة في المركز. بهذه الطريقة سيكون عليك فقط تشغيل ثلاثة أسلاك طويلة لأسفل في الوحدة الأساسية: الطاقة والأرض والبيانات. لقد جعلت هذه الأسلاك طويلة جدًا - هناك مساحة تخزين كبيرة في القاعدة ، مما يجعل من السهل أن تكون قادرًا على سحب اللوحة للخارج لإعادة البرمجة.
الخطوة 4: الكود
"loading =" lazy "ذكر أن ابني يريد إصدارًا تفاعليًا للموسيقى من هذا. استغرق حتى عيد ميلاده الثامن عشر للتغلب على ذلك ، ولكن ها هو!
قطع إضافية من المعدات:
1 قطب واحد ، مفتاح رمي مزدوج 1 ميكروفون تحكم تلقائي في الكسب (استخدمت MAX9184 من AdaFruit) مكثف 1 فائق التوهج 100 فائق التوهج (أي قيمة)
يجب أن يتمتع الميكروفون بالتحكم التلقائي في الكسب حتى يعمل بشكل صحيح. سيعمل AGC باستمرار على أخذ عينات من الضوضاء المحيطة ورفع وخفض العتبة التي يعتبرها الخلفية ، لذلك سوف يستجيب الضوء الخاص بك للارتفاعات على تلك الخلفية. ميكروفون AdaFruit رائع: يمكنك الانتقال من غرفة صامتة حيث يؤدي صوت صوت واحد إلى تشغيله في وضع الحفلة الكامل مع غرفة مليئة بالمراهقين والموسيقى الصاخبة ، وسوف يلتقط إيقاع الموسيقى فقط بخير. البديل ، وهو ميكروفون Gain قابل للتعديل ، يحتوي على مقياس جهد صغير على السبورة وهو دقيق للغاية ومبهج. لا يتطلب الأمر تغييرًا كبيرًا في الصوت المحيط لجعل الوحدة عديمة الفائدة: الأضواء مضاءة باستمرار أو مظلمة باستمرار. AGC يعمل مثل السحر.
كنت أرغب في خيار استخدام نمط اختبار الدوامة أو الموسيقى ، لذلك قمت بتوصيل السلك المركزي للمحول إلى VIN وقيادة واحدة لتثبيتها 4 الأخرى إلى دبوس 8 من ليوناردو. من خلال اختبار هذه المسامير من أجل HIGH أو LOW ، يمكننا معرفة الحالة التي يوجد بها المفتاح ، ورمز الفرع وفقًا لذلك.
الخطوة 7: توصيل الميكروفون
قم بتغذية مدخل الميكروفون ، عبر هذا المكثف 1-100 درجة فهرنهايت ، في الدبوس التناظري 0. إذا كان المكثف لديك مستقطبًا ، ينتقل الدبوس إلى الجانب الموجب (السلك الأخضر).
بفضل CodeGirlJP لروتينها Trinket-Color-by-Sound ، والذي قمت بتكييفه أدناه:
// مصابيح LED مفعّلة بالصوت مع Arduino و NeoPixels
#يشمل
#define MIC_PIN A0 // الميكروفون متصل بالدبوس a0 على ليوناردو
#define LED_PIN 6 // NeoPixel LED حبلا متصل بالدبوس 6 على ليوناردو #define N_PIXELS 36 // عدد البكسل في شريط LED !!!!!! اضبط على عدد البكسل في الإعداد الخاص بك. هذا صحيح لـ 3 حلقات Neopixel !!!!!! #define N 100 // عدد العينات التي يجب أخذها في كل مرة تسمى العينات #define fadeDelay 5 // وقت التأخير لكل مقدار خفوت # تعريف الضوضاءالمستوى 30 // مستوى الانحدار لمتوسط ضوضاء الميكروفون بدون صوت
// تهيئة شريط NeoPixel بالقيم المحددة أعلاه:
شريط Adafruit_NeoPixel = Adafruit_NeoPixel (N_PIXELS ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛
عينات int [N] ؛ // تخزين لمجموعة عينات
فترة intFactor = 0 ؛ // تتبع عدد مللي ثانية لحساب الفترة int t1 = -1 ؛ تم اكتشاف // أوقات المنحدر> 100. int T ؛ // الفترة بين الأوقات التي تم قياسها إلى ميلي ثانية int منحدر ؛ // منحدر نقطتي بيانات تم جمعهما من نقاط بايت periodChanged = 0 ؛ const int SwitchPinMusic = 4 ؛ // دبوس لموقف التبديل حساسية الموسيقى const int SwitchPinSwirl = 8 ؛ // دبوس لموقف التبديل نموذج الاختبار (دوامة) int MusicbuttonState = 0 ؛ // تشغيل متغير المنطق لحساسية الموسيقى
// طريقة إعداد اردوينو
الإعداد باطل() {
strip.begin () ،
ledsOff () ، تأخير (500) ؛ عرض اللون (عجلة (100)) ؛ عرض الشريط()؛ تأخير (500) ؛ oddWheel (عجلة (100)) ؛ عرض الشريط()؛ تأخير (500) ؛ pinMode (SwitchPinMusic ، INPUT) ؛ pinMode (SwitchPinSwirl ، INPUT) ؛ // attachInterrupt (4، Switched، FALLING)؛
}
// طريقة حلقة اردوينو
حلقة باطلة () {SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ // مرتفع إذا تم ضبط التبديل على حساسية الموسيقى MusicbuttonState = digitalRead (SwitchPinMusic) ؛ // HIGH إذا تم ضبط التبديل على نمط الاختبار أثناء (SwirlbuttonState == LOW) {readSamples () ؛ // قم بتشغيل روتين عينات الموسيقى SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ // تحقق مما إذا تم تغيير المفتاح} SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ MusicbuttonState = digitalRead (SwitchPinMusic) ، while (SwirlbuttonState == HIGH) {Dance () ؛ // قم بتشغيل روتين نمط الاختبار الدوامي SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ // تحقق مما إذا تم تغيير المفتاح
}
}
رقصة باطلة {
while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255، 0، 0)، 50) ؛ // Red SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ مسح اللون (شريط ، لون (0 ، 255 ، 0) ، 50) ؛ // Green SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ مسح اللون (شريط ، لون (0 ، 0 ، 255) ، 50) ؛ // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ //colorWipe(strip. Color(0، 0، 0، 255)، 50) ؛ // White RGBW // أرسل مطاردة بكسل المسرح في… SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ المسرح (الشريط ، اللون (127 ، 127 ، 127) ، 50) ؛ // White SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ المسرح (شريط اللون (127 ، 0 ، 0) ، 50) ؛ // Red SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ المسرح (شريط اللون (0 ، 0 ، 127) ، 50) ؛ // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl) ؛ قوس قزح (20) ؛ SwirlbuttonState = digitalRead (SwitchPinSwirl) ، دورة قوس قزح (20) ؛ SwirlbuttonState = digitalRead (SwitchPinSwirl) ، theatreChaseRainbow (50) ؛ SwirlbuttonState = digitalRead (SwitchPinSwirl) ، }} // قراءة ومعالجة بيانات العينة من readSamples باطل هيئة التصنيع العسكري () {for (int i = 0؛ i0) {slope = sample - sample [i-1]؛ } else {المنحدر = العينات - العينات [N-1] ؛ } // تحقق مما إذا كان المنحدر أكبر من مستوى الضجيج - الصوت غير المكتشف عند مستوى الضوضاء إذا (abs (المنحدر)> مستوى الضجيج) {if (المنحدر <0) {calculatePeriod (i)؛ if (periodChanged == 1) {displayColor (getColor (T)) ؛ }}} else {ledsOff () ؛ // theatreChaseRainbow (50) ؛ } periodFactor + = 1 ؛ تأخير (1) ؛ }}
حساب باطل فترة (int i)
{if (t1 == -1) {// t1 لم يتم تعيينها t1 = i ؛ } تم تعيين else {// t1 لذا احسب الفترة int period = periodFactor * (i - t1)؛ periodChanged = T == فترة؟ 0: 1 T = فترة //Serial.println(T) ؛ // إعادة تعيين t1 إلى قيمة i الجديدة t1 = i ؛ periodFactor = 0 ؛ }}
uint32_t getColor (فترة int)
{if (period == -1) return Wheel (0) ؛ وإلا إذا كانت (فترة> 400) عجلة العودة (5) ؛ عجلة رجوع أخرى (خريطة (-1 * نقطة ، -400 ، -1 ، 50 ، 255)) ؛ }
تتلاشى باطلة ()
{for (int i = 0؛ i <5؛ i ++) {strip.setBrightness (110 - i * 20) ؛ عرض الشريط()؛ // تأخير الشريط التحديث (fadeDelay) ؛ periodFactor + = fadeDelay ؛ }}
تتلاشى باطلة ()
{strip.setBrightness (100) ، عرض الشريط()؛ // تحديث الشريط // يتلاشى اللون من أجل (int i = 0 ؛ i <5 ؛ i ++) {//strip.setBrightness(20*i + 30) ؛ //عرض الشريط()؛ // تأخير الشريط التحديث (fadeDelay) ؛ periodFactor + = fadeDelay ؛ }}
المصابيح الباطلة
{ تتآكل()؛ لـ (int i = 0 ؛ i
شاشة باطلة
{لـ (int i = 0 ؛ i
عجلة فردية باطلة (لون uint32_t)
{for (int j = 0؛ j <256؛ j ++) {// دورة كل 256 لونًا في العجلة من أجل (int q = 0؛ q <3؛ q ++) {for (uint16_t i = 24؛ i <36؛ i = i + 3) {strip.setPixelColor (i + q، Wheel ((i + j)٪ 255)) ؛ // تشغيل كل بكسل ثالث} strip.show () ؛
تأخير (1) ؛
لـ (uint16_t i = 24؛ i <36؛ i = i + 3) {strip.setPixelColor (i + q، 0) ؛ / / turn every third pixel off}}} fadeIn ()؛ }
// املأ النقاط واحدة تلو الأخرى بلون
لون باطل (uint32_t c، uint8_t wait) {لـ (uint16_t i = 0؛ i
قوس قزح باطل (uint8_t انتظر) {
uint16_t أنا ، ي ؛
لـ (j = 0 ؛ j <256 ؛ j ++) {لـ (i = 0 ؛ i
// مختلف قليلاً ، وهذا يجعل قوس قزح موزعًا بالتساوي في جميع الأنحاء
قوس قزح باطل (uint8_t wait) {uint16_t i، j؛
لـ (j = 0 ؛ j <256 * 5 ؛ j ++) {// 5 دورات من كل الألوان على العجلة لـ (i = 0 ؛ i <strip.numPixels () ؛ i ++) {strip.setPixelColor (i ، Wheel ((((i * 256 / strip.numPixels ()) + j) & 255)) ؛ } عرض الشريط()؛ تأخير (انتظر) ؛ }}
// أضواء زاحفة على غرار المسرح.
void theatreChase (uint32_t c، uint8_t wait) {(int j = 0؛ j <10؛ j ++) {// do 10 cycles of chasing for (int q = 0؛ q <3؛ q ++) {for (uint16_t i = 0؛ i <strip.numPixels ()؛ i = i + 3) {strip.setPixelColor (i + q، c)؛ // تشغيل كل بكسل ثالث} strip.show () ؛
تأخير (انتظر) ؛
لـ (uint16_t i = 0 ؛ i <strip.numPixels () ؛ i = i + 3) {strip.setPixelColor (i + q، 0) ؛ // إيقاف تشغيل كل بكسل ثالث}}}}
// أضواء زاحفة على غرار المسرح مع تأثير قوس قزح
void theatreChaseRainbow (uint8_t wait) {for (int j = 0؛ j <256؛ j ++) {// دورة كل 256 لونًا في العجلة لـ (int q = 0؛ q <3؛ q ++) {for (uint16_t i = 0 ؛ i <strip.numPixels () ؛ i = i + 3) {strip.setPixelColor (i + q، Wheel ((i + j)٪ 255)) ؛ // تشغيل كل بكسل ثالث} strip.show () ؛
تأخير (انتظر) ؛
لـ (uint16_t i = 0 ؛ i <strip.numPixels () ؛ i = i + 3) {strip.setPixelColor (i + q، 0) ؛ // إيقاف تشغيل كل بكسل ثالث}}}}
// أدخل القيمة من 0 إلى 255 للحصول على قيمة اللون.
// الألوان هي انتقال r - g - b - العودة إلى r. uint32_t Wheel (بايت WheelPos) {WheelPos = 255 - WheelPos ؛ إذا (WheelPos <85) {return strip. Color (255 - WheelPos * 3 ، 0 ، WheelPos * 3) ؛ } إذا (WheelPos <170) {WheelPos - = 85 ؛ شريط الإرجاع اللون (0 ، WheelPos * 3 ، 255 - WheelPos * 3) ؛ } WheelPos - = 170 ؛ شريط العودة اللون (WheelPos * 3 ، 255 - WheelPos * 3 ، 0) ؛ }
تبديل باطل () {
عرض الشريط()؛ readSamples () ؛ }
قبل أن أتعرض للذبح في التعليقات (تذكر سياسة Be Nice !!) أدركت بعد أن قمت بتحميل هذا كيف أن بعض التعليمات البرمجية قذرة. ليست هناك حاجة لاختبار كل من Pin 4 و Pin 8 باستمرار من أجل HIGH. نظرًا لأن المفتاح عبارة عن رمية مزدوجة أحادية القطب ، فيمكن الاستدلال على قيمة أحدهما من الآخر: ما عليك سوى اختبار أحدهما. لذلك يمكنك متابعة كل إشارة إلى قراءة وكتابة MusicButtonState وإزالتها وتشغيل كل شيء بشكل أكثر كفاءة عن طريق اختبار SwirlButtonState ، إذا كان لديك ذاكرة منخفضة أو تتمدد مع إجراءات أخرى. لكن الكود أعلاه يعمل.
وإذا أراد أي شخص تعديل إجراءات الصوت هذه ليستشعر فقط مستويات الضوضاء ولكن التردد أيضًا ، وكتابة بعض الرموز السلسة للانزلاق لأعلى ولأسفل في طيف الضوء استجابةً للتحركات على طول طيف الصوت ، فقم بإسقاط رابط في التعليقات إلى كيف فعلتها.
يتمتع!
موصى به:
Neopixel Ws2812 Rainbow LED يتوهج مع M5stick-C - تشغيل Rainbow على Neopixel Ws2812 باستخدام M5stack M5stick C باستخدام Arduino IDE: 5 خطوات
Neopixel Ws2812 Rainbow LED يتوهج مع M5stick-C | تشغيل Rainbow على Neopixel Ws2812 باستخدام M5stack M5stick C باستخدام Arduino IDE: مرحبًا يا رفاق في هذه التعليمات ، سوف نتعلم كيفية استخدام مصابيح LED من neopixel ws2812 أو شريط LED أو مصفوفة LED أو حلقة LED مع لوحة تطوير m5stack m5stick-C مع Arduino IDE وسوف نصنع نمط قوس قزح معها
عرض متحف Rainbow Shadow: 10 خطوات (مع صور)
عرض متحف Rainbow Shadow: تقع مدرستي في موقع المتحف ، مركز العلوم الغربي. يحتوي WSC على عظام من كائنات العصر الجليدي (الماموث ، والماستودون ، والكسلان ، وما إلى ذلك) التي تم حفرها عند إنشاء خزان Diamond Valley. اعتمدت المدرسة & quot؛ اكتشاف المتحف
& acirc؛ & ndash؛ & rsquo؛. :: *، Awesome Design (Microsoft Paint)، * ::. & acirc؛ & ndash؛ & rsquo ؛: 4 خطوات
& acirc؛ & ndash؛ & rsquo؛. :: *، Awesome Design (Microsoft Paint)، * ::. & acirc؛ & ndash؛ & rsquo ؛: سأوضح لك كيفية عمل تصميم رائع باستخدام طلاء Microsoft ، أو مجرد قلم رصاص وورقة! ! ملاحظة. يرجى تقييم والتصويت لمسابقة الكتاب. مليون شكرا
سماعة رأس رخيصة + هاتف خلوي مكسور = & quot؛ SkypeCell & quot ؛: 7 خطوات (مع صور)
سماعة رأس رخيصة + هاتف خلوي مكسور = & quot؛ SkypeCell & quot ؛: بالنسبة إلى هذا الإصدار الأول Instructable ، سأوضح لك اختراقًا حديثًا قمت به ، كان لديّ سماعة رأس رخيصة معطلة وهاتف محمول مكسور (شاشة متصدعة) وكنت بحاجة إلى حل موثوق لإجراء المكالمات مع Skype … لذا جمعت عنصرين جاهزين في المهملات أثناء التنقل
منحني معاد تدويره & quot؛ زجاج & quot؛ إطار الصورة: 7 خطوات (مع صور)
منحني معاد تدويره & quot؛ زجاج & quot؛ إطار الصورة: استخدام آخر لنفاياتنا الحديثة من الزجاجات البلاستيكية ، وبقايا عبوات الورق المقوى ، وبعض ملابس متاجر التوفير - اصنع إطارات صور أمامية أنيقة ذات طراز عتيق من أجل صورك المفضلة كلها من مواد معاد تدويرها