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

أضواء الفناء التفاعلية ، أضواء الممر: 3 خطوات
أضواء الفناء التفاعلية ، أضواء الممر: 3 خطوات

فيديو: أضواء الفناء التفاعلية ، أضواء الممر: 3 خطوات

فيديو: أضواء الفناء التفاعلية ، أضواء الممر: 3 خطوات
فيديو: The Third Industrial Revolution: A Radical New Sharing Economy 2024, يوليو
Anonim
أضواء الفناء التفاعلية ، أضواء الممر
أضواء الفناء التفاعلية ، أضواء الممر
أضواء الفناء التفاعلية ، أضواء الممر
أضواء الفناء التفاعلية ، أضواء الممر

كنت أرغب في بناء نوع من مصابيح الفناء التفاعلية للفناء الخلفي. كانت الفكرة ، عندما يسير شخص ما في اتجاه ما ، فإنه يؤدي إلى رسم متحرك في الاتجاه الذي تمشي فيه. لقد بدأت بمصابيح شمسية Dollar General بقيمة 1.00 دولار

الخطوة 1: أحصل على أضواء Solor

أحصل على أضواء سولور
أحصل على أضواء سولور
أحصل على أضواء سولور
أحصل على أضواء سولور
أحصل على أضواء سولور
أحصل على أضواء سولور

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

الخطوة الثانية: تركيب مصابيح أفضل

تركيب مصابيح أفضل
تركيب مصابيح أفضل
تركيب مصابيح أفضل
تركيب مصابيح أفضل
تركيب مصابيح أفضل
تركيب مصابيح أفضل

بالنسبة إلى المصباح ، استخدمت ws2811b المقاوم للماء والذي يمكن العثور عليه هنا

www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…

لقد خططت في الأصل لوضع مستشعرات PIR داخل المصابيح الشمسية. ولكن ثبت أن هذا يمثل مشكلة لأن المستشعر لا يمكنه رؤية ما وراء البلاستيك. يجب أن يكون لديه نوع من أهلية ترشيح الأشعة فوق البنفسجية. لذلك اخترت شيئًا مثل هذا

www.thingiverse.com/thing:2590216

الخطوة الثالثة: البرمجة

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

الإعداد باطل() {

// ضع رمز الإعداد هنا ، للتشغيل مرة واحدة: FastLED.addLeds (المصابيح ، NUM_LEDS) ؛ Serial.begin (9600) ؛ pinMode (buttonPin1 ، الإدخال) ؛ pinMode (buttonPin2 ، الإدخال) ؛ }

حلقة فارغة() {

Serial.println (FlagState) ؛

إذا (FlagState == 0) {ForwardLeds () ؛ } إذا (FlagState == 1) {RevLeds () ؛ } إذا (FlagState == 2) {Waiting () ؛ }}

ForwardLeds باطلة () {

فيرستليد = -1 ؛ LastLed = 16 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed-- ؛ فيرستليد ++ المصابيح [LastLed] = CRGB:: أبيض ؛ المصابيح [FirstLed] = CRGB:: أبيض ؛ تأخير (750) ؛ FastLED.show () ، Serial.print ("ممر أبيض") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FirstLed = -1 ؛ LastLed = 16 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed-- ؛ فيرستليد ++ المصابيح [LastLed] = CRGB:: أزرق ؛ المصابيح [FirstLed] = CRGB:: أزرق ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("Blue Pass") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FirstLed = -1 ؛ LastLed = 16 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed-- ؛ فيرستليد ++ المصابيح [LastLed] = CRGB:: أرجواني ؛ المصابيح [FirstLed] = CRGB:: أرجواني ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("ممر أحمر") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FirstLed = -1 ؛ LastLed = 16 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed-- ؛ فيرستليد ++ المصابيح [LastLed] = CRGB:: أسود ؛ المصابيح [FirstLed] = CRGB:: أسود ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("إيقاف تشغيل الصمام") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FlagState = 2 ؛ // change flag state} void RevLeds () {Serial.println ("in reverse")؛ فيرستليد = 8 ؛ LastLed = 7 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed ++ ؛ FirstLed-- ؛ المصابيح [LastLed] = CRGB:: أبيض ؛ المصابيح [FirstLed] = CRGB:: أبيض ؛ تأخير (750) ؛ FastLED.show () ، Serial.print ("ممر أبيض") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FirstLed = 8 ؛ LastLed = 7 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed ++ ؛ FirstLed-- ؛ المصابيح [LastLed] = CRGB:: أزرق ؛ المصابيح [FirstLed] = CRGB:: أزرق ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("الممر الأزرق") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FirstLed = 8 ؛ LastLed = 7 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed ++ ؛ FirstLed-- ؛ المصابيح [LastLed] = CRGB:: أرجواني ؛ المصابيح [FirstLed] = CRGB:: أرجواني ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("ممر أحمر") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ }

فيرستليد = 8 ؛

LastLed = 7 ؛ لـ (int i = 0 ؛ i <8 ؛ i ++) {LastLed ++ ؛ FirstLed-- ؛ المصابيح [LastLed] = CRGB:: أسود ؛ المصابيح [FirstLed] = CRGB:: أسود ؛ تأخير (250) ؛ FastLED.show () ، Serial.print ("إيقاف تشغيل Led") ؛ Serial.print (i) ؛ Serial.println ("من 8") ؛ } FlagState = 2 ؛ // تغيير حالة العلم} void Waiting () {buttonState1 = digitalRead (buttonPin1) ؛ buttonState2 = digitalRead (buttonPin2) ، if (buttonState1 == HIGH) {Serial.println ("تم تشغيل الأمام") ؛ FlagState = 0 ؛ } else if (buttonState2 == HIGH) {Serial.println ("Rev triggered") ؛ FlagState = 1 ؛ } Serial.println ("حلقة منتهية الانتظار")؛ }

موصى به: