جدول المحتويات:

مشروع ساعة منبه اردوينو: 14 خطوة
مشروع ساعة منبه اردوينو: 14 خطوة

فيديو: مشروع ساعة منبه اردوينو: 14 خطوة

فيديو: مشروع ساعة منبه اردوينو: 14 خطوة
فيديو: RTC أردوينو للمبتدئين- (37) ساعة رقمية باستخدام 2024, شهر نوفمبر
Anonim
مشروع المنبه اردوينو
مشروع المنبه اردوينو

في هذا المشروع ، سنستخدم Arduino Uno للتحكم في شاشة LCD لإظهار الوقت والوقت الحاليين اللذين تم ضبط المنبه عليهما. سنستخدم الأزرار لضبط كل مرة.

المواد:

  • اردوينو أونو -
  • اللوح -
  • أسلاك العبور (x13 +) -
  • مقاومات 10 kohm (x4) -
  • شاشة LCD -
  • 7 أزرار -
  • مكبر صوت بيزو -

الخطوة 1: تعليمات التوصيل

تعليمات هوكوب
تعليمات هوكوب

1. قم بتوصيل سلك توصيل من دبوس 5 فولت في Arduino بأحد قضبان + على لوح التجارب.

الخطوة 2:

صورة
صورة

2. قم بتوصيل سلك توصيل من دبوس GND الموجود في Arduino إلى السكة - بجانب السكة + التي اخترتها على لوح التجارب.

الخطوه 3:

صورة
صورة

3. قم بتوصيل شاشة LCD بالطاقة ، والأرضي ، ودبوس TX (دبوس 1).

الخطوة الرابعة:

صورة
صورة

4. ضع 7 أزرار على لوح التجارب مع وضع الأرجل عبر الفجوة في لوح التجارب.

الخطوة الخامسة:

صورة
صورة

5. ضع مقاومات 10 kohm من السكة - مع توصيل دبوس GND بها في المسامير السفلية اليسرى للأزرار.

الخطوة السادسة:

صورة
صورة

6. ضع أسلاك العبور بين الدبوس الأيمن السفلي للأزرار وسكة 5 فولت على لوح التجارب.

الخطوة السابعة:

صورة
صورة

7. ضع أسلاك العبور بين الأطراف 6 ، ثم 8-13 ، والدبوس الموجود على الزر الذي يتصل به المقاوم.

الخطوة الثامنة:

صورة
صورة

8. بعد ذلك ، ضع مكبر الصوت Piezo على لوحة التجارب وقم بتوصيل السن 7 بمسمار الطاقة ، ثم المقاوم 100 أوم بالأرض.

الخطوة 9: تعليمات البرمجة

1. نظرة عامة: سيطلب هذا المشروع من المستخدم ضبط الوقت الحالي على الطاقة الأولية على الشاشة ، الوقت الحالي ووقت ضبط المنبه. سيتم استخدام الأزرار المتصلة أعلاه لضبط كل مرة. من اليسار إلى اليمين ، يتم ضبط الساعة الحالية ، وتعيين الدقيقة الحالية ، وضبط AM أو PM الحالي ، وتعيين ساعة التنبيه ، وتعيين دقيقة التنبيه ، وتعيين المنبه صباحًا أو مساءً. يستخدم الزر الأخير لكتم صوت المنبه عندما يصدر صوتًا.

الخطوة 10:

2. أول شيء يتعين علينا القيام به هو تهيئة المتغير الذي سنستخدمه.

// تهيئة المتغيرات لاستخدامها في الساعة = 0 ؛ // ساعة للوقت الحالي int دقيقة = 0 ؛ //

دقيقة للوقت الحالي int ثانية = 0 ؛ // الثانية للوقت الحالي

int hour_a = 0 ؛ int // ساعة لوقت التنبيه

minutes_a = 0 ؛ // دقيقة لوقت التنبيه

منطقي am_pm = خطأ ؛ // علامة تبديل AM / PM. خطأ هو AM ، صحيح هو PM

منطقي am_pm_a = خطأ ؛ // AM / PM تبديل العلم للتنبيه. خطأ هو AM ، صحيح هو PM

عدد int set_hr = 13 ؛ // استخدم الدبوس 13 لضبط الساعة

int set_min = 12 ؛ // استخدم الدبوس 12 لضبط دقيقة int

set_am_pm = 11 ؛ // استخدم الدبوس 11 لضبط صباحًا / مساءً

int set_hr_a = 10 ؛ // استخدم دبوس 10 لضبط ساعة للتنبيه int set_min_a = 9 ؛ // استخدم الدبوس 9 لضبط دقيقة للتنبيه int set_am_pm_a = 8 ؛ // استخدم الدبوس 8 لضبط صباحًا / مساءً للتنبيه

مكبر الصوت int = 7 ؛ // Pin للاستخدام لـ Speakerint quiet = 6 ؛ // تثبيت لإيقاف السماعة

إنذار منطقي = خطأ ؛ // علامة للتبديل للاستمرار في الانزعاج

هدوء منطقي = خطأ ؛ // علامة تظهر الهدوء لم يتم الضغط عليها

int cur_time = 0 ؛ // متغير للوقت الحالي

int etime = 0 ؛ // متغير للوقت المنقضي

الخطوة 11:

3. بعد ذلك ، نحتاج إلى إعداد شاشة LCD وإخبار المستخدم بضبط الوقت الحالي. نظرًا لأن هذا يلزم إجراؤه مرة واحدة فقط ، فسنقوم به في روتين الإعداد.

الإعداد باطل() {

// إعداد شاشة LCD

Serial.begin (9600) ؛ // تهيئة المسلسل عند 9600 باود

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 (مكبر الصوت ، الإخراج) ؛

pinMode (هادئ ، INPUT) ؛

// عند التشغيل الأولي ، اطلب من المستخدم ضبط الوقت الحالي. Serial.print ("ضبط الوقت الحالي") ؛ تأخير (2000) ؛

Serial.write (12) ؛

printTimes () ،

cur_time = ميلي () ؛ // خزن الوقت الحالي}

الخطوة 12:

4. بعد ذلك ، في روتين الحلقة ، نتتبع الوقت ونقرأ حالة الزر لمعرفة ما إذا كان المستخدم قد قام بتعيين أي من الأوقات.

حلقة فارغة() {

// احتفظ بالوقت

keepTime () ،

// تحقق لمعرفة ما إذا كان وقت التنبيه قد حان!

إذا ((الساعة == ساعة_أ && دقيقة == دقيقة_أ &&! صامت) || منبه) {نغمة (مكبر صوت ، 2000 ، 500) ؛ // إخراج صوت 2000 هرتز إلى السماعة لمدة 500 مللي ثانية

تأخير (500) ؛ // Delay 500 ms if (! alarm) {// إذا كان المنبه مغلقًا ، فقم بتشغيله

}

}

// إذا كتم المستخدم المنبه بالضغط على الزر "صامت" ، فتوقف عن الإنذار إذا (المنبه &&! صامت && قراءة رقمية (صامت)) {

إنذار = خطأ ؛

صامت = صحيح ؛ }

// إعادة ضبط المنبه إذا (! alarm && quieted && minutes! = minutes_a) {quieted = false؛

}

// تحقق لمعرفة ما إذا كانت دبابيس المجموعة عالية ، وإذا كان الأمر كذلك ، قم بزيادة القيمة المقابلة (digitalRead (set_hr) && hour <12) {

ساعة ++ ؛

printTimes () ،

debounce () ؛

}

وإلا إذا (digitalRead (set_hr) && hour == 12) {hour = 1؛

printTimes () ،

debounce () ؛

}

آخر{}

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

دقيقة ++ ؛ printTimes () ؛

debounce () ؛

}

وإلا إذا (digitalRead (set_min) && minutes == 59) {minutes = 0 ؛

printTimes () ،

debounce () ؛

}

else {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = خطأ ،

printTimes () ،

debounce () ؛

}

وإلا إذا (digitalRead (set_am_pm) &&! am_pm) {am_pm = true؛ printTimes ()؛

debounce () ؛

}

else {} if (digitalRead (set_hr_a) && hour_a <12) {

ساعة_أ ++ ؛

printTimes () ،

debounce () ؛

}

وإلا إذا (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1؛

printTimes () ،

debounce () ؛

}

else {} if (digitalRead (set_min_a) && minutes_a <59) {

دقيقة_أ ++ ؛

printTimes () ،

debounce () ؛

}

وإلا إذا (digitalRead (set_min) && minutes_a == 59) {minutes_a = 0 ؛

printTimes () ،

debounce () ؛

}

else {} 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 = صحيح ؛

printTimes () ،

debounce () ؛

}

آخر{}

}

الخطوة 13:

5. هنا ، ستلاحظ اثنين من الإجراءات الفرعية التي قمت بإنشائها - debounce () و printTimes (). يُستخدم Debounce () للتأكد من أننا نقرأ الأزرار مرة واحدة فقط. نظرًا لأن Arduino يمسح آلاف المرات في الثانية ، فقد يعتقد أن الزر تم الضغط عليه عدة مرات عندما كنت تنوي قراءته مرة واحدة فقط. سيؤدي Debounce () إلى تجميد البرنامج حتى يتم تحرير الزر. تقوم printTimes () بتحديث شاشة LCD ، ولكن نظرًا لأن ذلك كان عبارة عن عدة أوامر ، فقد قمت بكتابتها مرة واحدة وبعد ذلك يمكنني استدعاء الإجراء الفرعي في أي وقت تتغير فيه القيمة الزمنية.

// أثناء الضغط على أي من الأزرار ، ابق في هذه الوظيفة ثم قم بتأخير 250 مللي ثانية.

تراجع باطل () {

while (digitalRead (set_hr) || digitalRead (set_min) ||

قراءة رقمية (set_am_pm) || قراءة رقمية (set_hr_a) ||

قراءة رقمية (set_min_a) || digitalRead (set_am_pm_a)) {} تأخير (250) ؛

}

// يطبع الأوقات المحدثة إذا كان هناك أي تغييرات

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 (الثاني) ؛

إذا (ص) {

Serial.print ("PM") ؛

}

آخر{

Serial.print ("AM") ؛

}

Serial.write (168) ؛

Serial.print ("ضبط المنبه لـ:") ؛

Serial.write (188) ؛

إذا (hour_a <10) {

Serial.print ("0") ؛

}

Serial.print (hour_a) ؛

Serial.print (":") ؛

إذا (minutes_a <10) {

Serial.print ("0") ؛

}

Serial.print (minutes_a) ؛

إذا (am_pm_a) {

Serial.print ("PM") ؛

}

آخر{

Serial.print ("AM") ؛

}

}

// زيادة باطلة معلمات الوقت

keepTime () {

etime = ميلي () - cur_time ؛

إذا (الوقت> = 1000 && ثانية <59) {

الثانية ++ ؛

cur_time = مللي () ؛

printTimes () ،

}

وإلا إذا (etime> = 1000 && second == 59 && minutes <59) {second = 0 ؛

دقيقة ++ ؛

cur_time = مللي () ؛

printTimes () ،

}

else if (etime> = 1000 && second == 59 && minutes == 59 && hour <12) {

الثانية = 0 ؛ دقيقة =

0 ؛ ساعة ++ ؛ cur_time =

ميلي () ؛ printTimes () ،

}

وإلا إذا (الوقت> = 1000 && ثانية == 59 && دقيقة == 59 && ساعة == 12) {

الثانية = 0 ؛ دقيقة =

0 ؛ ساعة = 1 ؛ am_pm =

!صباحا مساءا؛

cur_time = ميلي () ؛

printTimes () ،

}

آخر{}

}

الخطوة 14:

6. هذا كل شيء!

قم بالتجميع والتحميل ، وقد انتهيت من كل شيء!

موصى به: