2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
רציתי לבנות איזו אורות חצר אינטראקטיביים לחצר האחורית שלי. הרעיון היה שכאשר מישהו ילך בדרך אחת זה יניע אנימציה בכיוון שבו אתה הולך. התחלתי עם אורות שמש $ 1.00 דולר ג'נרל
שלב 1: שים את אורות הסולור
הצעד הראשון היה לבלום את האורות כדי לפנות מקום לדברים מהנים יותר. התחלתי בחיתוך הלד והסוללה המקוריים. הקפד לשמור חלקים אלה מכיוון שהם יהיו שימושיים בפרויקט אחר הסרתי גם את כיפת הכרום שהייתה בתחתית אור השמש והדבקתי אותה לראש כפי שניתן לראות בתמונות
שלב 2: התקנת אורות טובים יותר
עבור הלד השתמשתי ב- ws2811b עמיד למים שניתן למצוא כאן
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
תכננתי במקור לשים את חיישני ה- PIR בתוך האורות הסולאריים. אבל זה היה קצת בעייתי מכיוון שהחיישן בעצם לא יכול היה לראות מעבר לפלסטיק. זה חייב להיות בעל תקינות של סינון UV. אז בחרתי במשהו יותר כזה
www.thingiverse.com/thing:2590216
שלב 3: קידוד
אם אתה רוצה לגרום לנורות לא להשתמש בחיישן או פשוט לרוץ כל הזמן פשוט חפש את המקום שמוערך כ"שינוי מצב הדגל "והגדר אותו לאתר 1 או 0 אני אוסיף עוד תמונות כשאשלים את זה לעצמי אז היא עדיין בעיצומה, אך לדעתי מסודר מדי מכדי לא לשתף אותה מיד. תודה שהסתכלת
הגדרת בטל () {
// שים את קוד ההתקנה שלך כאן, להפעלה פעם אחת: FastLED.addLeds (leds, NUM_LEDS); Serial.begin (9600); pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }
לולאת חלל () {
Serial.println (FlagState);
אם (FlagState == 0) {ForwardLeds (); } if (FlagState == 1) {RevLeds (); } אם (FlagState == 2) {Waiting (); }}
void ForwardLeds () {
FirstLed = -1; LastLed = 16; עבור (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: לבן; leds [FirstLed] = CRGB:: לבן; עיכוב (750); FastLED.show (); Serial.print ("כרטיס לבן"); Serial.print (i); Serial.println ("מתוך 8"); } FirstLed = -1; LastLed = 16; עבור (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: כחול; leds [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--; FirstLed ++; leds [LastLed] = CRGB:: סגול; leds [FirstLed] = CRGB:: סגול; עיכוב (250); FastLED.show (); Serial.print ("אדום מעבר"); Serial.print (i); Serial.println ("מתוך 8"); } FirstLed = -1; LastLed = 16; עבור (int i = 0; i <8; i ++) {LastLed--; FirstLed ++; leds [LastLed] = CRGB:: שחור; leds [FirstLed] = CRGB:: שחור; עיכוב (250); FastLED.show (); Serial.print ("כיבוי לד"); Serial.print (i); Serial.println ("מתוך 8"); } FlagState = 2; // שינוי מצב הדגל} בטל RevLeds () {Serial.println ("הפוך"); FirstLed = 8; LastLed = 7; עבור (int i = 0; i <8; i ++) {LastLed ++; FirstLed--; leds [LastLed] = CRGB:: לבן; leds [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--; leds [LastLed] = CRGB:: כחול; leds [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--; leds [LastLed] = CRGB:: סגול; leds [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--; leds [LastLed] = CRGB:: שחור; leds [FirstLed] = CRGB:: שחור; עיכוב (250); FastLED.show (); Serial.print ("כיבוי לד"); Serial.print (i); Serial.println ("מתוך 8"); } FlagState = 2; // שינוי מצב הדגל} void Waiting () {buttonState1 = digitalRead (buttonPin1); buttonState2 = digitalRead (buttonPin2); if (buttonState1 == HIGH) {Serial.println ("מופעל קדימה"); FlagState = 0; } אחרת אם (buttonState2 == HIGH) {Serial.println ("Rev מופעל"); FlagState = 1; } Serial.println ("סיבוב ההמתנה של הלולאה"); }