วันศุกร์ที่ 21 ธันวาคม พ.ศ. 2561

สร้างนาฬิกาดิจิตอลด้วยบอร์ด Arduino

Code
/* DigitalClockRTC1307 By IOXhop.com */

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
unsigned long previousMillis;
bool showdot = false;
String SerialGET = "";

TM1637Display display(CLK, DIO);

void setup() {
  Serial.begin(9600);
}

void loop() {
  tmElements_t tm;
  if (!RTC.read(tm)) {
    tm.Hour = 0;
    tm.Minute = 0;
    tm.Second = 0;
    RTC.write(tm);
  }

  display.write(tm.Hour/10, 0);
  display.write(tm.Hour%10, 1);
  display.write(tm.Minute/10, 2);
  display.write(tm.Minute%10, 3);

  // Dot blink
  unsigned long currentMillis = millis();
  if (currentMillis-previousMillis>500){
    previousMillis = currentMillis;
    display.dotShow(showdot=!showdot);
  }

  while (Serial.available()) {
    char c = Serial.read();
    if (c == '\n') {
      int Hour, Min, Sec;
      if(sscanf(SerialGET.c_str(), "%d:%d:%d", &Hour, &Min, &Sec){
        tm.Hour = Hour;
        tm.Minute = Min;
        tm.Second = Sec;
        RTC.write(tm);
        Serial.print("Set to ");
        Serial.print(Hour);
        Serial.print(":");
        Serial.print(Min);
        Serial.print(":");
        Serial.print(Sec);
        Serial.println();
      }else{
      Serial.println("Invalid format, Please enter Hour:Min:Sec");
      }
      SerialGET = "";
    }
    else
      SerialGET += c;
  }
}
คำอธิบาย เป็นการประยุกต์ใช้โมดูลนับเวลา RTC และโมดูล Clock Display มาใช้ร่วมกัน 
ควบคุมด้วยบอร์ด Arduino หลักการทำงานเพียงแค่ใช้บอร์ด Arduino ในการเซ็ตค่าเวลาลง
ไปในโมดูล RTC จากนั้นโมดูล RTC จะนับเวลาไปเรื่อยๆ แล้วจึงให้ Arduino ดึงค่าเวลาออก
มาจากโมดูล RTC แล้วนำไปแสดงผลที่โมดูล Clock Display
อ้างอิงจากhttps://www.ioxhop.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น