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

פרויקט שעון מעורר Arduino: 14 שלבים
פרויקט שעון מעורר Arduino: 14 שלבים

וִידֵאוֹ: פרויקט שעון מעורר Arduino: 14 שלבים

וִידֵאוֹ: פרויקט שעון מעורר Arduino: 14 שלבים
וִידֵאוֹ: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, יולי
Anonim
פרויקט שעון מעורר Arduino
פרויקט שעון מעורר Arduino

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

חומרים:

  • Arduino Uno -
  • לוח לחם -
  • חוטי מגשר (x13+) -
  • 10 נגדי קוהם (x4) -
  • מסך LCD -
  • 7 לחצנים-https://vilros.com/collections/raspberry-pi-acces…
  • רמקול Piezo -

שלב 1: הוראות חיבור

הוראות חיבור
הוראות חיבור

1. חבר חוט מגשר מהפין 5V בארדואינו לאחת מסילות + בלוח הלחם.

שלב 2:

תמונה
תמונה

2. חבר חוט מגשר מתוך סיכת ה- GND בארדואינו למעקה - שליד המסילה + שבחרת בלוח הלחם.

שלב 3:

תמונה
תמונה

3. חבר את מסך ה- LCD לחשמל, לאדמה ולסיכה TX (סיכה 1).

שלב 4:

תמונה
תמונה

4. הניחו 7 כפתורים על לוח הלחם כשהרגליים לרוחב הפער בלוח הלחם.

שלב 5:

תמונה
תמונה

5. הניחו 10 נגדי קוהם מהמסילה - כאשר סיכת ה- GND מחוברת אליה לפינים השמאליים התחתונים של הכפתורים.

שלב 6:

תמונה
תמונה

6. הנח חוטי מגשר בין הסיכה הימנית התחתונה של הכפתורים לבין מסילת 5V על לוח הלחם שלך.

שלב 7:

תמונה
תמונה

7. הנח חוטי מגשר בין סיכות 6, ולאחר מכן 8-13, והסיכה על הכפתור שאליו מחובר הנגד.

שלב 8:

תמונה
תמונה

8. לאחר מכן, הנח את רמקול ה- Piezo שלך על לוח הלחם וחבר את סיכה 7 לסיכת החשמל, ואז נגד 100 אוהם לקרקע.

שלב 9: הוראות תכנות

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

שלב 10:

2. הדבר הראשון שעלינו לעשות הוא לאתחל את המשתנה שבו נשתמש.

// אתחל משתנים לשימוש במשך שעה = 0; // שעה לזמן הנוכחי int minute = 0; //

דקה לזמן הנוכחי int second = 0; // שנייה לזמן הנוכחי

int hour_a = 0; int // שעה לזמן אזעקה

דקה_א = 0; // דקה לזמן אזעקה

bool am_pm = false; // AM/PM דגל החלפה. שקר הוא AM, נכון הוא PM

bool am_pm_a = שקר; // AM/PM דגל החלפת אזעקה. שקר הוא AM, נכון הוא PM

int set_hr = 13; // השתמש בסיכה 13 לקביעת השעה

int set_min = 12; // השתמש בסיכה 12 כדי להגדיר את הדקה int

set_am_pm = 11; // השתמש בסיכה 11 כדי להגדיר am/pm

int set_hr_a = 10; // השתמש בסיכה 10 כדי להגדיר את השעה עבור אזעקה int set_min_a = 9; // השתמש בסיכה 9 כדי להגדיר דקה עבור אזעקה int set_am_pm_a = 8; // השתמש בסיכה 8 כדי להגדיר את השעה/שעה לאזעקה

רמקול int = 7; // הצמד לשימוש לרמקולים שקט = 6; // הצמד לעצור את הרמקול

אזעקת בול = שקר; // סמן כדי להחליף כדי להמשיך לדאוג

בול שקט = שקר; // הדגל המראה שקט לא נלחץ

int cur_time = 0; // משתנה לזמן הנוכחי

int etime = 0; // משתנה במשך הזמן שחלף

שלב 11:

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

הגדרת בטל () {

// הגדר מסך LCD

Serial.begin (9600); // אתחל סידורי ב- 9600 baud

Serial.write (17); // הדלק את הנורה האחורית

Serial.write (24); // הפעל את הצג, עם סמן וללא מצמוץ

Serial.write (12); // נקה את המסך

Serial.write (128); // העבר את הסמן לפינה השמאלית העליונה // הגדר pinModes pinMode (set_hr, קֶלֶט); pinMode (set_min, INPUT);

pinMode (set_am_pm, INPUT);

pinMode (set_hr_a, INPUT);

pinMode (set_min_a, INPUT);

pinMode (set_am_pm_a, INPUT);

pinMode (רמקול, OUTPUT);

pinMode (שקט, קלט);

// בהספק ההתחלתי, הגדר את המשתמש לשעה הנוכחית. Serial.print ("הגדר את השעה הנוכחית"); עיכוב (2000);

Serial.write (12);

printTimes ();

cur_time = millis (); // אחסן את השעה הנוכחית}

שלב 12:

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

לולאת חלל () {

// שמור על הזמן

keepTime ();

// בדוק אם הגיע הזמן להבהיל!

אם ((שעה == שעה_א && דקה == דקה_א &&! שקט) || אזעקה) {צליל (רמקול, 2000, 500); // פלט צליל של 2000 הרץ לרמקול למשך 500 אלפיות השנייה

עיכוב (500); // עיכוב של 500 ms אם (! אזעקה) {// אם האזעקה כבויה, הפעל אותה

}

}

// אם המשתמש משתיק את האזעקה על ידי לחיצה על כפתור השקט, הפסק להבהיל אם (אזעקה &&! שקט && digitalRead (שקט)) {

אזעקה = שקר;

שקט = נכון; }

// אפס את האזעקה אם (! אזעקה && שקט && דקה! = דקות_א) {שקט = שקר;

}

// בדוק אם סיכות ההגדרה גבוהות, ואם כן, הגדל את הערך המתאים if (digitalRead (set_hr) && hour <12) {

שעה ++;

printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

debounce ();

}

אַחֵר{}

if (digitalRead (set_min) && minute <59) {

דקה ++; printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

אחרת {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = שקר;

printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

אחרת {} אם (digitalRead (set_hr_a) && hour_a <12) {

שעה_א ++;

printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

אחרת {} אם (digitalRead (set_min_a) && minute_a <59) {

minute_a ++;

printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

אחר {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = שקר;

printTimes ();

debounce ();

}

אחרת אם (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

אַחֵר{}

}

שלב 13:

5. כאן, תבחין בכמה תת -שורות שיצרתי - debounce () ו- printTimes (). Debounce () משמש כדי לוודא שקראנו את הכפתורים רק פעם אחת. מכיוון שהארדואינו סורק אלפי פעמים בשנייה, הוא עשוי לחשוב שהלחצן נלחץ מספר פעמים כאשר התכוונת לקריאתו פעם אחת בלבד. Debounce () תקפיא את התוכנית עד לשחרור הלחצן. printTimes () מעדכן את מסך ה- LCD, אך מכיוון שמדובר במספר פקודות, הקלדתי אותן פעם אחת ואז יכול להתקשר לתוכנית המשנה בכל פעם שערך הזמן משתנה.

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

ניפוח ריק () {

בעוד (digitalRead (set_hr) || digitalRead (set_min) ||

DigitalRead (set_am_pm) || DigitalRead (set_hr_a) ||

DigitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} עיכוב (250);

}

// מדפיסה את השעות המעודכנות אם יש שינויים

void printTimes () {

Serial.write (12);

Serial.print ("השעה הנוכחית:");

Serial.write (148);

אם (שעה <10) {

Serial.print ("0");

}

Serial.print (שעה);

Serial.print (":");

אם (דקה <10) {

Serial.print ("0");

}

Serial.print (דקה); Serial.print (":");

אם (שנייה <10) {

Serial.print ("0");

}

Serial.print (שני);

אם (am_pm) {

Serial.print ("PM");

}

אַחֵר{

Serial.print ("AM");

}

Serial.write (168);

Serial.print ("ערכת אזעקה ל:");

Serial.write (188);

אם (שעה_א <10) {

Serial.print ("0");

}

Serial.print (שעה_א);

Serial.print (":");

אם (minute_a <10) {

Serial.print ("0");

}

Serial.print (minute_a);

אם (am_pm_a) {

Serial.print ("PM");

}

אַחֵר{

Serial.print ("AM");

}

}

// הגדילו את פרמטרי הזמן בטלים

keepTime () {

etime = millis () - cur_time;

if (etime> = 1000 && second <59) {

השני ++;

cur_time = millis ();

printTimes ();

}

אחרת אם (etime> = 1000 && second == 59 && minute <59) {second = 0;

דקה ++;

cur_time = millis ();

printTimes ();

}

אחרת אם (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

שני = 0; דקה =

0; שעה ++; cur_time =

מילי (); printTimes ();

}

אחרת אם (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

שני = 0; דקה =

0; שעה = 1; am_pm =

! am_pm;

cur_time = millis ();

printTimes ();

}

אַחֵר{}

}

שלב 14:

6. זהו!

הידור והעלה וסיימת!

מוּמלָץ: