Page 6

#include <LiquidCrystal.h>  // LCD library ကို include ပြုလုပ်ခြင်း

// LCD ကို Arduino board နှင့် ချိတ်ဆက်ခြင်း (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

unsigned long previousMillis = 0; // မီလီစက္ကန့် (milliseconds) ကို သိမ်းဆည်းမည့် variable
const long interval = 1000; // တစ်စက္ကန့် (1 second) ပြည့်သွားတဲ့အခါ time update လုပ်မည်

// အစပိုင်းမှာ မိနစ်နှင့် နာရီကို သတ်မှတ်ခြင်း
int seconds = 0;
int minutes = 23;
int hours = 4;

void setup() {
  lcd.begin(16, 2);  // 16 columns, 2 rows ရှိတဲ့ LCD ကို initialize ပြုလုပ်ခြင်း
  displayTime();      // LCD ပေါ်မှာ စတင်သောအချိန်ကို ပြသမည်
}

void loop() {
  unsigned long currentMillis = millis(); // millis() function သည် Arduino run တဲ့အချိန်မှစ၍ မီလီစက္ကန့်ရေတွက်ပေးမည်

  // 1 စက္ကန့် interval ပြည့်လျှင် အလုပ်လုပ်မည်
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis; // မည်သည့်အချိန်က update လုပ်ခဲ့သလဲ သိမ်းထားမည်
    seconds++; // စက္ကန့် တစ်ခု တိုးမည်

    // **Time Overflow ကို Handle ပြုလုပ်ခြင်း**
    if (seconds >= 60) { // 60 seconds ပြည့်လျှင်
      seconds = 0;  // 0 သို့ reset
      minutes++;    // မိနစ် တစ်ခုတိုးမည်
    }
    if (minutes >= 60) { // 60 minutes ပြည့်လျှင်
      minutes = 0; // 0 သို့ reset
      hours++;     // နာရီ တစ်ခုတိုးမည်
    }
    if (hours >= 12) { // 12 hours ပြည့်လျှင်
      hours = 0; // နာရီကို reset ပြုလုပ်မည် (12-hour format)
    }

    displayTime(); // LCD ပေါ်တွင် အချိန်ကို ပြန်လည်ပြသမည်
  }
}

// **LCD Screen မှာ အချိန်ပြမည့် Function**
void displayTime() {
  lcd.setCursor(0, 0);  
  lcd.print("Time:      "); // ပြီးခဲ့တဲ့ value တွေ မကျန်အောင် space ဖြည့်ထည့်ခြင်း
  
  lcd.setCursor(0, 1);  // ဒုတိယ row (line 1) မှာ အချိန်ကို ပြသမည်
  
  // **နာရီ ပြခြင်း (Leading Zero ထည့်ခြင်း)**
  if (hours < 10) lcd.print('0'); 
  lcd.print(hours);
  lcd.print(':');

  // **မိနစ် ပြခြင်း (Leading Zero ထည့်ခြင်း)**
  if (minutes < 10) lcd.print('0');
  lcd.print(minutes);
  lcd.print(':');

  // **စက္ကန့် ပြခြင်း (Leading Zero ထည့်ခြင်း)**
  if (seconds < 10) lcd.print('0');
  lcd.print(seconds);
}

Last updated