作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 Raspberry Pi 3B,我想使用它来控制电机 PWM .在 Python 中,这非常适合将 GPIO 引脚的电压从 0% 逐渐增加到 100% (100% == 3.3V):
import RPi.GPIO as GPIO
from time import sleep
PWM_PIN = 13
GPIO.setmode(GPIO.BCM)
GPIO.setup(PWM_PIN, GPIO.OUT)
p = GPIO.PWM(PWM_PIN, 1000)
p.start(0)
for i in range(101):
print(i)
p.ChangeDutyCycle(i)
sleep(0.1)
sleep(5) # Keep the voltage at 100% for 5 seconds, after which the program ends
由于我是用 Go 编写程序,所以我现在想在 Go 中做同样的事情(或类似的事情)。所以这就是我的尝试。
package main
import (
"fmt"
"time"
rpio "github.com/stianeikeland/go-rpio"
)
const (
PWM_PIN = 13
)
func main() {
err := rpio.Open()
if err != nil {
panic(err)
}
motor_pin_pwm := rpio.Pin(PWM_PIN)
motor_pin_pwm.Mode(rpio.Pwm)
motor_pin_pwm.Freq(1000)
motor_pin_pwm.DutyCycle(0, 100)
fmt.Println("Waiting...")
time.Sleep(5 * time.Second)
fmt.Println("Start the increase...")
for i := 1; i <= 100; i++ {
fmt.Println(i)
motor_pin_pwm.DutyCycle(uint32(i), 100)
time.Sleep(100 * time.Millisecond)
}
time.Sleep(5 * time.Second)
}
有 an example of using go-rpio to control PWM here .该示例旨在控制 LED 而不是电机,但我想代码应该非常相似(如果不相同的话)。该示例使用了不同的值,因此我对这些值进行了一些改动,但没有结果。
我在这里错过了什么?
最佳答案
好的,找到了。使用 PWM 时,程序必须以 root 身份运行。
关于python - 如何像在 Python 中那样在 Go 中控制 Raspi 上的 PWM 引脚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57632096/
我是一名优秀的程序员,十分优秀!