Мазмуну:

Так саат: 3 кадам
Так саат: 3 кадам

Video: Так саат: 3 кадам

Video: Так саат: 3 кадам
Video: Ашык болдум 14 15 жашымда 2024, Июль
Anonim
Precision Clock
Precision Clock

Баарыбызга сааттар керек, андыктан эмне үчүн бул инструкцияда өзүңүздүкүн жасабаңыз, мен сизге тактык саатын кантип жасоону көрсөтөм, сиз орноткондон кийин, баардык нерсенин фонундагы учурдагы убакытты автоматтык түрдө көзөмөлдөп турат. Ошондой эле өтө аз камсыздоолорго жана нөлдүк ширетүүлөргө муктаж.

Жабдуулар

Биринчиден, сизге 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);

// Санариптик ЖК Констрастын орнотуусу int cs = 9; // контраст үчүн PWM const int kontrast = 100 pin; // демейки контраст

// алгачкы Убакыт дисплейи 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; // PM

// Убакытты коюу баскычтары int button1; int button2;

// Убакыт коюу баскычтары үчүн Pins аныктамасы int hs = 0; // Pin 0 үчүн Setting int ms = 1; // pin 1 for Minutes Setting

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Backlight таймы int bl = 10; // Backlight pin const int backlight = 120; // 7мАдан ашпайт !!!

// Убакытты так окуу үчүн, 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 үчүн тышкы Pullup каршылыгынан качыңыз (ms, INPUT_PULLUP); // жана Button 2 analogWrite (cs, Contrast); // Contrast VO analogWrite (bl, backlight); азыр Жарыкта = миллис (); // RTC баштапкы маанисин окуу}

void loop () {lcd.begin (16, 2); // ар бир секунд // ЖК дисплейди жаңыртуу // Саатты, Мин, сек + 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 (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);

if (байрак == 0) lcd.print ("AM"); if (байрак == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -сап үчүн lcd.print ("Так саат");

// жакшыртылган кечигүүнү алмаштыруу (1000) // Бир топ жакшыраак тактык, мындан ары циклдин аткаруу убактысына көз каранды

for (int i = 0; i <5; i ++) // 5 жолу 200ms цикл жасаңыз, тезирээк Button жооп үчүн {

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); // Backlight OFF bl_TO ++; } // Арткы жарыкты иштетүү үчүн каалаганын басыңыз, эгерде ((((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, арткы жарык); // ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Buttons button2 = digitalRead (ms); }} else // Process Button 1 же Button 2 backlight күйүп турганда {if (button1 == 0) {h = h+1; bl_TO = Time_light; analogWrite (bl, арткы жарык); }

if (button2 == 0) {s = 0; m = m+1; bl_TO = Time_light; 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 (байрак == 2) желек = 0; }

if ((button1 == 0) | (button2 == 0)) // Убакытты жөндөө баскычы басылса, дисплейди жаңыртуу {// LCD дисплейди жаңыртуу // Саатты, Мин, Сек + AM/PM менен TIME басып чыгаруу 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 (m); lcd.print (":"); if (s <10) lcd.print ("0"); lcd.print (s);

if (байрак == 0) lcd.print ("AM"); if (байрак == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // 2 -сап үчүн lcd.print ("Так саат"); }

} // end if if} // end for

// тышкы 1000 мс цикл

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

// Loop end}

3 -кадам: Схемалык (Бул чындап эле кадам эмес)

Схема (Бул чындыгында кадам эмес)
Схема (Бул чындыгында кадам эмес)

Эгерде муну окуган кимдир бирөө бул жерде технологиялык адис болсо, анда ал схемага караса болот.

Ырахат алыңыз жана көңүл ачыңыз жана баарынан мурда жаңы бойдон калыңыз.

Сунушталууда: