תוכן עניינים:

שעון קיר קריטי: 27 שלבים (עם תמונות)
שעון קיר קריטי: 27 שלבים (עם תמונות)

וִידֵאוֹ: שעון קיר קריטי: 27 שלבים (עם תמונות)

וִידֵאוֹ: שעון קיר קריטי: 27 שלבים (עם תמונות)
וִידֵאוֹ: עדן חסון ואודיה - הנשיקה! 😱 2024, נוֹבֶמבֶּר
Anonim
שעון קיר קריפטיים
שעון קיר קריפטיים

חלוף הזמן הוא דבר שאיננו יכולים לשלוט בו. זה קורה באותו קצב אם אנחנו ישנים, ערים, משועממים או מאורסים. עם אירועים עכשוויים, חשוב לזכור שהזמן יעבור. בזמן שאנו מחכים שהזמן יעבור, למה שלא נעשה משהו שהופך את חלוף הזמן ליותר מושך לצפייה.

שעון זה נוצר בהשראת המנגנלהרהר שנמצא בברלין, גרמניה וניתן לקרוא אותו באותו אופן. בדיוק כמו המקור, הוא מספר את הזמן באמצעות שדות מוארים וצבעוניים.

הוא כולל 96 נוריות LED המאירות 52 אזורים 'ספרתיים'. שלא כמו המקור, הוא כולל עיצוב עגול הכולל טבעת שניות, במקום פריסת מוט אופקית. הלהקה החיצונית מציינת שניות בשילוב עם הנקודה האמצעית, שתי הלהקות הבאות מציינות דקות, כאשר הרצועות הפנימיות הסופיות מציינות שעות.

אם יש לך חומר גרוטאות וזמן נוסף על הידיים, למה שלא תנצל את הזמן הזה כדי להכין משהו שיראה זאת!

ישנם מספר שינויים שהייתי מבצע בפרויקט זה אם הייתי עושה אותו שוב. ראשית, הייתי צובע את המסגרת ולוח הלד בלבן במקום בשחור. זה יחזיר יותר אור דרך העדשה הגדולה בחזית. הייתי מחכה עד הסוף כדי להכניס את הלדים. הייתי צריך שהלוח יסתיים מוקדם יותר כדי שיוכל לעזור לי בכתיבת הקוד. עם זה מהדרך, בואו קודם כל ללמוד איך לקרוא את זה!

תמונה
תמונה

שלב 1: כיצד לקרוא את השעון

השעון נקרא מהעיגולים הפנימיים אל החיצוניים. הטבעת הפנימית של ארבע שדות מציינת חמש שעות שלמות כל אחת, לצד הטבעת השנייה, גם היא של ארבע שדות, המציינות שעה אחת שלמה כל אחת, המציגה את ערך השעה בפורמט 24 שעות. הטבעת השלישית מורכבת מאחד עשר שדות, המציינים חמש דקות שלמות כל אחת, הטבעת הבאה כוללת עוד ארבע שדות, המסמנות כל דקה שלמה. לבסוף הטבעת החיצונית של 29 שדות מציינת שניות שוות כשהאור במרכז מהבהב לציון שניות אי זוגיות (כשהן מוארות) או מספרים (כשהן לא מוארות).

תמונה
תמונה

לדוגמה, בתמונה למעלה יש 1 מתוך חמש הספרות, 3 מתוך הספרות של שעה אחת, 8 מתוך ספרות של חמש דקות, 4 מתוך הספרות של דקה אחת, ו- 23 מתוך שתי הספרות השניות והספרה השנייה האמצעית מוארת.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 8:44:47 = 8:44:47 בבוקר

תמונה
תמונה

הזמן המוצג למעלה הוא: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 15:17:11

תמונה
תמונה

הזמן המוצג למעלה הוא: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33 אחר הצהריים

שלב 2: כלים וחומרים

כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים
כלים וחומרים

חומרי אלקטרוניקה:

  • ארדואינו ננו
  • שעון בזמן אמת
  • נוריות כתובות
  • תקע חשמל
  • כבל חשמל
  • תקע חשמל USB
  • הנגד תלוי ונגד מאוזן (אם אתה רוצה שהוא יתעמעם בלילה)
  • חוּט

חומרי עיבוד עץ:

  • דיקט בגודל 3/4 אינץ '
  • דיקט דק
  • גרוטאות עץ (השתמשתי 2x4s אבל פרקט יעבוד גם כן)
  • צֶבַע
  • גיליון אקריליק בגודל 30X36 אינץ '(נמצא בחנות המקומית לשיפוץ הבית)
  • גוון חלון (נסה למקם מקומי. אם אין זמין, תוכל למצוא כאן גיליון גדול מספיק)
  • נוזל למריחת חלון (השתמשתי במים מעורבבים עם שמפו לתינוק בבקבוק ריסוס)
  • ווינדקס
  • נייר קצבים
  • ברגים
  • דבק ריסוס
  • דֶבֶק
  • דבק סטיק

כלים:

  • סרגל
  • סכין Xacto
  • קלטת
  • קלטת דו צדדית
  • מצפן
  • ג'יג חיתוך מעגלים
  • פאזל
  • להקה ראתה
  • מלטש ציר
  • מלטשת דקלים
  • מלטשת דיסקים
  • שולחן נתב
  • מַרצֵעַ
  • מקדחי מקדחה/מנהגים
  • מהדקים
  • מלחם
  • לְרַתֵך
  • חשפניות חוטים

שלב 3: הרכבת תבניות

הרכיבו תבניות
הרכיבו תבניות
הרכיבו תבניות
הרכיבו תבניות

עבור התבנית הגדולה, הדפס אותה באמצעות הגדרת הפוסטר ב- Adobe Reader. חתכו את השוליים לכל נייר והדביקו יחד. הקווים האנכיים, האופקיים והאלכסוניים יסייעו בשורה של התבנית. על כל הדפים יש מספרים קטנים שעוזרים לשמור עליהם מסודרים אם הם יוצאים משימוש.

כל התבניות והקבצים הדרושים נמצאים בשלב 26.

שלב 4: עיגולים חתוכים גסים

מעגלים חתוכים מחוספסים
מעגלים חתוכים מחוספסים
מעגלים חתוכים מחוספסים
מעגלים חתוכים מחוספסים

הנחת שתי התבניות על גיליון של דיקט 3/4 אינץ ', צייר עיגולים מעט גדולים מהצורך בעזרת מצפן. בעזרת פאזל חותכים את הצורה המחוספסת.

שלב 5: חותכים לגודל

לחתוך לפי מידה
לחתוך לפי מידה
לחתוך לפי מידה
לחתוך לפי מידה

בעזרת ג'יג חיתוך עיגולים על המסור חותכים את העיגולים לגודל סופי.

שלב 6: החלת תבנית

החל תבנית
החל תבנית
החל תבנית
החל תבנית
החל תבנית
החל תבנית

בעזרת דבק ריסוס יש למרוח כל תבנית על עיגול. הכנס מסמר במרכז התבנית כדי למרכז אותו על העיגול.

שלב 7: גזור תבנית

תבנית גזירה
תבנית גזירה
תבנית גזירה
תבנית גזירה
תבנית גזירה
תבנית גזירה

בעזרת פאזל חותכים כל חלון בנפרד של התבנית. אם יש לך גישה ל- CNC, שלב זה יהיה הרבה יותר קל! קדחתי חור בכל חלון כדי לסייע בתהליך זה. כאשר אתה מתחיל לחתוך, התבנית עשויה להתחיל לרדת. אם זה קורה, אתה יכול לאבטח אותו במקומו בעזרת חתיכות קלטות קטנות.

שלב 8: שיוף

שיוף
שיוף
שיוף
שיוף
שיוף
שיוף

בעזרת נייר זכוכית המורחים על מקל, מלטשת ציר ומלטשת כף יד, משייפים ומחליקים את החיתוך הגס שהותיר הפאזל.

שלב 9: מחזיקי מקדחה עבור נוריות LED

מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED
מחזיקי מקדחה עבור נוריות LED

סמן את מרכז כל חור עם צעיף ונקדח חורי פינוי עבור נוריות הלדים. השתמשתי במדריך שיעזור לשמור על המקדחה בניצב לחומר העבודה שלי ולוח גב כדי שלא יתפוצץ העץ על הגב.

שלב 10: שלב קרשים

שלב לוחות
שלב לוחות
שלב לוחות
שלב לוחות
שלב לוחות
שלב לוחות

החלף את הלוחות הקדמיים והאחוריים ועקוב אחר חלקים מהמסגרת בגב לוח הלד. העבר את המסגרת בחזרה לחלק הקדמי של לוח הלד והקדח חורים והברג את החלקים יחד.

עיין בהערות תמונה למידע נוסף.

שלב 11: הכנס נוריות

הכנס נוריות
הכנס נוריות
הכנס נוריות
הכנס נוריות

דחוף את הנורות דרך החלק האחורי של לוח הלד. יש להרחיק את החורים בדיוק מספיק כך שלא תצטרך לחתוך חוטים למעט מעבר ממעגל אחד למשנהו.

מאחור, נוריות ה- LED מתחילות במרכז ואז רצות נגד כיוון השעון ואז עד הטבעת הבאה.

שלב 12: צרף קטע 1

צרף קטע 1
צרף קטע 1
צרף קטע 1
צרף קטע 1
צרף קטע 1
צרף קטע 1

גזרו 9 קטעים מהתבנית "פלח 1" המצורפת על דיקט 3/4 אינץ '(נמצא בשלב 26). הצמד ללוח הלד בעזרת דבק ומהדקים. אם אתה חסר סבלנות אתה יכול גם להשתמש במסמרים כדי להדק אותו במקומו.

לאחר שהתייבש, משייפים את הקצה סומק בעזרת מלטשת דיסקים.

שלב 13: צבע

צֶבַע
צֶבַע
צֶבַע
צֶבַע
צֶבַע
צֶבַע
צֶבַע
צֶבַע

ריסוס צבע הן לוח הלדים והן המסגרת. אם הייתי עושה את זה שוב, הייתי בוחר להשתמש בצבע לבן במקום בשחור כיוון שהוא היה משתקף יותר דרך העדשה.

שלב 14: קטע 2

קטע 2
קטע 2
קטע 2
קטע 2
קטע 2
קטע 2

גזרו 9 קטעים מהתבנית "פלח 2" המוצמדת מעץ בעובי של 2 3/8 אינץ '(נמצא בשלב 26). השתמשתי בכמה גרוטאות 2x4 מסביב לחנות. התאימו את החלקים לייבוש והבטיחו שהוא מתאים היטב עם מהדק רצועה. אם הכל מסתדר, כסו את החלק החיצוני בנייר דבק כדי שהדבק לא יידבק ותנו לו להתייבש לפחות שעה לפני שתעברו לשלב הבא.

שלב 15: קטע 3

קטע 3
קטע 3
קטע 3
קטע 3
קטע 3
קטע 3

גזרו 9 קטעים מהתבנית "פלח 3" המצורפת מתוך גרוטאות עבות בגובה 3/8 אינץ '(נמצא בשלב 26). הדביקו אותם כך שהתפרים מקטע 2 יהיו באמצע כל קטע 3. זה יחזק את הטבעת.

שלב 16: החלקה וצבע

טבעת חלקה וצבע
טבעת חלקה וצבע
טבעת חלקה וצבע
טבעת חלקה וצבע

יצרתי גוש מלטש בהתאמה אישית מהחתיכה החתוכה של הטבעת הגדולה. מלטשים את החלק הפנימי והחיצוני של הטבעת וממלאים את כל הסדקים שעלולים להופיע במהלך תהליך ההדבקה.

לאחר החלקה יש למרוח כמה שכבות של צבע שחור ומעיל שקוף.

שלב 17: חותכים אקריליק

חתוך אקריליק
חתוך אקריליק
חתוך אקריליק
חתוך אקריליק
חתוך אקריליק
חתוך אקריליק
חתוך אקריליק
חתוך אקריליק

חותכים את האקריליק לריבוע בגודל 30 על 30 ס מ ומסמנים את המרכז. חבר את האקריליק בעזרת סרט דו צדדי. הסר את עודף האקריליק בעזרת ביט נתב לקצץ

שלב 18: החל גוון חלון

החל גוון חלון
החל גוון חלון
החל גוון חלון
החל גוון חלון
החל גוון חלון
החל גוון חלון

בסביבה נטולת אבק, הסר את הסרט המגן מהאקריליק. מרחי ריסוס והסרי את הגב מגוון החלון. החל גוון חלון עם צד דביק כלפי מטה. בעזרת מגב או כרטיס אשראי סוחטים את כל הנוזלים מתחת לגוון החלון. לאחר הסרת כל הבועות והקמטים, גזמו את גוון החלון העודף בעזרת סכין חדה.

שלב 19: צרף Defuser

צרף Defuser
צרף Defuser
צרף Defuser
צרף Defuser

השתמשתי בנייר קצבים גדול כדי לשמש כמפחית. הניחו את הנייר על משטח שטוח. מכסים את פני המסגרת בדבק ממקל דבק. לפני שהדבק מתייבש, הניחו את חזית השעון עם הפנים כלפי מטה על הנייר וחתכו גס את העודף. לאחר ייבוש, השתמש בסכין חדה כדי לקצץ את הסומק.

שלב 20: החל בידוד

החל בידוד
החל בידוד

השתמשתי בקלטת חשמל כדי להפריד בין קווי החשמל והנתונים.

שלב 21: להרכיב

להרכיב
להרכיב
להרכיב
להרכיב
להרכיב
להרכיב

הסר את שכבת ההגנה האחרת מהאקריליק. מניחים את האקריליק בתוך הטבעת כשצד גוון החלון כלפי מעלה. החלק את שאר השעון לתוך הטבעת. השתמש במלחץ כדי להפעיל לחץ קל בזמן שנקדח חור דרך הטבעת ואל לוח הלדים. זה צריך להיות בערך 1 1/8 אינץ 'מהחלק האחורי. היזהר לא לקדוח לתוך LED. הברג בורג ראש מסבך לתוך החור. חזור על סך של שמונה ברגים מסביב לשעון.

שלב 22: צרף נקודות עוגן

צרף נקודות עוגן
צרף נקודות עוגן

עוגן הדבק מצביע על החלק האחורי של השעון שאליו ניתן לצרף את הכריכה האחורית. אלה עובי 3/4 אינץ 'ואורכם כ -2 אינץ'.

שלב 23: חורי כוח מקדחה וחיישן LDR

חורי כוח מקדחה וחיישן LDR
חורי כוח מקדחה וחיישן LDR

קדח חור חשמל בתחתית השעון עבור תקע החשמל וחור בחלקו העליון של חיישן הנגד תלוי (LDR).

שלב 24: התקן מחזיק אלקטרוניקה

התקן מחזיק אלקטרוניקה
התקן מחזיק אלקטרוניקה
התקן מחזיק אלקטרוניקה
התקן מחזיק אלקטרוניקה

התקן את המחזיק המודפס בתלת מימד עבור ה- RTC ו- Arduino Nano. חבר את כל האלקטרוניקה כפי שמוצג בתרשים.

שלב 25: כריכה אחורית

כריכה אחורית
כריכה אחורית
כריכה אחורית
כריכה אחורית
כריכה אחורית
כריכה אחורית
כריכה אחורית
כריכה אחורית

חותכים כריכה אחורית מהדיקט הדק שרק קטן מהחלק החיצוני של השעון. לקדוח חורים לנקודות העוגן. מצא את מרכז הגב ומדד 8 סנטימטרים לכל כיוון לחיתוך חורי מפתח (תקן 16 במרכזים לחתיכים בארה ב). קידחתי את החור הראשי גדול יותר מראש הברגים שבהם אני הולך להשתמש והגשתי את החור גדול יותר בכיוון אחד. צובעים שחור ומחברים את המכסה למקומו.

שלב 26: קוד וקבצים

שוב, אני די חדש בשימוש ברבות מספריות Arduino המשמשות כאן, כך שאני בטוח שיש דרכים טובות יותר לנצל אותן.

כתבתי את הקוד כדי להתעדכן בקלות בהתבסס על כמה נוריות אתה משתמש אם הפרויקט גדל או יורד. כל שעליך לעשות הוא לעדכן את מיקומי ההתחלה והסיום של ה- LED, וכן כמה נוריות הן חלק מכל ספרה.

הוספתי כמה אנימציות שמתנגנות בהפעלה וגם בשעה. הם אקראיים סודו על בסיס מחולל המספרים האקראיים שיש לו על הסיפון.

אתה יכול להגדיר את השעון לעבור בין צבעים או להישאר סטטי באחד. אתה יכול אפילו להדגיש את ספרת המחוונים כדי לסייע בקריאת זמן כפי שמוצג במבוא.

אל תהסס לערוך ולשנות את הקוד כרצונך.

#כלול "RTClib.h"

#כלול #הגדר NUM_LEDS 96 #הגדר DATA_PIN 3 #הגדר LDR A0 RTC_DS1307 rtc; זמן בוליאני = שקר; printTime בוליאני = false; // הגדר ל- true אם אתה רוצה לראות פלט במסוף. מועיל לניפוי באגים. RedDown בוליאני = true; boolean greenDown = false; בוליאני blueDown = false; מחזור בוליאני = שקר; // הגדר נכון אם אתה רוצה שצבעי השעון יחזרו את ההדגשה בוליאנית = true; // הגדר נכון כדי להדגיש 'הספרה האחרונה'. // מיקומים של התחלה וסוף של כל קבוצת זמן const int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // מכפילים המשמשים לפיצול זמן const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // שנה זאת כדי להאיץ או להאט את האנימציה ההפעלה const int CYCLE_SPEED = 1; // שנה את הקצב כאן למחזור שינוי הצבעים (חייב להיות מעל 1) // הצהיר משתנים int lastSecond = 0; int currentHour = 0; int currentMinute = 0; int currentSecond = 0; int שעה 1 = 0; int שעה 2 = 0; int minute1 = 0; int minute2 = 0; int second1 = 0; int second2 = 0; int cycleCount = 1; float fadeValue = 255; float fadeCheck = 255; uint8_t בהיר = 255; int numberOfAnimations = 5; int אקראיות = 0; // הגדר צבעים uint8_t אדום = 0; uint8_t ירוק = 0; uint8_t כחול = 255; uint8_t highlight_red = 60; uint8_t highlight_green = 60; uint8_t highlight_blue = 255; // הגדירו את מערך ה- leds CRED leds [NUM_LEDS]; הגדרת void () {Serial.begin (19200); FastLED.addLeds (leds, NUM_LEDS); LEDS.setBrightness (בהיר); FastLED.clear (); rtc.begin (); // שורת הודעה למטה לקביעת הזמן. // rtc.adjust (DateTime (2020, 2, 19, 23, 59, 50)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // אנימציה הפעלה אנימציה (אקראיות); } לולאת void () {// קבל זמן DateTime עכשיו = rtc.now (); currentHour = now.hour (); currentMinute = now.minute (); currentSecond = now.second (); timeChange = false; // השתמש באלה לקביעת זמן ידנית ללא RTC. שימושי לניפוי באגים // currentHour = 5; // currentMinute = 30; // currentSecond = 30; // אפס את כל הביטים לאפס עבור (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB:: שחור; } // הגדר שעה // הגדר שעה 1 שעה 1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // פעולה זו תספור את סך כל הנורות של יחידת הזמן להדליק עבור (int i = HOUR_1_START_LOCATION; i 0) // && hour1 <12) {עבור (int i = (HOUR_1_START_LOCATION + שעה 1 - 1); i> = (HOUR_1_START_LOCATION + שעה 1-LEDS_PER_HOUR_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // קבע שעה 2 שעה 2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // פעולה זו תספור את כל נוריות ה- LED של יחידת הזמן להדליק עבור (int i = HOUR_2_START_LOCATION; i 0) // && hour2 <8) {for (int i = (HOUR_2_START_LOCATION + hour2 - 1); i> = (HOUR_2_START_LOCATION + שעה 2-LEDS_PER_HOUR_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // הגדר דקה // הגדר דקה 1 דקה 1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // פעולה זו תספור את סך כל הנוריות של יחידת הזמן להדליק (int i = MINUTE_1_START_LOCATION; i 0) // && minute1 <24) {עבור (int i = (MINUTE_1_START_LOCATION + דקה 1 - 1); i> = (MINUTE_1_START_LOCATION + דקה 1-LEDS_PER_MINUTE_1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} // הגדר דקה 2 דקה 2 = (currentMinute / MULTIPLIER_FIVE) * LEDS_PER_MINUTE_2; // פעולה זו תספור את סך כל הנוריות של יחידת הזמן להדליק עבור (int i = MINUTE_2_START_LOCATION; i 0) // && minute2 <22) {עבור (int i = (MINUTE_2_START_LOCATION + minute2 - 1); i> = (MINUTE_2_START_LOCATION + דקה 2-LEDS_PER_MINUTE_2); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }}} // הגדר שנית אם (currentSecond! = LastSecond) {timeChange = true; } // הגדר שנייה 1 שניה 1 = currentSecond % MULTIPLIER_TWO; אם (second1 == 1) {leds [SECOND_1_LOCATION] = CRGB (אדום, ירוק, כחול); } // הגדר שני 2 שני 2 = currentSecond / MULTIPLIER_TWO; עבור (int i = SECOND_2_START_LOCATION; i 0) // && second2 <29) {for (int i = (SECOND_2_START_LOCATION + second2 - 1); i> = (SECOND_2_START_LOCATION + second2 - 1); i--) {leds = CRGB (highlight_red, highlight_green, highlight_blue); }} lastSecond = currentSecond; // ספרו מחזורים של התוכנית והתקשרו לפונקציית setColor כדי לשנות את הצבע של נוריות ה- CYCLE_SPEED אי פעם. if (cycleCount בהיר) // {// fadeValue = בהיר; //} // else if (fadeValue <150) // {// fadeValue = 150; //} // LEDS.setBrightness (fadeValue); FastLED.show (); // הדפס את השעה הנוכחית למסוף אם (timeChange == true && printTime == true) {printToConsole (); }}} // פונקציית אנימציה הוסיפו כאן אנימציות נוספות כרצונכם בטל אנימציה (int select) {if (select == 0) {for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (אדום, ירוק, כחול); FastLED.show (); עיכוב (START_UP_DELAY); } עבור (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: שחור; FastLED.show (); עיכוב (START_UP_DELAY); }} אחרת אם (בחר == 1) {עבור (int i = 0; i <250; i ++) {int light = random (95); leds [אור] = CRGB (אדום, ירוק, כחול); FastLED.show (); }} אחרת אם (בחר == 2) {leds [0] = CRGB (אדום, ירוק, כחול); עבור (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_START_LOCATION+i] = CRGB (אדום, ירוק, כחול); אם (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_START_LOCATION + i] = CRGB (אדום, ירוק, כחול); } אם (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_START_LOCATION + i] = CRGB (אדום, ירוק, כחול); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_START_LOCATION + i] = CRGB (אדום, ירוק, כחול); } אם (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_START_LOCATION + i] = CRGB (אדום, ירוק, כחול); } עיכוב (34); FastLED.show (); }} אחרת אם (בחר == 3) {leds [0] = CRGB (אדום, ירוק, כחול); עבור (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i ++) {leds [SECOND_2_END_LOCATION - i] = CRGB (אדום, ירוק, כחול); אם (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) {leds [MINUTE_1_END_LOCATION - i] = CRGB (אדום, ירוק, כחול); } אם (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) {leds [MINUTE_2_END_LOCATION - i] = CRGB (אדום, ירוק, כחול); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) {leds [HOUR_1_END_LOCATION - i] = CRGB (אדום, ירוק, כחול); } אם (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) {leds [HOUR_2_END_LOCATION - i] = CRGB (אדום, ירוק,כָּחוֹל); } עיכוב (34); FastLED.show (); }} אחרת אם (בחר == 4) {עבור (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: שחור; } FastLED.show (); עיכוב (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (אדום, ירוק, כחול); } FastLED.show (); עיכוב (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: שחור; } FastLED.show (); עיכוב (200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {leds = CRGB (אדום, ירוק, כחול); } FastLED.show (); עיכוב (200); for (int i = SECOND_2_END_LOCATION; i> = SECOND_1_LOCATION; i--) {leds = CRGB:: שחור; } FastLED.show (); עיכוב (200); }} // פונקציית רכיבה על אופניים צבע void setColor (מחזור בוליאני בוליאני) {if (cycleColors == true) {if (redDown == true && greenDown == false) {אדום ++; ירוק--; אם (ירוק <= 0) {אדום = 255; redDown = false; greenDown = true; }} אחרת אם (greenDown == true && blueDown == false) {ירוק ++; כָּחוֹל--; אם (כחול <= 0) {ירוק = 255; greenDown = false; blueDown = true; }} אחרת אם (blueDown == true && redDown == false) {blue ++; אָדוֹם--; אם (אדום <= 0) {כחול = 255; blueDown = false; redDown = true; }}} אחר {אדום = 0; ירוק = 0; כחול = 255; }}} // הדפסה לפונקציה צג סידורי void printToConsole () {Serial.print ("שעה נוכחית:"); Serial.print (currentHour); Serial.print (":"); Serial.print (currentMinute); Serial.print (":"); Serial.println (currentSecond); Serial.println (""); עבור (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i ++) {Serial.print (leds ); if (i % 2 == 0) {Serial.print (""); }} Serial.println (""); עבור (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i ++) {Serial.print (leds ); if (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) {Serial.print (""); }} Serial.println (""); עבור (int i = MINUTE_2_START_LOCATION; i <= MINUTE_2_END_LOCATION; i ++) {Serial.print (leds ); אם (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) {Serial.print (""); }} Serial.println (""); עבור (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i ++) {Serial.print (leds ); אם (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) {Serial.print (""); }} Serial.println (""); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i ++) {Serial.print (leds ); Serial.print (""); } Serial.println (""); Serial.println (leds [SECOND_1_LOCATION]); Serial.println (); for (int i = 0; i <NUM_LEDS; i ++) {Serial.print (leds ); } Serial.println (); Serial.println (); }

שלב 27: תהנה

תמונה
תמונה

לסיכום, השעון הזה נפלא לצפייה וברגע שהבנתם אותו, הוא יחסית קל לקריאה. אם אתה יוצר פרויקט שעון משלך, הודע לי על כך!

מוּמלָץ: