ในวันนี้เราจะมาเรียนรู้การเขียนคำสั่งอ่านค่าเวลาจาก Real Time Clock DS1307 module (RTC)
ตัวอย่างการประยุกต์ใช้งาน
อุปกรณ์ที่ใช้
เริ่มจากเชื่อมต่ออุปกรณ์ดังนี้ ใช้เพียง 4 Pins
สร้าง project ชื่อว่า NetduinoRealTimeClockDS1307 เรียนรู้การสร้าง project ใหม่ได้จาก http://codesanook.com/getting-started-with-iot-netudio-3-ethernet-a-compatibility-arduino-board แล้วเพิ่ม class library ต่างๆ มีไว้ให้ที่ Github ตาม Link นี้แล้วครับ source code
NetMf.CommonExtensions Toolbox.NETMF.Core Toolbox.NETMF.Hardware.Core Toolbox.NETMF.Hardware.DS1307
หน้าตาโครงสร้าง Project ใหม่ของเรา
เขียนคำสั่งต่อไปในนี้ลงใน Program.cs
using Microsoft.SPOT;
using NetMf.CommonExtensions;
using System.Threading;
using Toolbox.NETMF.Hardware;
namespace NetduinoRealTimeClockDS1307
{
public class Program
{
public static void Main()
{
var ds1307 = new DS1307();
//Comment the following line to not set the time to DS1307 board again
ds1307.SetTime(
Year: 2018,
Month: 01,
Day: 23,
Hour: 16,
Minute: 59,
Second: 0
);
while (true)
{
var time = ds1307.GetTime();
var formattedDate = StringUtility.Format(
"Netduino Time in UTC: {0}",
time.ToString("yyyy-MM-ddTHH:mm:ssZ")
);
Debug.Print(formattedDate);
//sleep for 5 seconds
Thread.Sleep(5000);
}
}
}
}
ก่อน run โปรแกรมครั้งต่อไป เราก็ comment คำสั่งในการตั้งค่าเวลาปัจจุบันให้กับ module โดยตัว module เองมีแบตเลี้ยงในตัวเพื่อเก็บเวลาค่าเวลาปัจจุบัน ทำงานอิสระจากตัว Microcontroller เมื่อเราปิด Microcontroller ไป แล้วเปิดขึ้นมาใหม่ก็อ่านค่าเวลาได้อย่างถูกต้อง
Credit พี่ Art ผู้เชี่ยวชาญด้าน IoT ของเมืองไทยที่ให้กับสนับสนุนเป็นอย่างดี
ขอบคุณครับ