فهرست مطالب:

ساعت دقیق: 3 مرحله
ساعت دقیق: 3 مرحله

تصویری: ساعت دقیق: 3 مرحله

تصویری: ساعت دقیق: 3 مرحله
تصویری: تفاوت ساعت اورجینال و های‌کپی 2024, نوامبر
Anonim
ساعت دقیق
ساعت دقیق

همه ما به ساعت نیاز داریم ، بنابراین چرا در این دستورالعمل ساعت خود را تنظیم نمی کنید ، من به شما نشان می دهم که چگونه یک ساعت دقیق بسازید هنگامی که تنظیم کرده اید به طور خودکار زمان فعلی را در پس زمینه همه چیز پیگیری می کند. در حالی که فقط به منابع بسیار کم و لحیم کاری صفر نیاز دارد.

تدارکات

ابتدا شما به آردوینو احتیاج دارید اما هر آردوینو کار می کند

در مرحله بعد ، شما نیاز به مجموعه ای از سیم های جهنده عمومی دارید.

2 کلید 12 میلی متری Sparkfun Pushbutton

یک تخته نان سنتی

و یک صفحه نمایش LCD 1602 16 پین

مرحله 1: سیم کشی

سیم کشی
سیم کشی

برای اینکه این ساعت کار کند ، باید آن را به روشی خاص سیم کشی کنید ، در غیر اینصورت به جای زمان ، تعدادی اعداد تصادفی روی صفحه نمایش خواهید داشت.

مرحله 2: کد

از آنجا که ما از RTC استفاده نمی کنیم ، کد کمی طولانی می شود ، اما خوشبختانه من تمام کارهای سخت را برای شما انجام داده ام و آن را در اینجا ارائه کرده ام.

فقط کافی است این را در IDE Arduino یا ویرایشگر وب کپی و جایگذاری کنید.

#شامل "LiquidCrystal.h"

// این سیم کشی LCD را به DIGITALpins const int rs = 2 ، en = 3 ، d4 = 4 ، d5 = 5 ، d6 = 6 ، d7 = 7 تعریف می کند. LCD مایع LiquidCrystal (rs، en، d4، d5، d6، d7)؛

// تنظیم کنتراست LCD دیجیتال int cs = 9؛ // پین 9 برای کنتراست PWM const int contrast = 100؛ // کنتراست پیش فرض

// نمایش اولیه ساعت 12:59:45 بعد از ظهر int h = 12 است؛ int m = 59 ؛ int s = 45 ؛ int flag = 1؛ // PM

// Time Set Buttons int button1؛ دکمه int2 ؛

// پین ها برای تنظیم دکمه های زمان int hs = 0 ؛ // پین 0 برای Hours Setting int ms = 1 ؛ // پین 1 برای تنظیم دقیقه

// Backlight Time Out out const int Time_light = 150؛ int bl_TO = Time_light؛ // Backlight Time-Out int bl = 10؛ // backlight pin const int backlight = 120؛ // بیش از 7mA !!!

// برای خواندن دقیق زمان ، از Arduino Real Time Clock استفاده کنید و نه فقط () static uint32_t last_time، now = 0؛ // RTC

void setup () {lcd.begin (16 ، 2) ؛ pinMode (hs، INPUT_PULLUP)؛ // اجتناب از مقاومت های کششی خارجی برای دکمه 1 pinMode (ms، INPUT_PULLUP)؛ // و Button 2 analogWrite (cs، contrast)؛ // Adjust Contrast VO analogWrite (bl، backlight)؛ // Turn در Backlight now = millis ()؛ // خواندن مقدار اولیه RTC}

void loop () {lcd.begin (16، 2)؛ // هر ثانیه // به روز رسانی نمایشگر LCD // زمان چاپ در ساعت ، دقیقه ، ثانیه + AM/PM lcd.setCursor (0 ، 0) ؛ lcd.print ("زمان") ؛ if (h <10) lcd.print ("0")؛ // همیشه 2 رقم lcd.print (h) ؛ lcd.print (":")؛ if (m <10) lcd.print ("0") ؛ ال سی دی چاپ (متر) ؛ lcd.print (":")؛ if (s <10) lcd.print ("0") ؛ ال سی دی چاپ (ها) ؛

if (flag == 0) lcd.print ("AM") ؛ if (flag == 1) lcd.print ("PM") ؛ lcd.setCursor (0 ، 1) ؛ // برای خط 2 lcd.print ("ساعت دقیق") ؛

// بهبود جایگزینی تأخیر (1000) // دقت بسیار بیشتر ، بیشتر وابسته به زمان اجرای حلقه نیست

برای (int i = 0 ؛ i <5؛ i ++) // 5 بار حلقه 200ms ایجاد کنید ، برای پاسخ سریع تر دکمه {

while ((now-last_time) <200) // delay200ms {now = millis ()؛ } // حلقه داخلی 200ms last_time = now؛ // برای حلقه بعدی آماده شوید

// خواندن دکمه تنظیم دکمه ها 1 = digitalRead (hs) ؛ // دکمه های دکمه های خواندن 2 = digitalRead (ms) ؛

// زمان نور پس زمینه bl_TO--؛ if (bl_TO == 0) {analogWrite (bl، 0)؛ // نور پس زمینه خاموش bl_TO ++ ؛ } // برای فعال کردن نور پس زمینه if (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light؛ analogWrite (bl ، نور پس زمینه) ؛ // منتظر بمانید تا دکمه آزاد شود در حالی که ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs) ؛ // دکمه های دکمه خواندن2 = digitalRead (ms) ؛ }} else // پردازش دکمه 1 یا دکمه 2 هنگام ضربه زدن در حالی که نور پس زمینه روشن است {if (button1 == 0) {h = h+1؛ bl_TO = نور_زمان analogWrite (bl ، نور پس زمینه) ؛ }

if (button2 == 0) {s = 0؛ m = m+1 ؛ bl_TO = نور_زمان analogWrite (bl ، نور پس زمینه) ؛ }

/* ---- مدیریت ثانیه ، دقیقه ، ساعت صبح/بعدازظهر سرریز ----*/if (s == 60) {s = 0؛ m = m+1 ؛ } if (m == 60) {m = 0؛ h = h+1 ؛ } if (h == 13) {h = 1؛ پرچم = پرچم+1؛ if (flag == 2) flag = 0؛ }

if ((button1 == 0) | (button2 == 0)) // در صورت فشردن دکمه تنظیم زمان نمایش صفحه را به روز کنید {// Update LCD Display // Print TIME in Hour، Min، Sec + AM/PM lcd.setCursor (0 ، 0) ؛ lcd.print ("زمان") ؛ if (h <10) lcd.print ("0")؛ // همیشه 2 رقم lcd.print (h) ؛ lcd.print (":")؛ if (m <10) lcd.print ("0") ؛ ال سی دی چاپ (متر) ؛ lcd.print (":")؛ if (s <10) lcd.print ("0") ؛ ال سی دی چاپ (ها) ؛

if (flag == 0) lcd.print ("AM") ؛ if (flag == 1) lcd.print ("PM") ؛ lcd.setCursor (0 ، 1) ؛ // برای خط 2 lcd.print ("ساعت دقیق") ؛ }

} // end if else} // پایان برای

// حلقه خارجی 1000ms

s = s+1 ؛ // افزایش ثانیه شمارش // ---- مدیریت ثانیه ، دقیقه ، ساعت صبح/بعد از ظهر سرریز ---- اگر (s == 60) {s = 0؛ m = m+1 ؛ } if (m == 60) {m = 0؛ h = h+1 ؛ } if (h == 13) {h = 1؛ پرچم = پرچم+1؛ if (flag == 2) flag = 0؛ }

// حلقه پایان}

مرحله 3: شماتیک (این واقعا یک مرحله نیست)

شماتیک (این واقعا یک مرحله نیست)
شماتیک (این واقعا یک مرحله نیست)

اگر کسی که این مطلب را می خواند یک متخصص فنی است ، در اینجا نیز شماتیک است ، می توانید دیوانه وار به آن نگاه کنید.

لذت ببرید و لذت ببرید و بیشتر از همه شاداب بمانید.

توصیه شده: