一个基于 SwiftyGPIO 的 TM1637 7 段数码管芯片驱动程序,用于 LK-Digi LinkerKit 模块。
该模块很大程度上受到了 LK-Digi Wiki 上显示的 Python 代码示例的启发。
一个简单的数字时钟
import Foundation
import SwiftyGPIO
import SwiftyTM1637
let gpios = SwiftyGPIO.GPIOs(for: .RaspberryPi3)
// E.g. a LK-Digi connected to the P4/P5 digital pins
let display = TM1637(clock: gpios[.P4]!, data: gpios[.P5]!)
display.turnOff()
display.brightness = .typical
while true {
let cal = Calendar.current
let now = cal.dateComponents([.hour, .minute, .second], from: Date())
let hour = now.hour ?? 0
let minute = now.minute ?? 0
let second = now.second ?? 0
let segment2 = SevenSegment(digit: hour % 10, dot: second % 2 != 0)
display.show(s1: hour / 10, s2: segment2,
s3: minute / 10, s4: minute % 10)
Thread.sleep(forTimeInterval: 0.5)
}
注意:这适用于 32 位系统,64 位系统似乎尚未正常工作。
您不必这样做,但我建议在 HypriotOS Docker 容器中运行。
设置很简单。 获取 flash 工具,然后将空的 SD 卡插入 Mac 并执行
$ flash --hostname zpi3 \
https://github.com/hypriot/image-builder-rpi/releases/download/v1.8.0/hypriotos-rpi-v1.8.0.img.zip
启动 Raspi,您应该可以通过 zpi3.local
访问它。
我还建议使用 docker-machine(例如,参见 这里),但这不是必须的。
像这样启动容器
$ docker run --rm \
--cap-add SYS_RAWIO \
--privileged \
--device /dev/mem \
-it --name swiftfun \
helje5/rpi-swift-dev:4.1.0 /bin/bash
您最终会进入一个预装了一些开发工具(如 emacs)的 Swift 4.1 环境。 用户 swift
的 Sudo 密码是 swift
。
在容器中
swift@fb630076e0ec:~/testit$ mkdir testit && cd testit && swift package init --type executable
Creating executable package: testit
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/testit/main.swift
Creating Tests/
然后编辑 Package.swift
文件,使其如下所示
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "testit",
dependencies: [
.package(url: "https://github.com/uraimo/SwiftyGPIO.git",
from: "1.0.0"),
.package(url: "https://github.com/SwiftyLinkerKit/SwiftyTM1637.git",
from: "0.1.2"),
],
targets: [
.target(
name: "testit",
dependencies: [ "SwiftyTM1637", "SwiftyGPIO" ]),
]
)
编辑 Sources/testit/main.swift
并添加 上面的 Swift 代码。
构建所有内容
swift@fb630076e0ec:~/testit$ swift build
Fetching https://github.com/uraimo/SwiftyGPIO.git
Fetching https://github.com/AlwaysRightInstitute/SwiftyTM1637.git
Cloning https://github.com/uraimo/SwiftyGPIO.git
Resolving https://github.com/uraimo/SwiftyGPIO.git at 1.0.5
Cloning https://github.com/SwiftyLinkerKit/SwiftyTM1637.git
Resolving https://github.com/SwiftyLinkerKit/SwiftyTM1637.git at 0.1.0
Compile Swift Module 'SwiftyGPIO' (10 sources)
Compile Swift Module 'SwiftyTM1637' (4 sources)
Compile Swift Module 'testit' (1 sources)
Linking ./.build/armv7-unknown-linux-gnueabihf/debug/testit
您需要使用 sudo
运行它,密码是 swift
swift@fb630076e0ec:~/testit$ sudo .build/armv7-unknown-linux-gnueabihf/debug/testit
如果您的 LK-Digi 连接到端口 D4/D5,它现在应该会显示一个漂亮的数字时钟!
想看看它的实际效果吗? 使用 LinkerKit 组件的 SwiftyGPIO 驱动的输入/输出
SwiftyTM1637 由 AlwaysRightInstitute 带给您。 我们喜欢反馈、GitHub Star、酷炫的 合同工作,以及您能想到的任何形式的赞扬。
在 Swift-ARM Slack 上有一个频道。