ตัวจับเวลาเป็นนาฬิกาประเภทหนึ่งที่ใช้สำหรับการวัดช่วงเวลา มีสองประเภทของการจับเวลาหนึ่งซึ่งนับขึ้นมาจากศูนย์สำหรับการวัดเวลาที่ผ่านไปที่เรียกว่าตามที่มีนาฬิกาจับเวลาและวินาทีที่สองจะนับถอยหลังจากระยะเวลาที่กำหนดโดยผู้ใช้โดยทั่วไปเรียกว่าตัวจับเวลาถอยหลัง
ที่นี่ในการกวดวิชานี้เราจะแสดงวิธีการที่จะทำให้การจับเวลาโดยใช้ Arduino ที่นี่เราไม่ได้ใช้โมดูลนาฬิกาแบบเรียลไทม์ (RTC) เพื่อรับเวลา ระยะเวลาที่กำหนดโดยผู้ใช้ด้วยความช่วยเหลือของปุ่มกดและ 16x2 LCD และเมื่อตัวจับเวลาถึงศูนย์เสียงเตือนจะดังขึ้นด้วยความช่วยเหลือของ Buzzer
วัสดุที่จำเป็น
- Arduino UNO
- LCD 16 * 2
- ปุ่มกดเมทริกซ์ 4 * 4
- Buzzer
- ปุ่มกด
- โพเทนชิออมิเตอร์ (10k)
- ตัวต้านทาน (10k, 100 โอห์ม)
- การเชื่อมต่อสายไฟ
แผนภาพวงจรจับเวลาถอยหลัง Arduino
Arduino Uno ใช้ที่นี่เป็นตัวควบคุมหลัก ปุ่มกดใช้สำหรับป้อนช่วงเวลาและจอ LCD 16 * 2 ใช้เพื่อแสดงการนับถอยหลัง ปุ่มกดใช้เพื่อเริ่มเวลา ตรวจสอบวิธีการเชื่อมต่อ 4x4 Keypad กับ Arduino และ 16x2 LCD กับ Arduino
Arduino Countdown Timer Code และคำอธิบาย
รหัส Arduino Timer ที่สมบูรณ์จะได้รับในตอนท้ายของโครงการนี้
ในโค้ดด้านล่างนี้เรากำลังเริ่มต้นไลบรารีสำหรับปุ่มกดและ LCDและตัวแปรที่ใช้ในโค้ด
# รวม
ตอนนี้ในโค้ดด้านล่างเรากำลังเริ่มต้นหมายเลข ของแถวและคอลัมน์สำหรับกำหนดเมทริกซ์สำหรับปุ่มกด
const byte ROWS = 4; // สี่แถว const byte COLS = 4; // สามคอลัมน์ถ่านคีย์ = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}};
สำหรับการเชื่อมต่อแป้นพิมพ์เมทริกซ์ 4 * 4 กับ Arduino เราต้องกำหนดพินสำหรับแถวและคอลัมน์ ดังนั้นในด้านล่างรหัสที่เราได้กำหนดไว้สำหรับปุ่มกดหมุดเช่นเดียวกับ 16x2 จอแอลซีดี
ไบต์ rowPins = {6, 7, 8, 9}; // เชื่อมต่อแป้นพิมพ์ ROW0, ROW1, ROW2 และ ROW3 กับหมุด Arduino เหล่านี้ byte colPins = {10, 11, 12, 13}; // เชื่อมต่อปุ่มกด COL0, COL1 และ COL2 ถึง t LiquidCrystal lcd (A0, A1, 5, 4, 3, 2); // สร้างวัตถุ LC พารามิเตอร์: (rs, enable, d4, d5, d6, d7)
รหัสด้านล่างนี้ใช้สำหรับสร้างปุ่มกด
ปุ่มกด kpd = ปุ่มกด (makeKeymap (คีย์), rowPins, colPins, ROWS, COLS);
ใน โค้ดฟังก์ชัน setFeedingTime () ที่เป็นโมฆะ หลังจากกดปุ่มเราจะสามารถป้อนเวลาสำหรับตัวจับเวลาได้จากนั้นหลังจากเข้าสู่ช่วงเวลาของตัวจับเวลาเราต้องกด D เพื่อเริ่มการนับถอยหลัง
เป็นโมฆะ setFeedingTime () {feed = true; int ผม = 0; lcd.clear (); lcd.setCursor (0,0); lcd.print ("ตั้งเวลาให้อาหาร"); lcd.clear (); lcd.print ("HH: MM: SS"); lcd.setCursor (0,1); ในขณะที่ (1) {key = kpd.getKey (); ถ่าน j; ถ้า (คีย์! = NO_KEY) {lcd.setCursor (j, 1); lcd.print (คีย์); r = คีย์ -48; ผม ++; j ++; ถ้า (j == 2 - j == 5) {lcd.print (":"); j ++; } ล่าช้า (500); } ถ้า (คีย์ == 'D') {คีย์ = 0; หยุดพัก; }} lcd.clear (); }
ใน ฟังก์ชัน void setup () เราได้เตรียมใช้งาน LCD และการสื่อสารแบบอนุกรมและกำหนดพินเป็น INPUT และ OUTPUT ในโค้ดด้านล่าง
การตั้งค่าเป็นโมฆะ () {lcd.begin (16,2); Serial.begin (9600); pinMode (A0, เอาท์พุท); PinMode (A1, เอาท์พุท); pinMode (A3, อินพุต); PinMode (A4, เอาท์พุท); }
การทำงานของ Arduino Countdown Timerนี้ทำได้ง่าย แต่รหัสซับซ้อนเล็กน้อย รหัสอธิบายโดยความคิดเห็นในรหัส
ในขั้นต้นเครื่องจะพิมพ์“ Arduino Timer” บนจอ LCD จนกว่าคุณจะกดปุ่ม ทันทีที่คุณกดปุ่มจะขอให้ป้อนระยะเวลานับถอยหลังโดยเรียกใช้ฟังก์ชัน“ setFeedingTime ” จากนั้นคุณสามารถป้อนระยะเวลาด้วยความช่วยเหลือของปุ่มกด จากนั้นคุณต้องกด 'D' เพื่อบันทึกเวลาและเริ่มจับเวลาถอยหลัง ที่นี่ในฟังก์ชัน void loop () เราได้ทำการคำนวณบางอย่างเพื่อลดเวลาลงทีละวินาทีและเพื่อแสดงค่าที่เหมาะสมของชั่วโมงนาทีและวินาที (HH: MM: SS) ตามเวลาที่เหลือ รหัสทั้งหมดอธิบายได้ดีจากความคิดเห็น คุณสามารถตรวจสอบโค้ดทั้งหมดและวิดีโอสาธิตด้านล่าง
เมื่อเวลาถึงศูนย์เสียงกริ่งจะเริ่มส่งเสียงบี๊บและส่งเสียงบี๊บ 100 ครั้งเท่านั้น (ตามรหัส) ในการหยุดเสียงกริ่งให้กดปุ่มกดค้างไว้ คุณสามารถใช้ปุ่มกดได้ตลอดเวลาเพื่อหยุดตัวจับเวลาระหว่างการนับ