Агуулгын хүснэгт:

Нарийвчлалтай цаг: 3 алхам
Нарийвчлалтай цаг: 3 алхам

Видео: Нарийвчлалтай цаг: 3 алхам

Видео: Нарийвчлалтай цаг: 3 алхам
Видео: Bi hen be? (Jackie Chan) Mongol heleer 2024, Арваннэгдүгээр
Anonim
Нарийвчлалтай цаг
Нарийвчлалтай цаг

Бидэнд бүгдэд нь цаг хэрэгтэй байдаг тул энэхүү зааварчилгаанд өөрийн цагийг бүү хий, яагаад нарийвчлалтай цаг хийхийг бүх зүйлд цаана нь автоматаар хянаж байх болно. Зөвхөн маш бага хангамж, тэг гагнуур шаардагдана.

Хангамж

Нэгдүгээрт, танд Arduino хэрэгтэй болно, гэхдээ ямар ч Arduino ажиллах болно

Дараа нь танд ерөнхий холбогч утаснуудын төрөл хэрэгтэй болно.

2 12 мм хэмжээтэй Sparkfun товчлуурын унтраалга

Уламжлалт талхны самбар

мөн LCD 1602 16 зүү дэлгэцтэй

Алхам 1: Цахилгааны утас

Цахилгаан утас
Цахилгаан утас

Энэ цагийг ажиллуулахын тулд та үүнийг маш тодорхой утсаар холбох хэрэгтэй, эс тэгвээс цаг биш харин дэлгэцэн дээр олон тооны санамсаргүй тоонууд гарч ирэх болно.

Алхам 2: Код

Бид RTC ашигладаггүй тул код нь жаахан урт байх болно, гэхдээ талархаж хэлэхэд би танд зориулж бүх шаргуу хөдөлмөрөө хийж, энд өгсөн болно.

Үүнийг Arduino IDE эсвэл вэб засварлагч руу хуулж, буулгана уу.

#"LiquidCrystal.h" -ийг оруулна уу

// Энэ нь LCD утсыг DIGITALpins const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);

// Digital LCD Constrast тохиргоо int cs = 9; // тодосгогч 9 -р зүү PWM const int тодосголт = 100; // анхдагч тодосгогч

// Цагийн анхны дэлгэц нь 12:59:45 PM int h = 12; int m = 59; int s = 45; int туг = 1; // PM

// Time Set Buttons int button1; int товчлуур2;

// Цаг тогтоох товчлууруудын зүү тодорхойлох int hs = 0; // цагийн тохиргооны 0 зүү int ms = 1;

// Арын гэрэлтүүлэг Time Out const int Time_light = 150; int bl_TO = Цагийн гэрэл; // Арын гэрэлтүүлэг дууссан int bl = 10; // Арын гэрэлтүүлэг pin const int гэрэлтүүлэг = 120; // 7mA -аас хэтрэхгүй !!!

// Цагийг үнэн зөв уншихын тулд Arduino Real Time Clock -ийг ашиглаарай, зүгээр л () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // Button 1 pinMode (ms, INPUT_PULLUP); // ба Button 2 analogWrite (cs, kontrast); // Contrast VO analogWrite (bl, backlight) -ийг тохируулах гадаад татах эсэргүүцэлээс зайлсхий Арын гэрэлтүүлэг дээр одоо = 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 (":"); хэрэв (m <10) lcd.print ("0"); lcd хэвлэх (м); lcd.print (":"); хэрэв (s <10) lcd.print ("0"); lcd.хэв (ууд);

хэрэв (туг == 0) lcd.print ("AM"); хэрэв (туг == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -р мөрийн хувьд lcd.print ("Нарийн цаг");

// хоцролтыг орлуулах сайжруулалт (1000) // Илүү нарийвчлалтай, давталтын гүйцэтгэх хугацаанаас хамааралгүй болно

for (int i = 0; i <5; i ++) // 5 цаг 200ms давталт хийх, Товчлуурын хариултыг хурдан болгохын тулд {

while ((now-last_time) <200) // delay200ms {now = millis (); } // дотоод 200ms давталт last_time = одоо; // дараагийн давталтад бэлдэх

// унших Setting Buttons button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Арын гэрлийн хугацаа дууссан bl_TO--; if (bl_TO == 0) {analogWrite (bl, 0); // Арын гэрэлтүүлэг OFF bl_TO ++; } // Хэрэв (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, арын гэрэл); // ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Buttons товчлуурыг унших2 = digitalRead (ms); }} өөр // Процессийн товчлуур 1 эсвэл 2 -р товчлуурыг арын гэрэлтүүлэг асахад {if (button1 == 0) {h = h+1; bl_TO = Цагийн гэрэл; analogWrite (bl, арын гэрэл); }

хэрэв (button2 == 0) {s = 0; m = m+1; bl_TO = Цагийн гэрэл; analogWrite (bl, арын гэрэл); }

/* ---- секунд, минут, цагийг өглөөний/оройн халиаг удирдах ----*/if (s == 60) {s = 0; m = m+1; } хэрэв (m == 60) {m = 0; h = h+1; } бол (h == 13) {h = 1; туг = туг+1; if (туг == 2) туг = 0; }

if ((button1 == 0) | (button2 == 0)) // Цаг тохируулах товчлуур дарагдсан бол дэлгэцийг шинэчлэх {// LCD дэлгэцийг шинэчлэх // Цагийг хэвлэх, мин, сек + AM/PM lcd.setCursor (0, 0); lcd.print ("Цаг"); if (h <10) lcd.print ("0"); // үргэлж 2 оронтой lcd.print (h); lcd.print (":"); хэрэв (m <10) lcd.print ("0"); lcd хэвлэх (м); lcd.print (":"); хэрэв (s <10) lcd.print ("0"); lcd.хэв (ууд);

хэрэв (туг == 0) lcd.print ("AM"); хэрэв (туг == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -р мөрийн хувьд lcd.print ("Нарийн цаг"); }

} // төгсгөл бол өөр} // төгсгөл

// гаднах 1000 мс гогцоо

s = s+1; // өсөлт сек. тоолох // ---- секунд, минут, цагийг өглөөний/үерийн хэтрэлтийг удирдах ---- if (s == 60) {s = 0; m = m+1; } хэрэв (m == 60) {m = 0; h = h+1; } бол (h == 13) {h = 1; туг = туг+1; if (туг == 2) туг = 0; }

// Давталтын төгсгөл}

Алхам 3: Схем (энэ нь үнэхээр алхам биш юм)

Схем (энэ бол үнэхээр алхам биш)
Схем (энэ бол үнэхээр алхам биш)

Хэрэв үүнийг уншиж байгаа хүн бол технологийн мэргэжилтэн юм бол энд байгаа схемийг та харж болно.

Хөгжилтэй, хөгжилтэй байж, хамгийн гол нь шинэлэг байгаарай.

Зөвлөмж болгож буй: