ผมต้องการกดปุ่ม แล้วให้นับเวลาไปเรื่อยๆ

เช่น กดปุ่ม Start แล้วให้นับ เวลาไปเรื่อย ครบ 24 ชม เป็น 1 วัน ครบ 48 ชม เป็น 2 วัน

ลองศึกษา กระทู้นี้ครับ

if (sec_work == 60)
    {
      min_work = min_work + 1;
      sec_work = 0;
    }
    if (min_work == 60)
    {
      hour_work = hour_work + 1;
      min_work = 0;
    }
    if (hour_work == 24)
    {
      day_work = day_work + 1;
      hour_work = 0;
    }
1 Like

ทำประมาณนี้มันจะตรงปะครับ

1 Like

ดูคล่าวๆ น่าจะตรงนะครับ ลองเอาไปรันแล้ว ขอผลลัพทธ์มาอัพเดทหน่อยว่า ตรงไหม

ตอนนี้ผมคิดครับ คือตอนนี้ผมกำลังวิธีเอาเวลา RTC มาเปรียบเทียบมาเป้นวันตอนกดปุ่มอะครับ
เช่น การคำนวณอายุ ว่าเราอยู่มากี่เดือนแล้ว พอจะรู่วิธีคิดปะครับ

ผมยังไม่ค่อยเข้าใจว่าจะทำอะไร ง่ะครับ ขอคำอธิบายเพิ่มเติมหน่อย

สมมุติ ผมต้องการ ว่า ฟาร์มผมทำงานไปแล้วกี่วัน เอาเวลาที่จะคำนวณมาจาก rtc มันจะคล้ายๆ คำนวณอายุว่าเราเกิดมาแล้วกี่วันอะครับ

ก็เก็บค่าทุกอย่างเข้าไปไว้ในตัวแปล แล้วก็บวกไปเรื่อยๆ พอจะเช็คว่าตอนนี้ เท่าไหร่ ก็ไปดึงค่าปัจจุบันมา แต่ผมไม่แน่ใจว่า rtc มันไม่มีวันนี้บอกใช่ไหมนะ

RTC มีวันบอกครับ แต่มัน ตันแค่ 31 วัน ผมต้องการมากกว่านั้น

แล้วสมมุติ เครื่องเราทำงาน ตอนเที่ยง เท่ากับวันที่ 1 วันถัดไปตอนเที่ยงถึงจะเป็นวันที่ 2

เอานี้เราไม่สนใจใช่ไหมว่า มันเริ่มวันไหน วันที่เท่าไหร่ สนแค่ว่ากี่วันแล้ว

ใช้แล้วครับผม ทำงานมาแล้วกี่วัน

ถ้าเป็นอย่างนั้นก็แปลง 1 วันเป็น 24 ชม แล้วครั้งแรกที่เริ่มก็เก็บไว้ในตัวแปร int พอรันเราก็เก็บเวลาไปเรื่อยๆ เมื่อครบ ชม ก็บวก เข้าไปในตัวแปรแกรเริ่ม สมมติรันต่อเนื่องไป 10 วัน เราจะมีตัวแปร ที่เป็น ชม เก็บได้ 240 ชม นำไปหาร 24 เราก็จะทราบว่า เรารันมาแล้ว \frac {240} {24} = 10 วัน ครับ

อ่อออ เดียวผมจะเอาไปลองใช้ดูก่อนนะครับ แล้วถ้า เครื่องเริ่มทำงานตอนเที่ยง ต้องทำยังไงหรอครับ ต้องเอา พวก นาที มาเกี่ยวด้วยปะครับ

พอเครื่องเริ่มทำงานก็ให้เก็บค่า int 0 ไว้ก่อนเลยครับเช่น int Start_Count = 0; จากตรงนี้มันไปได้ 2 แนวทาง

แนวทางที่ 1 คือ ใช้ Timer.run เพื่อตั้งฟังก์ชัน นับเวลา ทุกๆ 60 วินาที ให้มันทำการ บวกค่าเข้าไปในตัวแปร
Start_Count = Start_Count + 1; ของเรา ตรงนี้แนะนำว่าให้หน่วยเป็น นาที ก็ได้ ให้มันบวกอย่างงี้ไปเรื่อยๆ

แนวทางที่ 2 คือ อ้างอิงจากโมดูลนาฬิกาของเราก็ได้ อาจจะกำหนดให้ ผ่านไป 1 นาที ก็ให้โปรแกรมบวกค่า 1 เข้าไปใน Start_Count ของเราเช่นกัน

หลังจากนั้น สมมติว่าผ่านไป 2 วัน นับจาก เที่ยงวัน ชน เที่ยงวัน เราจะมีค่าใน Start_Count = 2880 เราก็เอาค่านาที ทั้งหมดที่เราเก็บได้มา หารเป็น ชั่วโมง และนำชั่วโมงมาหารเป็น วัน

แค่นี้ก็ได้อายุของ ฮาร์ดแวร์ที่เราต้องการแล้วครับ