สารบัญ:
วีดีโอ: นาฬิกาแม่นยำ: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เราทุกคนต้องการนาฬิกา ดังนั้นทำไมไม่สร้างนาฬิกาของคุณเองในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีการสร้างนาฬิกาที่แม่นยำเมื่อคุณตั้งค่าแล้วจะติดตามเวลาปัจจุบันในพื้นหลังของทุกสิ่งโดยอัตโนมัติ ในขณะที่ต้องการวัสดุสิ้นเปลืองเพียงเล็กน้อยและการบัดกรีเป็นศูนย์
เสบียง
ขั้นแรก คุณจะต้องมี Arduino แต่ Arduino ใดๆ ก็ใช้งานได้
ถัดไป คุณจะต้องมีสายจัมเปอร์ทั่วไปหลายประเภท
สวิตช์ปุ่มกด Sparkfun ขนาด 12 มม. 2 ชิ้น
เขียงหั่นขนมแบบดั้งเดิม
และจอแสดงผล 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);
// การตั้งค่าคอนทราสต์ LCD ดิจิตอล int cs=9; // พิน 9 สำหรับคอนทราสต์ PWM const int contrast = 100; // คอนทราสต์เริ่มต้น
// แสดงเวลาเริ่มต้นคือ 12:59:45 น. int h=12; int ม.=59; int s=45; int แฟล็ก=1; //PM
// ปุ่มตั้งเวลา int button1; ปุ่ม int2;
// คำจำกัดความของพินสำหรับปุ่มตั้งเวลา int hs=0;// พิน 0 สำหรับการตั้งค่าชั่วโมง int ms=1;// พิน 1 สำหรับการตั้งค่านาที
// แบ็คไลท์หมดเวลา const int Time_light=150; int bl_TO=Time_light;// แบ็คไลท์หมดเวลา int bl=10; // พินแบ็คไลท์ const int backlight=120; // ไม่เกิน 7mA !!!
// สำหรับการอ่านเวลาที่แม่นยำ ให้ใช้ Arduino Real Time Clock ไม่ใช่แค่การหน่วงเวลา () สแตติก uint32_t last_time ตอนนี้ = 0; // RTC
การตั้งค่าเป็นโมฆะ () { lcd.begin (16, 2); pinMode(hs, INPUT_PULLUP);// หลีกเลี่ยงตัวต้านทาน Pullup ภายนอกสำหรับปุ่ม 1 pinMode(ms, INPUT_PULLUP);// และปุ่ม 2 analogWrite (cs, คอนทราสต์);// ปรับคอนทราสต์ VO analogWrite (bl, แบ็คไลท์);// เลี้ยว บนแบ็คไลท์ตอนนี้=มิลลิวินาที(); // อ่านค่าเริ่มต้น RTC }
วงเป็นโมฆะ () { 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(":"); ถ้า(ม.<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s);
ถ้า(flag==0) lcd.print(" AM"); ถ้า(flag==1) lcd.print(" PM"); lcd.setCursor(0, 1); // สำหรับบรรทัดที่ 2 lcd.print("นาฬิกาแม่นยำ");
// ปรับปรุงการแทนที่การหน่วงเวลา (1000) // ความแม่นยำที่ดีขึ้นมาก ไม่ขึ้นอยู่กับเวลาดำเนินการวนซ้ำอีกต่อไป
สำหรับ (int i=0;i<5;i++)// สร้างลูป 200ms 5 ครั้ง เพื่อการตอบสนองของปุ่มที่เร็วขึ้น {
ในขณะที่ ((ตอนนี้-last_time)<200) //delay200ms { now=millis(); } // ภายใน 200ms วนรอบ last_time=now; //เตรียมวนรอบต่อไป
// อ่านการตั้งค่าปุ่ม button1=digitalRead(hs);// อ่านปุ่ม button2=digitalRead(ms);
//แบ็คไลท์หมดเวลา bl_TO--; ถ้า (bl_TO==0) { analogWrite (bl, 0); // ปิดแบ็คไลท์ bl_TO ++; } // กดปุ่มใดก็ได้เพื่อเปิดใช้งาน Backlight if(((button1==0)|(button2==0)) & (bl_TO==1)) { bl_TO=Time_light; analogWrite (bl, แสงไฟ); // รอจนกระทั่งปล่อยปุ่มในขณะที่ ((button1==0)|(button2==0)) { button1=digitalRead(hs);// Read Buttons button2=digitalRead(ms); } } อื่น // ประมวลผลปุ่ม 1 หรือปุ่ม 2 เมื่อกดในขณะที่เปิดแบ็คไลท์ { if(button1==0){ h=h+1; bl_TO=Time_light; analogWrite (bl, แสงไฟ); }
ถ้า(button2==0){ s=0; ม=ม+1; bl_TO=Time_light; analogWrite (bl, แสงไฟ); }
/* ---- จัดการวินาที นาที ชั่วโมง am/pm ล้น ----*/ if(s==60){ s=0; ม=ม+1; } if(m==60) { m=0; ชั่วโมง=ชั่วโมง+1; } if(h==13) { h=1; ธง=ธง+1; ถ้า(flag==2)flag=0; }
if((button1==0)|(button2==0))// Update display if time set button pressed { // 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(":"); ถ้า(ม.<10)lcd.print("0"); lcd.print(m); lcd.print(":"); if(s<10)lcd.print("0"); lcd.print(s);
if(flag==0) lcd.print(" AM"); ถ้า(flag==1) lcd.print(" PM"); lcd.setCursor(0, 1); // สำหรับบรรทัดที่ 2 lcd.print("นาฬิกาแม่นยำ"); }
} // end if else }// จบเพื่อ
// วงนอก 1000ms
s=s+1; // เพิ่มขึ้นวินาที กำลังนับ // ---- จัดการวินาที นาที ชั่วโมง am/pm ล้น ---- if(s==60){ s=0; ม=ม+1; } if(m==60) { m=0; ชั่วโมง=ชั่วโมง+1; } if(h==13) { h=1; ธง=ธง+1; ถ้า(flag==2)flag=0; }
// สิ้นสุดการวนซ้ำ }
ขั้นตอนที่ 3: แผนผัง (นี่ไม่ใช่ขั้นตอนจริงๆ)
หากใครก็ตามที่อ่านข้อความนี้เป็นคนเนิร์ดด้านเทคโนโลยี ที่นี่ยังเป็นแผนผังด้วย คุณสามารถดูว่ามันบ้าไปแล้ว
เพลิดเพลินและสนุกสนานและที่สำคัญที่สุดคือความสดใหม่
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง