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

שעון דיוק: 3 שלבים
שעון דיוק: 3 שלבים

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

וִידֵאוֹ: שעון דיוק: 3 שלבים
וִידֵאוֹ: איך לקבוע שעון שבת בשלט RC-3 אלקטרה 2024, יולי
Anonim
שעון דיוק
שעון דיוק

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

אספקה

ראשית, תזדקק לארדואינו אך כל ארדואינו יעבוד

לאחר מכן, תזדקק למבחר חוטי מגשר כלליים.

2 מתגי לחיצת כפתורים 12 מ מ

לוח לחם מסורתי

ותצוגת 16 160 פינים LCD 1602

שלב 1: חיווט

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

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

שלב 2: הקוד

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

פשוט העתק והדבק אותו ב- IDE של Arduino או בעורך האינטרנט.

#כלול "LiquidCrystal.h"

// זה מגדיר את חיווט ה- LCD ל- DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// הגדרת Digital Constrast LCD int cs = 9; // pin 9 עבור ניגודיות PWM const int contrast = 100; // ניגודיות ברירת מחדל

// תצוגת השעה הראשונית היא 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; //אחר הצהריים

// כפתורי הגדרת זמן int כפתור 1; int button2;

// הגדרת סיכות לכפתורי Set Time int hs = 0; // pin 0 להגדרת שעות int ms = 1; // pin 1 להגדרת דקות.

// פסק זמן תאורה אחורית const int Time_light = 150; int bl_TO = Time_light; // פסק זמן תאורה אחורית int bl = 10; // תאורה אחורית סיכת const int תאורה אחורית = 120; // לא יותר מ 7mA !!!

// לקריאת זמן מדויקת, השתמשו בשעון בזמן אמת של Arduino ולא רק עיכוב () uint32_t סטטי בזמן האחרון, עכשיו = 0; // RTC

הגדרת חלל () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // הימנעו מנגדי Pullup חיצוניים עבור לחצן 1 pinMode (ms, INPUT_PULLUP); // ולחצן 2 analogWrite (cs, contrast); // התאם ניגודיות VO analogwrite (bl, תאורה אחורית); // סובב על תאורה אחורית עכשיו = מיליס (); // קרא ערך התחלתי של RTC}

לולאת void () {lcd.begin (16, 2); // כל שנייה // עדכון תצוגת LCD // הדפסה זמן בשעה, דקות, שניות + AM/PM lcd.setCursor (0, 0); lcd.print ("זמן"); if (h <10) lcd.print ("0"); // תמיד 2 ספרות lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); אם (s <10) lcd.print ("0"); lcd.print (ים);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // עבור שורה 2 lcd.print ("שעון דיוק");

// החלפה משופרת של עיכוב (1000) // דיוק הרבה יותר טוב, לא תלוי יותר בזמן ביצוע הלולאה

for (int i = 0; i <5; i ++) // עשה 5 פעמים לולאה של 200ms, לתגובת לחצן מהירה יותר {

while ((now-last_time) <200) // delay200ms {now = millis (); } // לולאה פנימית של 200ms Last_time = עכשיו; // להתכונן ללולאה הבאה

// כפתור הגדרת לחצני קריאה 1 = digitalRead (hs); // לחצן Read Buttons2 = digitalRead (ms);

// פסק זמן תאורה אחורית bl_TO--; אם (bl_TO == 0) {analogWrite (bl, 0); // תאורה אחורית כבויה bl_TO ++; } // הקש על כל אחד כדי להפעיל תאורה אחורית אם (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, תאורה אחורית); // המתן עד שהכפתור ישוחרר בזמן ((כפתור 1 == 0) | (כפתור 2 == 0)) {כפתור 1 = digitalRead (hs); // לחצן קריאת כפתורים 2 = digitalRead (ms); }} else // עיבוד כפתור 1 או לחצן 2 כאשר מכה אותו בזמן שתאורה אחורית מופעלת {if (button1 == 0) {h = h+1; bl_TO = אור_זמן; analogWrite (bl, תאורה אחורית); }

אם (כפתור 2 == 0) {s = 0; m = m+1; bl_TO = אור_זמן; analogWrite (bl, תאורה אחורית); }

/* ---- נהל שניות, דקות, שעות בבוקר/שעות הצפה ----*/if (s == 60) {s = 0; m = m+1; } אם (m == 60) {m = 0; h = h+1; } אם (h == 13) {h = 1; דגל = דגל+1; אם (דגל == 2) דגל = 0; }

אם ((כפתור 1 == 0) | (כפתור 2 == 0)) // עדכון תצוגה אם לחצן הגדרת הזמן נלחץ {// עדכן תצוגת LCD // הדפס זמן בשעה, דקות, שניות + AM/PM lcd.setCursor (0, 0); lcd.print ("זמן"); if (h <10) lcd.print ("0"); // תמיד 2 ספרות lcd.print (h); lcd.print (":"); if (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); אם (s <10) lcd.print ("0"); lcd.print (ים);

if (flag == 0) lcd.print ("AM"); if (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // עבור שורה 2 lcd.print ("שעון דיוק"); }

} // סוף אם אחרת} // סוף עבור

// לולאה חיצונית של 1000ms

s = s+1; // תוספת שניות. ספירה // ---- נהל שניות, דקות, שעות בין שעות הצהריים/שעות הצפת ---- אם (s == 60) {s = 0; m = m+1; } אם (m == 60) {m = 0; h = h+1; } אם (h == 13) {h = 1; דגל = דגל+1; אם (דגל == 2) דגל = 0; }

// סוף לולאה}

שלב 3: סכמטי (זה ממש לא שלב)

סכמטי (זה לא באמת שלב)
סכמטי (זה לא באמת שלב)

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

תהנו ותהנו ובעיקר הישארו טריים.

מוּמלָץ: