กลับไปหน้ารวมไฟล์
arduino-countdown-timer-86bb3e.md

Accurate Clocks: ตัวจับเวลาถอยหลัง Arduino ขั้นพื้นฐาน

ตัวจับเวลาถอยหลังดูเหมือนจะง่ายอย่างไม่น่าเชื่อ—แค่เขียน time = time - 1; delay(1000); อย่างไรก็ตาม โค้ดนั้นมีข้อบกพร่อง Arduino ใช้เวลาไม่กี่มิลลิวินาทีในการประมวลผลทางคณิตศาสตร์และอัปเดตหน้าจอ เมื่อผ่านไป 30 นาที ความล่าช้าเล็ก ๆ เหล่านั้นจะสะสมและนาฬิกาของคุณจะผิดเพี้ยนไปโดยสิ้นเชิง! ตัวจับเวลาถอยหลัง Arduino ขั้นพื้นฐานนี้จะสอนแนวคิดสำคัญของ Non-Blocking Timers

stock_counter_lcd_setup_1772706693516.png

การใช้ millis() เพื่อความแม่นยำ

ฟังก์ชัน millis() จะบันทึกจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่บอร์ดเปิดเครื่องอย่างแม่นยำ

  1. ตัวแปร: unsigned long previousMillis = 0; และ const long interval = 1000;
  2. ลูปตรรกะ:
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
  previousMillis = currentMillis; // Reset the marker
  countdownSeconds--;             // The actual countdown
}
  1. เนื่องจากโค้ดนี้ไม่เคยหยุดโปรเซสเซอร์อย่างแท้จริง Arduino จึงมีอิสระที่จะรันโค้ดอื่น ๆ (เช่น การตรวจสอบว่าผู้ใช้กดปุ่มหรือไม่) ได้หลายล้านครั้งภายในหนึ่งวินาทีนั้นโดยไม่สูญเสียการติดตามเวลา!

การจัดรูปแบบเอาต์พุต LCD

คุณไม่ต้องการให้หน้าจอแสดง 343 seconds แต่ต้องแสดง 05:43

  • Minutes = (countdownSeconds / 60) % 60;
  • Seconds = countdownSeconds % 60; คุณจะพิมพ์สิ่งเหล่านี้ไปยัง 16x2 text LCD โดยตรวจสอบให้แน่ใจว่าได้บอกโค้ดให้พิมพ์ "0" เพิ่มเติมหากตัวเลขน้อยกว่า 10 มิฉะนั้นมันจะพิมพ์ "5:9" ที่ดูไม่สวยงามแทนที่จะเป็น "05:09"

ส่วนประกอบที่จำเป็น

  • Arduino Uno/Nano
  • 16x2 Text LCD (ควรมี I2C Backpack เพื่อการเดินสายที่ง่ายขึ้น)
  • Push Button: สำหรับ Start/Pause

ข้อมูล Frontmatter ดั้งเดิม

title: "Basic Arduino Countdown Timer"
description: "A digital hourglass! Learn to build a functional, reliable countdown timer utilizing milli-second tracking instead of blocking delays to display time on an LCD."
category: "Productivity"
difficulty: "Intermediate"