Talaan ng mga Nilalaman:

Precision Clock: 3 Hakbang
Precision Clock: 3 Hakbang

Video: Precision Clock: 3 Hakbang

Video: Precision Clock: 3 Hakbang
Video: PRACTICE READING 3-LETTER WORD / COLLECTION VOWELS / A E I O U / 2024, Nobyembre
Anonim
Precision Clock
Precision Clock

Kailangan nating lahat ng mga orasan kaya't bakit hindi gumawa ng iyong sarili sa itinuturo na ito na ipapakita ko sa iyo kung paano gumawa ng isang Precision na orasan kapag naitakda mo ay awtomatikong masusubaybayan ang kasalukuyang oras sa background ng lahat. Habang nangangailangan lamang ng napakakaunting mga supply at zero solderings.

Mga gamit

Una, kakailanganin mo ang isang Arduino ngunit ang anumang Arduino ay gagana

Susunod, kakailanganin mo ang isang assortment ng mga generic na jumper wires.

2 12mm Sparkfun Pushbutton Switch

Isang tradisyonal na Breadboard

at isang LCD 1602 16 pin display

Hakbang 1: Mga kable

Kable
Kable

Upang gumana ang orasan na ito kailangan mong i-wire ito sa isang napaka-tukoy na paraan o kung hindi makakakuha ka ng isang pangkat ng mga random na numero sa screen kaysa sa oras.

Hakbang 2: Ang Code

Dahil hindi kami gumagamit ng isang RTC kami ang code ay medyo mahaba ngunit salamat na nagawa ko ang lahat ng pagsusumikap para sa iyo at ibinigay ito rito.

Kopyahin lamang at I-paste ito sa alinman sa Arduino IDE o sa web Editor.

# isama ang "LiquidCrystal.h"

// Tinutukoy nito ang mga kable ng LCD sa 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 setting int cs = 9; // pin 9 para sa kaibahan PWM const int contrad = 100; // default na kaibahan

// paunang pagpapakita ng Oras ay 12:59:45 PM int h = 12; int m = 59; int s = 45; int flag = 1; // PM

// Time Set Buttons int button1; int button2;

// kahulugan ng Pin para sa Mga Button ng Oras ng Oras int hs = 0; // pin 0 para sa Mga Oras na Pagtatakda sa int ms = 1; // pin 1 para sa Mga Pagtatakda ng Mga Minuto

// Backlight Time Out const int Time_light = 150; int bl_TO = Time_light; // Backlight Time-Out int bl = 10; // Backlight pin const int backlight = 120; // wala nang 7mA !!!

// Para sa tumpak na pagbabasa ng Oras, gamitin ang Arduino Real Time Clock at hindi lamang antalahin () static uint32_t last_time, now = 0; // RTC

void setup () {lcd.begin (16, 2); pinMode (hs, INPUT_PULLUP); // iwasan ang panlabas na resistors ng Pullup para sa Button 1 pinMode (ms, INPUT_PULLUP); // at Button 2 analogWrite (cs, kaibahan); // Ayusin ang Contrast VO analogWrite (bl, backlight); // Turn sa Backlight ngayon = millis (); // basahin ang paunang halaga ng RTC}

void loop () {lcd.begin (16, 2); // bawat segundo // Update LCD Display // Print TIME in Hour, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Oras"); kung (h <10) lcd.print ("0"); // laging 2 digit lcd.print (h); lcd.print (":"); kung (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); kung (s <10) lcd.print ("0"); lcd.print (s);

kung (flag == 0) lcd.print ("AM"); kung (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // para sa Line 2 lcd.print ("Precision orasan");

// pinabuting kapalit ng pagkaantala (1000) // Mas mahusay na kawastuhan, hindi na umaasa sa oras ng pagpapatupad ng loop

para sa (int i = 0; i <5; i ++) // gumawa ng 5 oras 200ms loop, para sa mas mabilis na tugon ng Button {

habang ((now-last_time) <200) // delay200ms {now = millis (); } // inner 200ms loop last_time = now; // maghanda para sa susunod na loop

// read Setting Buttons button1 = digitalRead (hs); // Read Buttons button2 = digitalRead (ms);

// Backlight time out bl_TO--; kung (bl_TO == 0) {analogWrite (bl, 0); // Backlight OFF bl_TO ++; } // Pindutin ang anuman upang buhayin ang Backlight kung (((button1 == 0) | (button2 == 0)) & (bl_TO == 1)) {bl_TO = Time_light; analogWrite (bl, backlight); // maghintay hanggang mailabas ang Button habang ((button1 == 0) | (button2 == 0)) {button1 = digitalRead (hs); // Basahin ang Butones Button = digitalRead (ms); }} pa // Pag-proseso ng Button 1 o Button 2 kapag na-hit habang Backlight sa {kung (button1 == 0) {h = h + 1; bl_TO = Oras_light; analogWrite (bl, backlight); }

kung (button2 == 0) {s = 0; m = m + 1; bl_TO = Oras_light; analogWrite (bl, backlight); }

/ * ---- pamahalaan ang segundo, minuto, oras ng umaga / overflow ng ---- * / kung (s == 60) {s = 0; m = m + 1; } kung (m == 60) {m = 0; h = h + 1; } kung (h == 13) {h = 1; flag = flag + 1; kung (flag == 2) flag = 0; }

kung ((button1 == 0) | (button2 == 0)) // I-update ang display kung ang pindutan ng set ng oras ay pinindot {// Update LCD Display // Print TIME in Hour, Min, Sec + AM / PM lcd.setCursor (0, 0); lcd.print ("Oras"); kung (h <10) lcd.print ("0"); // laging 2 digit lcd.print (h); lcd.print (":"); kung (m <10) lcd.print ("0"); lcd.print (m); lcd.print (":"); kung (s <10) lcd.print ("0"); lcd.print (s);

kung (flag == 0) lcd.print ("AM"); kung (flag == 1) lcd.print ("PM"); lcd.setCursor (0, 1); // para sa Line 2 lcd.print ("Precision orasan"); }

} // pagtatapos kung iba pa} // pagtatapos para sa

// panlabas na 1000ms loop

s = s + 1; // increment sec. pagbibilang // ---- pamahalaan ang mga segundo, minuto, oras ng umaga / pm overflow ---- kung (s == 60) {s = 0; m = m + 1; } kung (m == 60) {m = 0; h = h + 1; } kung (h == 13) {h = 1; flag = flag + 1; kung (flag == 2) flag = 0; }

// Loop end}

Hakbang 3: Schematic (Hindi Ito Talagang Isang Hakbang)

Schematic (Hindi Ito Talagang Isang Hakbang)
Schematic (Hindi Ito Talagang Isang Hakbang)

Kung ang sinumang nagbabasa nito ay isang tech nerd dito ay isang eskematiko rin na maaari mong tingnan itong mabaliw.

Masiyahan at magsaya at higit sa lahat manatiling sariwa.

Inirerekumendang: