جدول المحتويات:

اللمس السعوي المزاج / Ambilight: 8 خطوات
اللمس السعوي المزاج / Ambilight: 8 خطوات

فيديو: اللمس السعوي المزاج / Ambilight: 8 خطوات

فيديو: اللمس السعوي المزاج / Ambilight: 8 خطوات
فيديو: جهاز شيشه لمس 🙀!! تي ٢٠٠ من جيك فيب geekvape t200 2024, يوليو
Anonim
اللمس السعوي المزاج / Ambilight
اللمس السعوي المزاج / Ambilight

هذه التعليمات عبارة عن كتابة سريعة لتجربتي في إنشاء ضوء مزاج متعدد الوظائف. من المتوقع بعض المعرفة الأساسية للدوائر الإلكترونية. لم ينته المشروع بعد ، ولا بد من القيام ببعض الوظائف الإضافية والتعديل ولكنه يعمل بالفعل. إذا كنتم متحمسون لهذه التعليمات ، فسوف أقوم بتحديثها. في قلب النظام يوجد Arduino. ستقوم بمعالجة المدخلات من USB أو كل من مدخلات اللمس السعوية والتحكم في ضوء RGB. ينقسم هذا التوجيه إلى ثلاثة أقسام: - يغطي قسم اللمس السعوي أزرار الإدخال غير المرئية - يغطي قسم الحالة المزاجية التحكم في ضوء الحالة - يغطي قسم الضوء المحيط الإدخال عن طريق المنفذ التسلسلي ، ومعالجة قيم RGB التي تم إنشاؤها بواسطة برنامج كمبيوتر للتحكم في الأضواء إخلاء المسؤولية: يمكن أن تكون الإلكترونيات خطرة ، وأنت مسؤول عن أي ضرر يحدث. يتم جمع بعض الرموز من المنتديات وقد لا تحتوي على اسم مالكها. يرجى إعلامي وسأضيف اسمك.

الخطوة 1: قائمة العناصر

المكونات التالية مطلوبة لهذه التعليمات: - كابل Arduino + USB - لوحة التوصيل - مصدر طاقة الكمبيوتر - 3 شرائط RGB ، تحقق من dealextreme.com - 3x TIP120 FETs ، مثل https://uk.farnell.com/stmicroelectronics/tip120 / darlington-transistor-to-220 / dp / 9804005- مجموعة من المقاومات (6 * 10 كيلو أوم ، 3 * 2 ميجا أوم) - الكثير من الأسلاك. - أدوات اللمس بالسعة - حلقات معدنية للألواح الأرضية - سلك أو طبق نحاسي - شيء لبنائه (مثل رف الكتب:)

الخطوة 2: اللمس بالسعة - الأساسيات والدائرة

اللمس بالسعة - الأساسيات والدائرة
اللمس بالسعة - الأساسيات والدائرة
اللمس بالسعة - الأساسيات والدائرة
اللمس بالسعة - الأساسيات والدائرة
اللمس بالسعة - الأساسيات والدائرة
اللمس بالسعة - الأساسيات والدائرة

منذ أن كنت أرسم أرفف الكتب الخاصة بي ، كانت لدي الفرصة "لترقيتها" أيضًا. كنت أرغب في التحكم في الإضاءة المزاجية عن طريق اللمس غير المرئي. في البداية ، كانت خطتي هي استخدام IC مخصص لهذا (مثل Atmel QT240). لكن بعد ذلك عثرت على صفحة توضح أن Arduino يمكنه محاكاة مستشعر سعوي بواسطة البرنامج. يمكن العثور على الدائرة الإلكترونية في الصورة ، والمستشعر عبارة عن سلك نحاسي حلزوني (يظهر واحد فقط من أجل البساطة). يتم التحكم في الحساسية بواسطة المقاومات الموجودة قبل كل دبوس. يمكن أن تتراوح من 1 MegaOhm (اللمس المطلق) إلى 40 MegaOhm (12-24 بوصة) اعتمادًا على ما إذا كانت هناك حاجة إلى اللمس المطلق أو القريب (انتهى بي الأمر باستخدام مقاومات 2M أوم). جرب القيم حتى يتصرف المستشعر بالشكل المطلوب. إنها لفكرة جيدة أن تقوم بتركيب بعض الأسطح الموصلة (مفصولة بقطعة رقيقة غير موصلة) متصلة بأرض الدوائر في الجزء الخلفي من كل لولب. بهذه الطريقة ستكون المستشعرات أكثر استقرارًا وأقل تأثرًا بالضوضاء. بعض الصور حول تركيب المستشعرات في رف الكتب. يتم تثبيت قابس أيضًا لسهولة الاتصال بالدائرة في وقت لاحق. يستخدم الفيلر لإخفاء كل شيء ، وبعد ذلك تكون جاهزة للرسم.

الخطوة 3: اللمس بالسعة - الكود والاختبار

اللمس بالسعة - الكود والاختبار
اللمس بالسعة - الكود والاختبار

يمكن استخدام الكود المصدري التالي على Arduino لتصحيح الأخطاء ، تحقق من القيم باستخدام شاشة arduino التسلسلية. يتم إنشاء ست قيم. الأول هو مقياس أداء النظام. من الثاني إلى السادس هي القيم المحسوسة على كل دبوس. يجب أن ترتفع القيم عند الاقتراب من إصبعك. إذا لم يكن كذلك ، فتحقق من الاتصالات السيئة والتداخل. يمكن تغيير قيم المقاوم لتحديد الحساسية. من خلال تنفيذ هيكل if-then الذي يتم تنشيطه عند حد منطقي معين ، يمكن إجراء مفتاح. سيتم استخدام هذا في كود اردوينو النهائي. مزيد من المعلومات ، يُقترح قراءتها: https://www.arduino.cc/playground/Main/CapSense--- Arduino CapTouch Debugging Code --- # include void setup () {CapSense cs_2_3 = CapSense (2 ، 4) ، // 10M المقاوم بين الدبابيس 2 و 4 ، والدبوس 4 هو دبوس المستشعر ، إضافة سلك ، foilCapSense cs_2_4 = CapSense (2 ، 7) ؛ // 10M المقاوم بين الدبابيس 2 و 7 ، الدبوس 7 هو دبوس المستشعر ، إضافة سلك ، foilCapSense cs_2_5 = CapSense (2 ، 8) ؛ // 10M المقاوم بين المسامير 2 و 8 ، الدبوس 8 هو دبوس المستشعر ، إضافة سلك ، foilCapSense cs_2_6 = CapSense (2 ، 12) ؛ // 10M المقاوم بين الدبابيس 2 و 12 ، الدبوس 12 هو دبوس المستشعر ، إضافة سلك ، foilCapSense cs_2_7 = CapSense (2 ، 13) ؛ // 10M المقاوم بين الدبابيس 2 و 13 ، الدبوس 13 هو دبوس المستشعر ، إضافة سلك ، إعداد foilvoid () {Serial.begin (9600)؛} حلقة فارغة () {long start = millis ()؛ long total1 = cs_2_3.capSense (30) ؛ long total2 = cs_2_4.capSense (30) ؛ long total3 = cs_2_5.capSense (30) ؛ إجمالي طويل 4 = cs_2_6.capSense (30) ، long total5 = cs_2_7.capSense (30) ؛ Serial.print (مللي () - بدء) ؛ // تحقق من الأداء بالمللي ثانية Serial.print ("\ t") ؛ // حرف الجدولة لتصحيح أخطاء التباعد في الهواء Serial.print (total1) ؛ // إخراج مستشعر الطباعة 1 Serial.print ("\ t") ؛ Serial.print (total2) ؛ // إخراج مستشعر الطباعة 2 Serial.print ("\ t") ؛ Serial.print (total3) ؛ // إخراج مستشعر الطباعة 3 Serial.print ("\ t") ؛ Serial.print (total4) ؛ // إخراج مستشعر الطباعة 4 Serial.print ("\ t") ؛ Serial.println (total5) ؛ // إخراج مستشعر الطباعة 5 تأخير (10) ؛ // تأخير تعسفي لتقييد البيانات إلى المنفذ التسلسلي} --- END ---

الخطوة 4: ضوء الحالة المزاجية - الأساسيات والدائرة

ضوء المزاج - أساسيات ودائرة كهربائية
ضوء المزاج - أساسيات ودائرة كهربائية
ضوء المزاج - أساسيات ودائرة كهربائية
ضوء المزاج - أساسيات ودائرة كهربائية
ضوء المزاج - أساسيات ودائرة كهربائية
ضوء المزاج - أساسيات ودائرة كهربائية

حان الوقت الآن لبناء جزء الإخراج من النظام. سيتم استخدام دبابيس اردوينو PWM للتحكم في كل لون. PWM تعني تعديل عرض النبض ، عن طريق تشغيل دبوس وإيقاف تشغيله بسرعة كبيرة ، سيتم تعتيم المصابيح من 0 إلى 255. سيتم تضخيم كل دبوس بواسطة FET. في الوقت الحالي ، يحتوي النظام على قناة واحدة فقط لكل لون ، مما يعني أنه سيتم التحكم في جميع شرائط RGB مرة واحدة وهناك حاجة إلى 3 دبابيس PWM (واحدة لكل لون). أريد في المستقبل أن أكون قادرًا على التحكم في كل من شرائط RGB الأربعة الخاصة بي. هذا يعني 4 * 3 = 12 دبوس PWM (وربما Arduino Mega) حسنًا ، حان الوقت لبعض الخطط! هذا (انظر الصورة) هو تمثيل أساسي للدائرة (ستجعل واحدًا أجمل قريبًا). يتم تضمين المستشعرات السعوية أيضًا (الجزء الأخضر). في الأساس هناك ثلاثة مكونات يجب شرحها: - FET - هذا هو مكبر الصوت الذي كنت أتحدث عنه. لها بوابة ومصدر ومصرف. إنه يضخم الحواس بتيار صغير على البوابة (متصل بـ Arduino) ويفتح الطريق لشريط RGB الذي يتم تشغيله على 12 فولت. يجب أن يكون المصدر على + 12V ، استنزاف على GND (الأرض). تحقق من ورقة المواصفات الخاصة بـ FET للحصول على pinout الدقيق. يجب وضع كل قناة RGB قبل FET الخاص بها. وبهذا المعنى ، فهو يتصرف مثل مفتاح تحكم Arduino. - شريط RGB هذا 12 فولت شريط RGB من النوع الأنود الشائع (+). بمعنى ، يجب توصيل السلك المشترك بـ + 12V وأن التيار يغرق عبر كل من قنوات الألوان المنفصلة. يحتوي الشريط على مقاومات ، لذلك لا تقلق بشأن ذلك! - المقاومات ستضمن ثلاثة مقاومات 10k عدم تشغيل FET عندما لا يُفترض أن يتم تشغيلها. سيحد ثلاثة آخرون من الحد الأقصى الحالي الذي سوف يستنزفه FET. توجد المقاومات الثلاثة الأولى بالفعل في شريط RGB ، لقد قمت بلحام كبلات USB بشرائط RGB حتى أتمكن من توصيلها بشكل معياري بسهولة. يتم وضع المقابس من المحور القديم على لوح التجارب الخاص بي. استخدم مصدر طاقة قديم للكمبيوتر للعصير ، بجهد 12 فولت لتشغيل شريط RGB وأخيراً 5 فولت للدائرة إذا كنت تريد تشغيله بدون كابل USB.

الخطوة 5: Mood Light - Code & Control

يتم التحكم في ضوء الحالة المزاجية بواسطة أجهزة استشعار سعوية. في الوقت الحالي ، قمت فقط ببرمجة المستشعرات 2 و 3 لتغيير اللون. أجهزة الاستشعار الأخرى ليس لها وظيفة حتى الآن. إليك الكود: --- كود Arduino Mood Control --- # include const boolean invert = true ؛ const long timeout = 10000 ؛ // Capacitive sensor StatementCapSense In1 = CapSense (2، 4)؛ // 2M المقاوم بين المسامير 4 & 2 ، الدبوس 2 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In2 = CapSense (2 ، 7) ؛ // 2M المقاوم بين المسامير 4 و 6 ، والدبوس 6 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In3 = CapSense (2 ، 8) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In4 = CapSense (2 ، 12) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In5 = CapSense (2 ، 13) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس الاستشعار ، إضافة سلك ، احباط // PWM Pin الإعلاناتint PinR1 = 3 ؛ int PinG1 = 5 ؛ int PinB1 = 6 ؛ // متغيرات أخرى Color1 = 128 ؛ // ابدأ بلون أحمر مثل السطوع 1 = 255 ؛ // ابدأ عند السطوع الكامل RedValue1 و GreenValue1 و BlueValue1 ؛ // مكونات RGB باطلة الإعداد () {// ضبط قيم مهلة المستشعر In1.set_CS_AutocaL_Millis (مهلة) ؛ In2.set_CS_AutocaL_Millis (مهلة) ، In3.set_CS_AutocaL_Millis (مهلة) ، In4.set_CS_AutocaL_Millis (مهلة) ، In5.set_CS_AutocaL_Millis (timeout) ؛} حلقة فارغة () {long start = millis () ؛ long total1 = In1.capSense (30) ؛ long total2 = In2.capSense (30) ؛ long total3 = In3.capSense (30) ؛ إجمالي طويل 4 = In4.capSense (30) ؛ long total5 = In5.capSense (30) ؛ if (total2> 150) {Color1 ++؛ // زيادة اللون إذا (Color1> 255) {// Color1 = 0 ؛ }} else if (total3> 200) {Color1--؛ // إنقاص اللون إذا (Color1 <0) {// Color1 = 255 ؛ } // تحويل hue إلى rgb hueToRGB (Color1، Brightness1) ؛ // كتابة الألوان إلى دبابيس PWM analogWrite (PinR1 ، RedValue1) ؛ analogWrite (PinG1 ، GreenValue1) ؛ analogWrite (PinB1، BlueValue1)؛} // وظيفة لتحويل اللون إلى مكوناته من الأحمر والأخضر والأزرق. مقطع int غير موقعة = scaledHue / 256 ؛ // قطعة من 0 إلى 5 حول عجلة الألوان غير موقعة ، مقطع int Offset = scaledHue - (مقطع * 256) ؛ // موضع داخل المقطع مجاملة int غير موقعة = 0 ؛ int prev غير الموقعة = (السطوع * (255 - PartOffset)) / 256 ؛ int next غير الموقعة = (السطوع * جزء الإزاحة) / 256 ؛ إذا (عكس) {السطوع = 255 سطوع ؛ مجاملة = 255 ؛ السابق = 255 سابقًا ؛ التالي = 255 التالي ؛ } التبديل (مقطع) {الحالة 0: // redValue1 = السطوع ؛ GreenValue1 = التالي ؛ BlueValue1 = مجاملة ؛ استراحة؛ الحالة 1: // أصفر RedValue1 = prev ؛ GreenValue1 = سطوع ؛ BlueValue1 = مجاملة ؛ استراحة؛ الحالة 2: // أخضر RedValue1 = مجاملة ؛ GreenValue1 = سطوع ؛ BlueValue1 = التالي ؛ استراحة؛ الحالة 3: // سماوي RedValue1 = مجاملة ؛ GreenValue1 = prev ؛ BlueValue1 = سطوع ؛ استراحة؛ الحالة 4: // blue RedValue1 = التالي ؛ GreenValue1 = مجاملة ؛ BlueValue1 = سطوع ؛ استراحة؛ الحالة 5: // أرجواني افتراضي: RedValue1 = السطوع ؛ GreenValue1 = مجاملة ؛ BlueValue1 = السابق ؛ استراحة؛ }}--- نهاية ---

الخطوة 6: Ambi Light - جانب Arduino

بالطبع ، سيكون من الرائع تمامًا أن تكون قادرًا على التحكم في إضاءة الحالة من جهاز الكمبيوتر الخاص بك. على سبيل المثال لإنشاء غرفة نوم أو صالة ديسكو يتم التحكم فيها بالصوت. يركز هذا القسم على جزء الضوء ، في المستقبل سأضيف المزيد من الوظائف حسنًا ، لا توجد دوائر إضافية لأنها متوفرة كلها في Arduino. ما سنستخدمه هو قدرات الاتصال التسلسلي وبعض برامج "معالجة 1.0". قم بتوصيل اردوينو بجهاز الكمبيوتر الخاص بك عن طريق كابل USB (إذا كنت تقوم بتحميل الرسومات عليه ، فهو بالفعل كذلك). بالنسبة إلى اردوينو ، يجب عليك إضافة بعض التعليمات البرمجية الإضافية للاتصال التسلسلي. سيتحول الرمز إلى وضع الاستماع ، مما يؤدي إلى تشغيل المستشعرات السعوية طالما أنها تتلقى قيم RGB من الكمبيوتر. ثم يقوم بتعيين قيم RGB على دبابيس PWM. هذا هو الكود النهائي الخاص بي في الوقت الحالي ، تحقق من التغييرات بنفسك: --- Arduino Ambilight Code --- # include const boolean invert = true ؛ const long timeout = 10000 ؛ long commStart = 0 ؛ char val ؛ // Capacitive sensor StatementCapSense In1 = CapSense (2، 4) ؛ // 2M المقاوم بين المسامير 4 & 2 ، الدبوس 2 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In2 = CapSense (2 ، 7) ؛ // 2M المقاوم بين المسامير 4 و 6 ، والدبوس 6 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In3 = CapSense (2 ، 8) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In4 = CapSense (2 ، 12) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس المستشعر ، إضافة سلك ، foilCapSense In5 = CapSense (2 ، 13) ؛ // 2M المقاوم بين الدبابيس 4 و 8 ، الدبوس 8 هو دبوس الاستشعار ، إضافة سلك ، احباط // PWM Pin الإعلاناتint PinR1 = 3 ؛ int PinG1 = 5 ؛ int PinB1 = 6 ؛ // متغيرات أخرى Color1 = 128 ؛ // ابدأ بلون أحمر مثل السطوع 1 = 255 ؛ // ابدأ عند السطوع الكامل RedValue1 و GreenValue1 و BlueValue1 ؛ // مكونات RGB void الإعداد () {Serial.begin (9600) ؛ // بدء الاتصال التسلسلي // ضبط قيم مهلة المستشعر In1.set_CS_AutocaL_Millis (المهلة) ؛ In2.set_CS_AutocaL_Millis (مهلة) ، In3.set_CS_AutocaL_Millis (مهلة) ، In4.set_CS_AutocaL_Millis (مهلة) ، In5.set_CS_AutocaL_Millis (timeout) ؛} حلقة فارغة () {long start = millis () ؛ long total1 = In1.capSense (30) ؛ long total2 = In2.capSense (30) ؛ long total3 = In3.capSense (30) ؛ إجمالي طويل 4 = In4.capSense (30) ؛ long total5 = In5.capSense (30) ؛ if (Serial.available ()) {// إذا كانت البيانات متاحة للقراءة ، val = Serial.read () ؛ // اقرأها واحفظها في val commStart = millis () ؛ إذا (val == 'S') {// إذا تم استلام حرف البدء ، بينما (! Serial.available ()) {} // انتظر حتى القيمة التالية. RedValue1 = Serial.read () ، // بمجرد توفرها ، قم بتعيين. while (! Serial.available ()) {} // نفس ما ورد أعلاه. GreenValue1 = Serial.read () ، while (! Serial.available ()) {} BlueValue1 = Serial.read () ؛ } Serial.print (RedValue1) ، Serial.print (GreenValue1) ؛ Serial.println (BlueValue1) ؛ } else if ((millis () - commStart)> 1000) {if (total2> 150) {Color1 ++؛ // زيادة اللون إذا (Color1> 255) {// Color1 = 0 ؛ }} else if (total3> 200) {Color1--؛ // إنقاص اللون إذا (Color1 <0) {// Color1 = 255 ؛ }} hueToRGB (Color1، Brightness1) ؛ } analogWrite (PinR1 ، RedValue1) ؛ analogWrite (PinG1 ، GreenValue1) ؛ analogWrite (PinB1، BlueValue1)؛} // وظيفة لتحويل اللون إلى مكوناته من الأحمر والأخضر والأزرق. مقطع int غير موقعة = scaledHue / 256 ؛ // قطعة من 0 إلى 5 حول عجلة الألوان غير موقعة مقطع int إزاحة = تحجيمهوي - (مقطع * 256) ؛ // موضع داخل المقطع مجاملة int غير موقعة = 0 ؛ int prev غير الموقعة = (السطوع * (255 - SectorOffset)) / 256 ؛ int next غير الموقعة = (السطوع * جزء الإزاحة) / 256 ؛ إذا (عكس) {السطوع = 255 سطوع ؛ مجاملة = 255 ؛ السابق = 255 سابقًا ؛ التالي = 255 التالي ؛ } التبديل (مقطع) {الحالة 0: // redValue1 = السطوع ؛ GreenValue1 = التالي ؛ BlueValue1 = مجاملة ؛ استراحة؛ الحالة 1: // أصفر RedValue1 = prev ؛ GreenValue1 = سطوع ؛ BlueValue1 = مجاملة ؛ استراحة؛ الحالة 2: // أخضر RedValue1 = مجاملة ؛ GreenValue1 = سطوع ؛ BlueValue1 = التالي ؛ استراحة؛ الحالة 3: // سماوي RedValue1 = مجاملة ؛ GreenValue1 = prev ؛ BlueValue1 = سطوع ؛ استراحة؛ الحالة 4: // blue RedValue1 = التالي ؛ GreenValue1 = مجاملة ؛ BlueValue1 = سطوع ؛ استراحة؛ الحالة 5: // أرجواني افتراضي: RedValue1 = السطوع ؛ GreenValue1 = مجاملة ؛ BlueValue1 = السابق ؛ استراحة؛ }}--- نهاية ---

الخطوة 7: Ambi Light - جانب الكمبيوتر

على جانب الكمبيوتر ، يتم تشغيل رسم تخطيطي لـ Processing 1.0 ، راجع Processing.org. يحسب هذا البرنامج الصغير (الفوضوي إلى حد ما) متوسط لون الشاشة في كل لحظة ويرسلها إلى المنفذ التسلسلي. إنه أساسي جدًا حتى الآن ويمكن أن يستخدم بعض التغيير والتبديل ، لكنه يعمل بشكل جيد للغاية! سوف أقوم بتحديثه في المستقبل لعدة شرائط RGB منفصلة وأقسام الشاشة. يمكنك أيضًا القيام بذلك بنفسك ، فاللغة واضحة تمامًا. هذا هو الكود: - معالجة 1.0 Code - import Processing.serial. *؛ import java.awt. AWTException؛ import java.awt. Robot؛ import java.awt. Rectangle؛ import java.awt.image. BufferedImage ؛ PImage screenShot؛ Serial myPort؛ static public void main (String args ) {PApplet.main (new String {"--present"، "shooter"})؛} إعداد باطل () {size (100، 100) ؛ // الحجم (شاشة العرض ، ارتفاع الشاشة) ؛ // اطبع قائمة المنافذ التسلسلية ، لأغراض التصحيح: println (Serial.list ())؛ // أعلم أن المنفذ الأول في القائمة التسلسلية على جهاز Mac الخاص بي هو دائمًا محول FTDI ، لذلك أقوم بفتح Serial.list () [0]. // على أجهزة Windows ، يفتح هذا بشكل عام COM1. // افتح أي منفذ هو الذي تستخدمه. String portName = Serial.list () [0] ، myPort = مسلسل جديد (هذا ، اسم المنفذ ، 9600) ؛} رسم باطل () {// صورة (لقطة شاشة ، 0 ، 0 ، عرض ، ارتفاع) ؛ screenShot = getScreen () ، اللون kleur = اللون (0 ، 0 ، 0) ؛ kleur = اللون (لقطة شاشة) ؛ //myPort.write(int(red(kleur))+ '،' + int (green (kleur)) + '،' + int (blue (kleur)) + 13) ؛ //myPort.write(int(red(kleur))) ؛ //myPort.write ('،') ؛ //myPort.write(int(green(kleur))) ؛ //myPort.write ('،') ؛ //myPort.write(int(blue(kleur))) ؛ //myPort.write (13) ، ملء (kleur) ؛ rect (30، 20، 55، 55)؛} color color (PImage img) {int cols = (img.width)؛ عدد الصفوف = (img.height) ؛ البعد int = (img.width * img.height) ؛ int r = 0 ؛ كثافة العمليات ز = 0 ؛ كثافة العمليات ب = 0 ؛ img.loadPixels ()؛ // Ga elke pixel langs (البعد) لـ (int i = 0 ؛ i <(البعد / 2) ؛ i ++) {r = r + ((img.pixels >> 16) & 0xFF) ؛ g = g + ((img.pixels >> 8) & 0xFF) ؛ b = b + (img.pixels & 0xFF) ؛} int mean_r = r / (البعد / 2) ؛ int mean_g = g / (البعد / 2) ؛ int mean_b = b / (البعد / 2) ؛ اللون mean_clr = color (mean_r، mean_g، mean_b)؛ myPort.write ('S') ؛ myPort.write (mean_r) ؛ myPort.write (mean_g) ؛ myPort.write (mean_b)؛ return (mean_clr)؛} PImage getScreen () {GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment () ؛ GraphicsDevice gs = ge.getScreenDevices () ؛ وضع DisplayMode = gs [0].getDisplayMode () ؛ حدود المستطيل = مستطيل جديد (0، 0، mode.getWidth ()، mode.getHeight ())؛ BufferedImage desktop = new BufferedImage (mode.getWidth ()، mode.getHeight ()، BufferedImage. TYPE_INT_RGB)؛ جرب {desktop = new Robot (gs [0]). createScreenCapture (bounds)؛ } catch (AWTException e) {System.err.println ("فشل التقاط الشاشة.")؛ } return (new PImage (desktop))؛} --- END ---

الخطوة 8: النتيجة

نتيجة
نتيجة
نتيجة
نتيجة

وهذه هي النتيجة ، إنها في الواقع في الجانب السفلي من سريري. ما زلت بحاجة إلى استبدال القماش ، وسوف ينشر الضوء أكثر. المزيد من الصور عن ذلك قريبًا ، أتمنى أن تعجبك هذه التعليمات وآمل أيضًا أن تكون قاعدة لإبداعك. بسبب ضيق الوقت ، قمت بكتابته بسرعة كبيرة. قد تحتاج إلى بعض المعرفة الأساسية بالاردوينو / الإلكترونيات لفهمها ولكني أخطط لتحديثها في المستقبل إذا تم استقبالها بشكل جيد.

موصى به: