forked from willy77/go-pigpio
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpwm.go
More file actions
70 lines (54 loc) · 1.81 KB
/
Copy pathpwm.go
File metadata and controls
70 lines (54 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package pigpio
type GpioPwm struct {
gpio *GpioPin
}
func (pwm *GpioPwm) Gpio() *GpioPin { return pwm.gpio }
func (pwm *GpioPwm) SetDutyCycle(dutyCycle int) (int, error) {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmDutyCycleS, pwm.gpio.pin, dutyCycle, nil)
if e != nil || r < 0 {
return 0, newPiError(r, e, "SetDutyCylce(pin: %d, dutyCycle: %d)", pwm.gpio.pin, dutyCycle)
}
return r, nil
}
func (pwm *GpioPwm) GetDutyCycle() (int, error) {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmDutyCycleG, pwm.gpio.pin, 0, nil)
if e != nil || r < 0 {
return 0, newPiError(r, e, "GetDutyCylce(pin: %d)", pwm.gpio.pin)
}
return r, nil
}
func (pwm *GpioPwm) SetRange(max int) error {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmRangeS, pwm.gpio.pin, max, nil)
if e != nil || r < 0 {
return newPiError(r, e, "SetRange(pin: %d, max: %d)", pwm.gpio.pin, max)
}
return nil
}
func (pwm *GpioPwm) GetRange() (int, error) {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmRangeG, pwm.gpio.pin, 0, nil)
if e != nil || r < 0 {
return 0, newPiError(r, e, "GetRange(pin: %d)", pwm.gpio.pin)
}
return r, nil
}
func (pwm *GpioPwm) GetRealRange() (int, error) {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmRealRangeG, pwm.gpio.pin, 0, nil)
if e != nil || r < 0 {
return 0, newPiError(r, e, "GetRealRange(pin: %d)", pwm.gpio.pin)
}
return r, nil
}
func (pwm *GpioPwm) SetFrequency(freq int) error {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmFreqS, pwm.gpio.pin, freq, nil)
if e != nil || r < 0 {
return newPiError(r, e, "SetFrequency(pin: %d, freq: %d)", pwm.gpio.pin, freq)
}
return nil
}
func (pwm *GpioPwm) GetFrequency() (int, error) {
r, e := pwm.gpio.pi.socket.SendCommand(cmdPwmFreqG, pwm.gpio.pin, 0, nil)
if e != nil || r < 0 {
return 0, newPiError(r, e, "GetFrequency(pin: %d)", pwm.gpio.pin)
}
return r, nil
}