فهرست مطالب:

پروژه ساعت زنگ دار آردوینو: 14 مرحله
پروژه ساعت زنگ دار آردوینو: 14 مرحله

تصویری: پروژه ساعت زنگ دار آردوینو: 14 مرحله

تصویری: پروژه ساعت زنگ دار آردوینو: 14 مرحله
تصویری: ترکید😱😭 2024, جولای
Anonim
پروژه ساعت زنگ دار آردوینو
پروژه ساعت زنگ دار آردوینو

در این پروژه ، از Arduino Uno برای کنترل یک صفحه LCD استفاده می کنیم تا زمان و زمان فعلی که زنگ برای آن تنظیم شده است را نشان دهد. برای تنظیم هر بار از دکمه ها استفاده خواهیم کرد.

مواد:

  • Arduino Uno -
  • Breadboard -
  • Jumper Wires (x13+) -
  • 10 مقاومت kohm (x4) -
  • صفحه LCD -
  • 7 دکمه-https://vilros.com/collections/raspberry-pi-acces…
  • بلندگوی پیزو -

مرحله 1: دستورالعمل اتصال

دستورالعمل های اتصال
دستورالعمل های اتصال

1. یک سیم بلوز از پین 5 ولت روی آردوینو را به یکی از ریل های + روی تخته نان متصل کنید.

گام 2:

تصویر
تصویر

2. یک سیم بلوز از پایه GND در آردوینو را به ریل کنار + ریل انتخاب شده روی تخته نان متصل کنید.

مرحله 3:

تصویر
تصویر

3. صفحه LCD را به برق ، زمین و پین TX وصل کنید (پین 1).

مرحله 4:

تصویر
تصویر

4. 7 دکمه را روی تخته نان بگذارید و پاها در فاصله بین نان برید.

مرحله 5:

تصویر
تصویر

5. 10 مقاومت kohm را از ریل - پایه GND که به آن وصل شده به پین های سمت چپ پایین دکمه ها قرار دهید.

مرحله 6:

تصویر
تصویر

6. سیم های بلوز را بین پین پایین سمت راست دکمه ها و ریل 5V روی تخته نان خود قرار دهید.

مرحله 7:

تصویر
تصویر

7. سیم های بلوز را بین پین 6 و سپس 8-13 و پین را روی دکمه ای که مقاومت به آن متصل است ، قرار دهید.

مرحله 8:

تصویر
تصویر

8. در مرحله بعد ، بلندگوی Piezo خود را روی تخته نان قرار دهید و پین 7 را به پین برق و سپس یک مقاومت 100 اهمی به زمین وصل کنید.

مرحله 9: دستورالعمل های برنامه نویسی

1. نمای کلی: در این پروژه از کاربر خواسته می شود تا زمان فعلی را روی برق اولیه نمایشگر زمان فعلی و زمانی که زنگ ساعت برای آن تنظیم شده است تنظیم کند. دکمه های متصل در بالا هر بار برای تنظیم استفاده می شود. از چپ به راست ، ساعت فعلی ، دقیقه فعلی ، تنظیم AM یا PM فعلی ، تنظیم ساعت زنگ ساعت ، تنظیم دقیقه زنگ ، تنظیم زنگ ساعت AM یا PM تنظیم می شوند. آخرین دکمه برای خاموش کردن زنگ هنگام به صدا در آمدن استفاده می شود.

مرحله 10:

2. اولین کاری که باید انجام دهیم این است که متغیری را که قرار است از آن استفاده کنیم ، اولیه کنیم.

// مقداردهی اولیه برای استفاده در ساعت = 0؛ // ساعت برای زمان فعلی int دقیقه = 0؛ //

دقیقه برای زمان کنونی int = 0؛ // دوم برای زمان فعلی

int hour_a = 0 ؛ int // ساعت زمان هشدار

minute_a = 0 ؛ // دقیقه برای زمان زنگ

bool am_pm = false؛ // تعویض پرچم AM/PM غلط AM است ، درست PM است

bool am_pm_a = false؛ // تعویض پرچم AM/PM برای زنگ هشدار. غلط AM است ، درست PM است

int set_hr = 13؛ // برای تنظیم ساعت از پین 13 استفاده کنید

int set_min = 12؛ // برای تنظیم دقیقه int از پین 12 استفاده کنید

set_am_pm = 11؛ // برای تنظیم am/pm از پین 11 استفاده کنید

int set_hr_a = 10 ؛ // از پین 10 برای تنظیم ساعت برای زنگ هشدار int set_min_a = 9 استفاده کنید؛ // از پین 9 برای تنظیم دقیقه برای زنگ int set_am_pm_a = 8 استفاده کنید؛ // از پین 8 برای تنظیم am/pm برای زنگ استفاده کنید

int بلندگو = 7؛ // پین برای استفاده برای speakerint հանգիստ = 6؛ // پین کنید تا بلندگو متوقف شود

bool alarm = false؛ // پرچم برای تغییر وضعیت برای هشدار دادن

bool bêdeng = false؛ // پرچم نشان داده شده است بی صدا فشار داده نشده است

int cur_time = 0؛ // متغیر برای زمان فعلی

int etime = 0؛ // متغیر برای زمان سپری شده

مرحله 11:

3. در مرحله بعد ، باید صفحه LCD را تنظیم کرده و به کاربر بگوییم زمان فعلی را تنظیم کند. از آنجا که این کار فقط باید یکبار انجام شود ، ما آن را در روال راه اندازی انجام می دهیم.

void setup () {

// صفحه LCD را تنظیم کنید

Serial.begin (9600)؛ // مقداردهی اولیه سریال در 9600 baud

Serial.write (17)؛ // چراغ عقب را روشن کنید

Serial.write (24)؛ // صفحه نمایش را بدون مکان نما و بدون چشمک زدن روشن کنید

Serial.write (12)؛ // صفحه را پاک کنید

Serial.write (128)؛ // مکان نما را به گوشه بالا سمت چپ منتقل کنید // تنظیم pinMode 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 ()؛

// بررسی کنید که آیا وقت زنگ زدن است یا نه!

if ((ساعت == hour_a && دقیقه == minute_a &&! خاموش) || زنگ هشدار) {تن (بلندگو ، 2000 ، 500) ؛ // خروجی صدای 2000 هرتز به بلندگوی 500 میلی ثانیه

تأخیر (500) ؛ // اگر (! زنگ هشدار) 500 ms را به تأخیر بیندازید {// اگر زنگ هشدار خاموش است ، آن را روشن کنید

}

}

// اگر کاربر با فشار دادن دکمه بی صدا زنگ ساعت را خاموش می کند ، اگر (alarm &&! bêdeng && digitalRead (بی صدا)) {

زنگ = نادرست ؛

ساکت = درست؛ }

// اگر (! alarm && bêdeng && دقیقه! = minute_a) {alarmed = false؛ را بازنشانی کنید.

}

// بررسی کنید که آیا پین های تنظیم شده زیاد می شوند یا خیر ، و در این صورت ، مقدار مربوطه را افزایش دهید (digitalRead (set_hr) && hour <12) {

ساعت ++ ؛

printTimes ()؛

debounce ()؛

}

else if (digitalRead (set_hr) && hour == 12) {hour = 1؛

printTimes ()؛

debounce ()؛

}

دیگری {}

if (digitalRead (set_min) && دقیقه <59) {

دقیقه ++ ؛ printTimes () ؛

debounce ()؛

}

else if (digitalRead (set_min) && دقیقه == 59) {minute = 0؛

printTimes ()؛

debounce ()؛

}

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

am_pm = false؛

printTimes ()؛

debounce ()؛

}

else if (digitalRead (set_am_pm) &&! am_pm) {am_pm = true؛ printTimes ()؛

debounce ()؛

}

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

hour_a ++؛

printTimes ()؛

debounce ()؛

}

else if (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1؛

printTimes ()؛

debounce ()؛

}

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

minute_a ++؛

printTimes ()؛

debounce ()؛

}

else if (digitalRead (set_min) && minute_a == 59) {minute_a = 0؛

printTimes ()؛

debounce ()؛

}

else {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = false؛

printTimes ()؛

debounce ()؛

}

else if (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true؛

printTimes ()؛

debounce ()؛

}

دیگری {}

}

مرحله 13:

5. در اینجا ، متوجه چند زیر برنامه ای می شوید که من ایجاد کردم - debounce () و printTimes (). Debounce () برای اطمینان از اینکه ما فقط یک بار دکمه ها را خوانده ایم استفاده می شود. از آنجا که آردوینو هزاران بار در ثانیه اسکن می کند ، ممکن است تصور کند که دکمه چندین بار فشار داده شده است در حالی که شما فقط یک بار قصد داشتید آن را بخوانید. Debounce () برنامه را تا زمان آزاد شدن دکمه منجمد می کند. printTimes () صفحه LCD را به روز می کند ، اما از آنجا که چندین دستور بود ، من آنها را یک بار تایپ کردم و سپس می توانم هر زمان که مقدار زمان تغییر کرد ، با زیر برنامه تماس بگیرم.

// در حالی که هر یک از دکمه ها در حال فشردن هستند ، در این عملکرد بمانید و 250 میلی ثانیه را به تأخیر بیندازید.

void debounce () {

while (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 (":") ؛

if (دوم <10) {

Serial.print ("0") ؛

}

Serial.print (دوم) ؛

if (am_pm) {

Serial.print ("PM") ؛

}

دیگری {

Serial.print ("AM") ؛

}

Serial.write (168)؛

Serial.print ("تنظیم زنگ هشدار برای:") ؛

Serial.write (188)؛

if (hour_a <10) {

Serial.print ("0") ؛

}

Serial.print (hour_a) ؛

Serial.print (":")؛

if (minute_a <10) {

Serial.print ("0") ؛

}

Serial.print (minute_a)؛

if (am_pm_a) {

Serial.print ("PM") ؛

}

دیگری {

Serial.print ("AM") ؛

}

}

// افزایش پارامترهای زمان خالی

keepTime () {

etime = millis () - cur_time؛

if (etime> = 1000 && ثانیه <59) {

دوم ++ ؛

cur_time = millis ()؛

printTimes ()؛

}

else if (etime> = 1000 && second == 59 && دقیقه <59) {second = 0؛

دقیقه ++ ؛

cur_time = millis ()؛

printTimes ()؛

}

else if (etime> = 1000 && second == 59 && دقیقه == 59 && ساعت <12) {

دوم = 0 ؛ دقیقه =

0 ساعت ++ ؛ زمان cur_ =

millis ()؛ printTimes ()؛

}

else if (etime> = 1000 && دوم == 59 && دقیقه == 59 && ساعت == 12) {

دوم = 0 ؛ دقیقه =

0 ساعت = 1 ؛ am_pm =

!قبل از ظهر بعد از ظهر؛

cur_time = millis ()؛

printTimes ()؛

}

دیگری {}

}

مرحله 14:

6. همین!

کامپایل و بارگذاری کنید و همه چیز تمام است!

توصیه شده: