如何在Go中控制Raspi上的PWM pin,就像我在Python中所做的那样?

2024-09-27 23:16:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个树莓pi3b,我想用它来控制一个电机。在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

因为我是用围棋写程序的,所以我现在想用围棋做同样的事情(或类似的事情)。所以这是我的机会。你知道吗

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而不是一个电机,但我猜代码应该非常相似(如果不是相同的话)。这个例子使用了不同的值,所以我对这些值进行了一些处理,但没有结果。你知道吗

有人知道我错过了什么吗?欢迎任何提示!你知道吗


Tags: theimportforgpiotimepinsleeperr

热门问题