一个用于 SG90 舵机的 Swift 库,可以适配其他舵机(9g ES08A, SM-S4303R, S3003, ...)。
这个简单的库可以使用 PWM 控制 SG90 舵机,PWM 具有 20ms 的周期,并且占空比代表以下位置
您的舵机可能具有略微不同的设置(1-2% 的差异),请在 Position
枚举(以百分比表示)中调整这些值,以找到适合您舵机的正确占空比。
所有 SwiftyGPIO 支持的且具有 PWM 功能的开发板,目前只有 Raspberry Pi。您还需要 Swift 3.x,请查看 SwiftyGPIO 的 readme 文件以获取更多信息,了解在哪里可以找到它。
下面的示例使用 Raspberry Pi 2 开发板,但您可以轻松修改示例以使用其他支持的开发板之一。在 Examples
目录中提供了一个适用于 Raspberry Pi 2 的完整工作演示项目。
我们需要做的第一件事是从 SwiftyGPIO 获取 PWMOutput
的实例,并使用它来初始化 SG90Servo
对象
import SwiftyGPIO
import SG90Servo
let pwms = SwiftyGPIO.hardwarePWMs(for:.RaspberryPi2)!
let pwm = (pwms[0]?[.P18])!
let s1 = SG90Servo(pwm)
s1.enable()
s1.move(to: .left)
sleep(1)
s1.move(to: .middle)
sleep(1)
s1.move(to: .right)
sleep(1)
s1.disable()
请参阅 SwiftyGPIO 的 readme 文件,以获取 Swift 安装说明。
一旦您的开发板运行 Swift,如果您的版本支持 Swift Package Manager,您可以简单地将此库添加为项目的依赖项,并使用 swift build
进行编译
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "TestServo",
dependencies: [
.package(url: "https://github.com/uraimo/SwiftyGPIO.git", from: "1.0.0"),
.package(url: "https://github.com/uraimo/SG90Servo.swift.git",from: "3.0.0")
],
targets: [
.target(name: "TestServo", dependencies: ["SwiftyGPIO","SG90Servo"]),
]
)
目录 Examples
包含使用 SPM 的示例项目,编译它并使用 sudo ./.build/debug/TestServo
运行示例。
由于所有与 GPIO 交互的操作都需要权限,如果您还不是 root 用户或特定 gpio 组的成员,您将需要使用 sudo ./main
运行该二进制文件。