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

שעון עצר ארדואינו פשוט ומעשי: 4 שלבים
שעון עצר ארדואינו פשוט ומעשי: 4 שלבים

וִידֵאוֹ: שעון עצר ארדואינו פשוט ומעשי: 4 שלבים

וִידֵאוֹ: שעון עצר ארדואינו פשוט ומעשי: 4 שלבים
וִידֵאוֹ: Stopwatch Timer Arduino 2024, סֶפּטֶמבֶּר
Anonim
שעון עצר ארדואינו פשוט ומעשי
שעון עצר ארדואינו פשוט ומעשי

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

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

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

למתחילים, המשך לקרוא והתענג על גאונות נפשי.

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

שלב 1: הפתרון

הפתרון
הפתרון

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

הדבר הראשון שעולה בראש הוא שימוש בהבדל, כמו time1 -time2 ועיכוב. שכח מזה. נדרש לפחות שש שורות קוד והצהרת if כדי לאתחל.

אז הנה איך לעשות את זה. יש לנו גבול (59). אנחנו רוצים שכל 0 עד 59 יחזור על עצמו שוב ושוב. אֵיך?

מה אם … היינו לוקחים את שארית … של פונקציית האלפיס מחולקת ב 59…. בינגו!

אז זה אמור להיות כך:

(60 [כערך ההתחלתי מכיוון שהגבול הוא 59] + מילי () / 1000 [1000 אלפיות השנייה הוא שני] % 60

אוקיי, בוא נסביר. (%) או מודולוס, הוא בעצם אופרטור כמו (+) שמוצא את השאר. כמו 9 % 2 = 1.

לכן:

  • שאר (60 + 0) % 60 = 0
  • שאר (60 + 1) % 60 = 1
  • שאר (60 + 58) % 60 = 58
  • שאר (60 + 59) % 60 = 59
  • שאר (60 + 60) % 60 = 60
  • שאר (60 + 61) % 60 = 1

לִרְאוֹת!

עכשיו, לגבי החלקים.

שלב 2: החלקים

החלקים
החלקים

לא הרבה, בכלל

  1. כל ארדואינו
  2. כל תצוגה (השתמשתי ב- OLED בגודל 0.96 אינץ ', אבל אתה יכול להשתמש בכל מה שיש לך, רק הקפד להכניס את המשתנים הנכונים לפונקציות התצוגה של התצוגה שלך.)

זהו זה.

שלב 3: הקוד

הנה לך. ההערה די ברורה, כך שלא אמורות להיות בעיות. הספריות ו- init עבור OLED בגודל 0.96 אינץ 'נמצאות בקוד. החלף אותו בתצוגה משלך אם הוא שונה.

// 0.96 ספריות OLED

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

// 0.96 OLED Init

#הגדר OLED_RESET 4

תצוגת Adafruit_SSD1306 (OLED_RESET);

int שניות;

דקות int;

שעות int;

הגדרת בטל () {

// עוד קצת 0.96 אינץ 'OLED Init

display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay (); display.setTextSize (2); display.setTextColor (לבן); }

לולאת חלל () {

שניות = (60 + מילי () / 1000) % 60;

דקות = (60 + מילי () / 60000) % 60; שעות = (25 + מילי () / 3600000) % 25;

display.clearDisplay ();

display.setCursor (0, 22); // הדפס את מספר השעות מאז איפוס display.print (שעות); display.print ("h:");

// הדפס את מספר הדקות מאז האיפוס

display.print (דקות);

display.print ("m:");

// הדפס את מספר השניות מאז איפוס display.print (שניות); display.print ("s");

display.setCursor (0, 0);

display.print ("שעון עצר"); display.drawLine (0, 18, 128, 18, WHITE); display.display ();

}

שלב 4: סיום …

לאחר סיום…
לאחר סיום…

אז זהו זה! עכשיו לך תעשה עם זה מה שאתה רוצה. הזמן כמה ביצים, או השתלט על השכונה שלך.

לחיים, אהרוש

מוּמלָץ: