Fix up visibility, move more complex car movements into subclass.

This commit is contained in:
Piv
2020-09-01 22:06:04 +09:30
parent 2777d5c48d
commit 4bb117e838
2 changed files with 56 additions and 24 deletions

View File

@@ -10,12 +10,12 @@
import Foundation
import SwiftyGPIO
enum ServoError: Error{
public enum ServoError: Error{
case invalidMinPulseWidth
case invalidMaxPulseWidth
}
protocol Servo {
public protocol Servo {
var value: Float {get set}
var minPulseWidth: Float {get}
@@ -40,25 +40,25 @@ public class PWMHardwareServo : Servo{
private var device: PWMOutput
private var currentPulseWIdth: Float
var minPulseWidth: Float {
public var minPulseWidth: Float {
get{
return minDc * frameWidth
}
}
var maxPulseWidth: Float{
public var maxPulseWidth: Float{
get{
return (dcRange * frameWidth) + minPulseWidth
}
}
var pulseWidth: Float{
public var pulseWidth: Float{
get{
return internalValue * frameWidth
}
}
var value: Float{
public var value: Float{
get{
internalValue
}
@@ -71,7 +71,7 @@ public class PWMHardwareServo : Servo{
}
init?(forPin pin: PWMOutput, startingAt initialValue: Float = 0, withMinPulseWidth minPulseWidth: Float = 1000000,
public init?(forPin pin: PWMOutput, startingAt initialValue: Float = 0, withMinPulseWidth minPulseWidth: Float = 1000000,
withMaxPulseWidth maxPulseWidth: Float = 2000000, withFrameWidth frameWidth: Float = 20000000) throws {
if(minPulseWidth >= maxPulseWidth){
throw ServoError.invalidMinPulseWidth
@@ -95,19 +95,19 @@ public class PWMHardwareServo : Servo{
self.device.startPWM(period: Int(self.frameWidth), duty: self.minDc + self.dcRange * ((internalValue - self.minValue) / self.valueRange) * 100)
}
func min(){
public func min(){
self.value = -1
}
func mid(){
public func mid(){
self.value = 0
}
func max() {
public func max() {
self.value = 1
}
func detach(){
public func detach(){
self.device.stopPWM()
}
}