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

שעון קיץ קל: 7 שלבים
שעון קיץ קל: 7 שלבים

וִידֵאוֹ: שעון קיץ קל: 7 שלבים

וִידֵאוֹ: שעון קיץ קל: 7 שלבים
וִידֵאוֹ: אני רוצה שווארמה 🌯 2024, יולי
Anonim
שעון קל לקיץ
שעון קל לקיץ
שעון קל לקיץ
שעון קל לקיץ

כַּתָבָה

הפרויקט הזה התחיל כאתגר בשבילי ללמוד תכנות (קידוד) עם ה- Arduino Uno ותצוגת LCD אחת של 1602A, קודם כל רציתי לדחוף את הארדואינו לגבולות הדיוק. זהו פרויקט לבניית שעון ללא שימוש במודול RTC (מודול שעון בזמן אמת) ובהמשך אין להשתמש בעיכוב (); פקודות כי העיכוב (); הפקודה עוצרת את הקוד למשך זמן מוגדר. בעודי עבדתי על הזמן הבסיסי בשמירה על קוד חשבתי שזה אולי קצת שגרתי ולכן החלטתי להוסיף תכונת שעון קיץ כתוספת חדשה לתבל דברים ואולי ליצור קצת יותר עניין בפרויקט זה. בהתחלה הרעיון היה חדש לגמרי אך ככל שאני עובד איתו ורואה את השעון הפיזי שיש לי על השולחן שלי הרעיון הופך להיות יותר פרקטי. על ידי הוספת מודול RTC והתאמת הקוד שעון זה יהיה מדויק לשנים הבאות ובעלות נמוכה מאוד ליצרנים ולציבור הרוכשים שעון כזה.

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

דוגמה זו היא קלה לחיות איתה ועם העידן הדיגיטלי וההתקדמות הטכנולוגית מיושמת בקלות על כל סוגי השעונים הדיגיטליים, אך יכולה לסייע למוות השעון האנלוגי. במקום לקפוץ לשעה אחת מהשעה הסטנדרטית לשעון הקיץ, אז שעון הקיץ לשעון הסטנדרטי השעון הזה מבוסס על התקדמות הזמן ההדרגתית בין היפוך החורף ליפוך הקיץ ואז חזרה לשעה הסטנדרטית במהלך שינת החורף הבאה שנה אחר שנה. המעבר הזה מתרחש במשך 180 ימים מכל תקופה של 6 חודשים, ההתאמה היא 20 שניות ביום למשך 360 יום כאשר 5 או 6 הימים הנותרים מתווספים לאורך האורך של השיזורים. הדוגמה שלי כאן מגדילה דקה אחת אחת לשלושה ימים בתוך מחזור 180 הימים. ב -21 ביוני של כל שנה השעון הוא שעה שלמה קדימה, או בערך ב -21 בדצמבר של כל שנה השעון חזר לשעה הסטנדרטית. שנה מעוברת מתייחסת בקלות במיוחד אם משתמשים ב- RTC. חצי הכדור הדרומי מותאם בקלות גם לשעון זה, סולם השקופיות נמצא בפשטות 6 חודשים מחוץ לשלב מהחצי הצפוני.

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

שלב 1: על השעון

לגבי השעון
לגבי השעון
לגבי השעון
לגבי השעון

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

בדוגמה זו השתמשתי בזמן צבאי (שעון 24 שעות) ובשעה סטנדרטית (שעון 12 שעות) AM ו- PM כדי לסייע לאנשים שאינם מכירים את סולם השעות של 24 שעות, גם זה נתן לחדרי להציג את מספר היום שעון החגים הוא להגדיר מ. ניתן לשנות את הקוד להצגת השעון של 12 שעות. הוספתי שלושה כפתורי לחיצה המחוברים לפינים הדיגיטליים 2, 3 ו -4 כדי להתאים את הזמן. לחצנים אלה יגדילו רק שניות, דקות או שעות בלבד. הלחצנים הינם אופציונאליים, השעון עדיין יעבוד כשורה אם לא מחברים את הכפתורים ואין צורך לשנות את הקוד. הייתי ממליץ לפחות להשתמש בכפתור כדי להתאים את השניות ואם לא ניתן להשיג דיוק מלא שמור את השעון בצד האיטי, הכפתור מתקדם את הזמן 1 שניה לשנייה.

אם אתה מפעיל את השעון מה- Arduino IDE ייקח בערך 5.5 עד 6 שניות עד שהסקיצה תטען ותאתחל, אם יש לך את הסקיצה טעונה לארדואינו אז תחבר אותה ליבלת קיר או לאספקת חשמל זה ייקח בערך 2.5 עד 3 שניות לאתחול ולהריץ.

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

שעון זה אינו משתמש במודול RTC וגם לא במינון באמצעות "עיכוב ();" פקודות.

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

שלב 2: מה שאתה צריך

מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך
מה שאתה תצטרך

רשימת קניות

1 Arduino Uno או Mega2569 (סיכות I2C הן A4 ו- A5 ב- UNO ו- 20 ו- 21 ב- 2560 Mega)

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

צג LCD 1 1602 (צבע לבחירתך)

אני משתמש בחבילת גב I2C עם ה- LCD, קל יותר ומהיר יותר להגדיר אותה.

חוטי מגשר

אספקה אופציונלית

1 לוח לחם בגודל בינוני

1-3 כפתורי לחיצה מגעיים לרגע

1-3 נגדי 10 קאוהם

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

הערות:

כדי להימנע מנפילות הבור של הפסקות חשמל השעון האחרון שלי מופעל על ידי פאנל סולארי שיש לי בחוץ. הפאנל הסולארי שומר על סוללה של 12 וולט טעונה עם רגולטור עליה כדי למנוע טעינה יתר. סוללה זו מחוברת ל- Arduino באמצעות שקע החשמל שליד יציאת ה- USB. אני שומר על יציאת ה- USB מחוברת לרשת כדי לצמצם את הסוללה. ניתן להשתמש בשני מקורות החשמל בו זמנית ללא פגיעה בארדואינו. ניתן לטעון סוללה של 12 וולט למקסימום 14.5 וולט שהיא גבוהה מדי עבור הארדואינו אז אני משתמש בממיר באק כדי להפחית את מתח האספקה מהסוללה לטווח של 9 עד 12 וולט. סוללת ה -12 וולט שאני משאירה טעונה תימשך 3 או 4 ימים אם הימים מעוננים. הרגולטור בו אני משתמש ינתק את החשמל ל- Arduino אם מתח הסוללה יורד ל -11 וולט. הסוללה שיש לי מגיעה ממערכת תאורת חירום לבניינים מסחריים, שלה בערך כרבע מגודל מצבר לרכב קטן. אם אתה מתכוון להשתמש במצבר לרכב הקפד לשמור אותו באזור מאוורר היטב (בחוץ), מצברים לרכב מפליטים מימן וגז חמצן בזמן הטעינה והפריקה, זהו שילוב נפיץ.

אַזהָרָה

שמור על סוללה בצורה טובה

שטח מאוורר, בחוץ

שלב 3: חיווט

תִיוּל
תִיוּל

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

תצוגת LCD 1602 כוללת חבילת גב I2C לפשטות, אם אתה משתמש בחיבורי SPI יהיה עליך לחפש כיצד להשתמש בה ולשנות את הקוד סמוך לתחילת הסקיצה. מעולם לא השתמשתי בחיבורי SPI כך שסיכות 2, 3 ו -4 לא יהיו זמינות לשלושת כפתורי הלחיצה.

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

אם אתה מכוון שניות, דקות או שעות (למשל אם הדקות מתקדמות 58, 59, 00) השעה תתקדם לשעה הבאה.

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

שלב 4: מה התצוגה מציגה

מה התצוגה מראה
מה התצוגה מראה

שמתי הרבה מידע על צג LCD 1602 הדורש הסבר כלשהו:

שורה 1 או שורה אפס '0' כאשר מדברים בקוד, מציגה את הזמן הסטנדרטי. בצד שמאל הוא 'STD', זה מייצג את הזמן 'STandarD'.

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

סולם זמן זה הוא שעון של 12 שעות ולכן בצד ימין הוא 'AM או' PM 'לציון בוקר או אחר הצהריים.

שורה 2 או שורה אחת '1' כאשר מדברים בקוד, מציגה את שעון הקיץ המשתנה בהתאם ליום השנה. פירושו 'DST' משמאל 'שעון קיץ'

באמצע הקו השני הוא הזמן הצבאי המקומי שלך שהוא שעון 24 שעות. תוכלו לשמוע אותו מכונה 'הו שש מאות שעות' למשל.

בצד ימין הוא יום השנה כפי שמזכיר את היפוך החורף, בחצי הכדור הצפוני 21 בדצמבר (בערך) הוא יום אפס '0' ובחצי הכדור הדרומי 21 ביוני (בערך) הוא יום אפס '0'.

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

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

שלב 5: הגדרת סקיצה

הגדרת סקיצה
הגדרת סקיצה

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

קו 11 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

שורה זו פונה לתצוגת LCD וקובעת את הכתובת הנכונה של חבילת הגב של I2C. 0x27 היא הכתובת של כל אחת מארז הגב שקניתי. אם אתה מפעיל את השעון אך לא מוצגים נתונים אך הוא מאיר, כנראה שהכתובת שונה על גבי ה- LCD שלך. אשים קישור למטה לתיאור כיצד לשנות את כתובת חבילת הגב של LCD או למצוא את הכתובת.

שורות 24 int minuteSt = 35;

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

שורות 25 int hourSt = 18;

הגדר את השעה לשעה STD (שעון 24 שעות) מתחיל ב-. 18:00 אחר הצהריים תהיה שעה 18.

שורה 26 int DSTdays = 339;

הורד והתייחס לקובץ ה- pdf "סולם שעון קל של שעון הקיץ" (חצי הכדור הצפוני או הדרומי) בו אתה גר, חפש את התאריך והכנס את היום # לשורה זו. (עמודה שמאלית). דוגמה (24 בנובמבר הוא יום מס '339 בחצי הכדור הצפוני ויום מס' 156 בחצי הכדור הדרומי)

קו 27 DSTyear = 2019;

הזן את השנה הנוכחית.

שורה 92 אם ((masterTime - previousMasterTimeSt> = 1000) && (microTime - previousMicroTimeSt> = 500)) {

יש להשוות את "previousMasterTimeSt" למספר האלפיות השנייה, כך שאולי '1000' זה צריך להשתנות ל 999 בהתאם לשעון הפנימי של לוח Arduino ואז להתאים את ה- MicroTime הקודם כדי לכוונן את השעון. לשעון הפנימי אם כי 16MH יש וריאציות מלוח אחד למשנהו.

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

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

שלב 6: הערות אחרונות

הערות אחרונות
הערות אחרונות

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

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

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

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

האם יש צורך או אפילו אפשרי DST בקוטב הצפוני או הדרומי?

מה השעה בקוטב הצפוני או הדרומי?

לאיזה כיוון היית נוסע כדי לעזוב את הקוטב הצפוני או הקוטב הדרומי?

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

באיזה אזור זמן סנטה גר?

האם הוא צריך DST?

מה השעה בכל זאת בקוטב הצפוני?

לאיזה כיוון נוסע סנטה כדי למסור את כל המתנות שלו?

באיזה קו רוחב יעיל DST?

עכשיו לקו המשווה;

האם ניתן להשתמש בשעון זה בקו המשווה?

האם הם ישתמשו בסולם חצי הכדור הצפוני או הדרומי?

מהם התאריכים של היפוך החורף ופרישת הקיץ?

באיזה קו רוחב יעיל DST?

האם הפינגווינים צריכים DST?

אתה חושב שאני מוזר לחשוב על השאלות האלה?

בניין שמח לכולם!

פילמונט

שלב 7: קישורים אחרים

זהו קישור לקביעת או שינוי הכתובת בחבילה האחורית של I2C:

www.instructables.com/id/1602-2004-LCD-Adapter-Addressing/

PiotrS כתבה הוראה מצוינת עבור כתובות חומרה I2C

playground.arduino.cc/Main/I2cScanner

קישור זה יסרוק את מכשיר ה- I2C שלך ויחזיר את הכתובת

מוּמלָץ: