สารบัญ:

นาฬิกาจับเวลา Arduino ที่ใช้งานง่าย: 4 ขั้นตอน
นาฬิกาจับเวลา Arduino ที่ใช้งานง่าย: 4 ขั้นตอน

วีดีโอ: นาฬิกาจับเวลา Arduino ที่ใช้งานง่าย: 4 ขั้นตอน

วีดีโอ: นาฬิกาจับเวลา Arduino ที่ใช้งานง่าย: 4 ขั้นตอน
วีดีโอ: ARDUINO 15 TIMER จับเวลา หน่วงเวลา คืออะไร ใช้งานอย่างไร milis micros delay delayMicrosecounds 2024, พฤศจิกายน
Anonim
นาฬิกาจับเวลา Arduino ที่เรียบง่ายและใช้งานได้จริง
นาฬิกาจับเวลา Arduino ที่เรียบง่ายและใช้งานได้จริง

ค้นหาเว็บสำหรับนาฬิกาจับเวลา Arduino คุณอาจจะเพิ่งทำถ้าคุณอยู่ที่นี่ จากประสบการณ์ส่วนตัว ฉันสามารถบอกคุณได้ว่านาฬิกาจับเวลาบนอินเทอร์เน็ตอาจซับซ้อนเกินไป (ในโค้ด สำหรับผู้เริ่มต้น) หรือง่ายเกินไป และไม่สามารถใช้งานได้จริง เช่นเดียวกับนาฬิกาที่นับวินาทีโดยไม่ต้องรีเซ็ต

คุณก็คิดเช่นกันใช่มั้ย เดาสิว่า. ฉันทำได้แล้ว และยิ่งไปกว่านั้น ฉันรับข้อมูลจากฟังก์ชัน millis() โดยตรง ซึ่งเป็นตัวเลขที่ไม่มีที่สิ้นสุด (จนถึง 49 วันหรืออะไรก็ตาม) ส่วนที่ดีที่สุด? เป็นแค่บรรทัดเดียว

การรีเซ็ตเป็นส่วนที่ยากของนาฬิกาจับเวลา สำหรับโปรแกรมเมอร์ระดับกลาง หากคุณยังไม่ได้ทำ ให้ลองทำด้วยตัวเองโดยใช้วินาที นาที และชั่วโมงร่วมกัน คุณจะได้สิ่งที่ฉันพูดถึง

สำหรับผู้เริ่มต้น อ่านต่อไปและเพลิดเพลินไปกับความอัจฉริยะในจิตใจของฉัน

แค่ล้อเล่น แต่วิธีแก้ปัญหาที่ฉันคิดค่อนข้างเรียบร้อย นี่คือสิ่งที่:

ขั้นตอนที่ 1: การแก้ปัญหา

การแก้ไขปัญหา
การแก้ไขปัญหา

ดังนั้นปัญหากำลังรีเซ็ต สิ่งที่เราต้องการคือรอบของตัวเลขที่ต่อเนื่องและซ้ำซาก จากผลลัพธ์ที่ไม่รู้จบของตัวเลขต่อเนื่อง (มิลลิวินาที) - โดยทั่วไปแล้วจะนับมิลลิวินาที หรือที่จริงแล้วคือ 1.024 มิลลิวินาที แต่อะไรก็ตาม)

สิ่งแรกที่นึกถึงคือการใช้ความแตกต่าง เช่น time1 -time2 และ delay ลืมมันซะ. ต้องใช้โค้ดอย่างน้อย 6 บรรทัด และคำสั่ง if เพื่อบูต

นี่คือวิธีการทำ เรามีขีดจำกัด (59) เราต้องการให้ทุกอย่างตั้งแต่ 0 ถึง 59 ซ้ำแล้วซ้ำอีก ยังไง?

จะเกิดอะไรขึ้นถ้า… เราเอาเศษที่เหลือ… ของฟังก์ชันมิลลิวินาทีหารด้วย 59…. บิงโก!

ดังนั้นควรเป็นดังนี้:

(60 [เป็นค่าเริ่มต้นเพราะขีดจำกัดคือ 59] + millis() / 1000 [1,000 มิลลิวินาทีเป็นวินาที]) % 60

ตกลง เล็มมาอธิบาย (%) หรือโมดูลัส ก็คือตัวดำเนินการอย่าง (+) ที่หาเศษเหลือ ชอบ 9 % 2 = 1

ดังนั้น:

  • ส่วนที่เหลือของ (60 + 0) % 60 = 0
  • ส่วนที่เหลือของ (60 + 1) % 60 =1
  • ส่วนที่เหลือ (60 + 58) % 60 = 58
  • ส่วนที่เหลือ (60 + 59) % 60 = 59
  • ส่วนที่เหลือ (60 + 60) % 60 = 60
  • ส่วนที่เหลือ (60 + 61) % 60 = 1

ดู!

ตอนนี้สำหรับชิ้นส่วน

ขั้นตอนที่ 2: ชิ้นส่วน

ชิ้นส่วน
ชิ้นส่วน

ไม่มากเลย

  1. Arduino ใด ๆ
  2. จอแสดงผลใดๆ (ฉันใช้ OLED 0.96 แต่คุณสามารถใช้สิ่งที่คุณมีได้ เพียงตรวจสอบให้แน่ใจว่าได้ใส่ตัวแปรที่เหมาะสมลงในฟังก์ชันการแสดงผลของจอแสดงผลของคุณ)

แค่นั้นแหละ.

ขั้นตอนที่ 3: รหัส

เอาล่ะ มีความคิดเห็นค่อนข้างชัดเจน ดังนั้นจึงไม่น่าจะมีปัญหาอะไร ไลบรารีและการเริ่มต้นสำหรับ OLED 0.96 อยู่ในรหัส แทนที่ด้วยจอแสดงผลของคุณเองถ้ามันแตกต่างกัน

// 0.96 ไลบรารี OLED

#รวม

#รวม

#รวม

#รวม

// 0.96 OLED Init

#define OLED_RESET 4

Adafruit_SSD1306 จอแสดงผล (OLED_RESET);

int วินาที;

int นาที;

ชั่วโมง int;

การตั้งค่าเป็นโมฆะ () {

// OLED Init. ขนาด 0.96 เพิ่มเติม

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay(); display.setTextSize(2); display.setTextColor(สีขาว); }

วงเป็นโมฆะ () {

วินาที = (60 + มิลลิวินาที () / 1,000) % 60;

นาที = (60 + มิลลิวินาที () / 60000) % 60; ชั่วโมง = (25 + มิลลิวินาที () / 36000000) % 25;

display.clearDisplay();

display.setCursor(0, 22); // พิมพ์จำนวนชั่วโมงตั้งแต่รีเซ็ต display.print(hours); display.print("h:");

// พิมพ์จำนวน miutes ตั้งแต่รีเซ็ต

display.print(นาที);

display.print("ม:");

// พิมพ์จำนวนวินาทีตั้งแต่รีเซ็ต display.print(วินาที); display.print("s");

display.setCursor(0, 0);

display.print("นาฬิกาจับเวลา"); display.drawLine(0, 18, 128, 18, สีขาว); display.display();

}

ขั้นตอนที่ 4: ในขั้นตอนสุดท้าย…

รอบชิงชนะเลิศ…
รอบชิงชนะเลิศ…

แค่นั้นแหละ! ตอนนี้ไปทำสิ่งที่คุณต้องการกับมัน หมดเวลาไข่หรือครอบครองพื้นที่ใกล้เคียงของคุณ

ไชโย อรชุน

แนะนำ: