فهرست مطالب:
- مرحله 1: دستورالعمل اتصال
- گام 2:
- مرحله 3:
- مرحله 4:
- مرحله 5:
- مرحله 6:
- مرحله 7:
- مرحله 8:
- مرحله 9: دستورالعمل های برنامه نویسی
- مرحله 10:
- مرحله 11:
- مرحله 12:
- مرحله 13:
- مرحله 14:
تصویری: پروژه ساعت زنگ دار آردوینو: 14 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
در این پروژه ، از 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. همین!
کامپایل و بارگذاری کنید و همه چیز تمام است!
توصیه شده:
ساعت زنگ دار هوشمند: یک ساعت زنگ دار هوشمند ساخته شده با تمشک پای: 10 مرحله (همراه با تصاویر)
ساعت زنگ دار هوشمند: ساعت زنگ دار هوشمند ساخته شده با تمشک پای: آیا تا به حال به دنبال ساعت هوشمند بوده اید؟ اگر چنین است ، این راه حل برای شما است! من ساعت زنگ دار هوشمند ساختم ، این یک ساعت است که می توانید زمان زنگ ساعت را با توجه به وب سایت تغییر دهید. هنگامی که زنگ هشدار به صدا در می آید ، یک صدا (زنگ) و 2 چراغ
ساعت زنگ دار: زنگ مخصوص ، بسیار م :ثر: 3 مرحله
ساعت زنگ دار: آهنگ زنگ ویژه ، بسیار م :ثر: سلام به همه! این اولین باری است که من یک دستورالعمل ارسال می کنم ، متاسفم برای سطح پایینی که در زبان انگلیسی دارم :) در اینجا بیداری برای کمک به کسانی است که صبح دوباره به خواب می روند. این اصل بسیار ساده است ، نه اینکه با زنگ بیدار شوید یا
ساعت زنگ دار خیابان کنجدی DIY (با زنگ خطر!): 6 مرحله (همراه با تصاویر)
ساعت زنگ دار خیابان کنجدی DIY (با هشدار آتش!): سلام به همه! این پروژه اولین پروژه من است. از آنجایی که اولین تولد پسرعموهایم در راه بود ، می خواستم برای او هدیه ای ویژه تهیه کنم. از عمو و عمه ام شنیدم که او در خیابان کنجد است ، بنابراین با خواهر و برادرهایم تصمیم گرفتم یک ساعت زنگ دار بر اساس
ساعت زنگ دار طلوع LED با زنگ هشدار قابل تنظیم: 7 مرحله (همراه با تصاویر)
ساعت مچی LED طلوع آفتاب با زنگ هشدار قابل تنظیم: انگیزه من در این زمستان دوست دخترم هنگام بیدار شدن از خواب با مشکلات زیادی روبرو شد و به نظر می رسید از SAD (اختلال عاطفی فصلی) رنج می برد. من حتی متوجه می شوم که بیدار شدن در زمستان بسیار سخت تر است زیرا خورشید نیامده است
مونتاژ "ساعت هوشمند 2" (ساعت زنگ دار مبتنی بر آردوینو با بسیاری از ویژگی های اضافی): 6 مرحله
مونتاژ "ساعت هوشمند 2" (ساعت زنگ دار مبتنی بر آردوینو با بسیاری از ویژگی های اضافی): این آموزش نحوه مونتاژ کیت برای ساعت هوشمند 2 ، یک پروژه منبع باز (سخت افزاری و نرم افزاری) را نشان می دهد. یک کیت کامل Wise Clock 2 را می توانید در اینجا خریداری کنید. به طور خلاصه ، این کاری است که Wise Clock 2 می تواند انجام دهد (با نرم افزار منبع باز فعلی