DS1307.swift

一个用于 DS1307(以及 DS1302 和 DS3231,但不包括增强功能)I2C 实时时钟的 Swift 库

Linux-only Swift 4 compatible License: MIT

概述

此库可以配置 DS1307 RTC 时钟,一旦运行,可以检索当前日期和时间。

此组件使用 5V 电源供电,需要一个 32.768kHz 的石英晶体振荡器才能工作。它暴露了一个 I2C 接口,此库使用该接口与其交互。

DS1307 diagram

如果您没有在此 RTC 上使用备用电池,请记住将 Vbatt 连接到 GND。

支持的板

所有 SwiftyGPIO 支持的板:RaspberryPi、BeagleBone、C.H.I.P. 等...

要使用此库,您需要一个运行 Swift 3.x/4.x 的 Linux ARM 板。

下面的示例将使用 RaspberryPi 2 板,但您可以轻松修改示例以使用其他支持的板,Examples 目录中提供了一个完整的 RaspberryPi2 工作演示项目。

用法

我们需要做的第一件事是从 SwiftyGPIO 获取一个 I2CInterface 实例,并使用它来初始化 DS1307 对象

import SwiftyGPIO
import DS1307

let i2cs = SwiftyGPIO.hardwareI2Cs(for:.RaspberryPi2)!
let i2c = i2cs[0]

let ds = DS1307(i2c)

一旦你有了 DS1307 对象的实例,你可以设置和获取时间作为单独的组件(日、月、年[0-99]、小时、分钟、秒)或者作为一个 Foundation 的 Date 或者一次性获取所有组件

//Properties of DS1307 (all gettable/settable individually):
//year,month,date,hours,minutes,seconds

ds.setTime(hours: 16, minutes: 25, seconds: 00, date: 10, month: 5, year: 17)
ds.start()

var (hours, minutes, seconds, date, month, year) = ds.getTime()
print("\(year)/\(month)/\(date) \(hours):\(minutes):\(seconds)")

sleep(10)

(hours, minutes, seconds, date, month, year) = ds.getTime()
print("\(year)/\(month)/\(date) \(hours):\(minutes):\(seconds)")

//Also available:
//
//ds.setDate(Date())
//let now = ds.getDate()

函数 start()stop() 恢复或暂停时钟。

一个完整的示例可以在 Examples/ 下找到

安装

请参考 SwiftyGPIO 自述文件以获取 Swift 安装说明。

一旦您的板运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项并使用 swift build 编译

  let package = Package(
      name: "MyProject",
      dependencies: [
        .Package(url: "https://github.com/uraimo/DS1307.swift.git", majorVersion: 1),
      ]
  ) 

目录 Examples 包含使用 SPM 的示例项目,编译它并使用 ./.build/debug/TestRTC 运行示例。

如果不支持 SPM,您需要手动下载该库及其依赖项

wget https://raw.githubusercontent.com/uraimo/DS1307.swift/master/Sources/DS1307.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SwiftyGPIO.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/Presets.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/I2C.swift https://raw.githubusercontent.com/uraimo/SwiftyGPIO/master/Sources/SunXi.swift  

一旦所有文件都已下载,创建一个额外的文件,该文件将包含您的应用程序的代码(例如 main.swift)。当您的代码准备好后,使用以下命令编译它

swiftc *.swift

编译器将创建一个 main 可执行文件。