2

我正在尝试使用带有用 Go 编写的代码的 Arduino ATMega2560 来转动电机。这里有一个使用 TinyGo v0.14.1 的示例: https ://create.arduino.cc/projecthub/alankrantas/tinygo-on-arduino-uno-an-introduction-6130f6

该示例实质上如下所示:

func main() {
    machine.InitPWM()
    led := machine.PWM{machine.D9}
    led.Configure()
    value := 0
    led.Set(uint16(value))
}

当我尝试打电话时machine.InitPWM()出现错误InitPWM not declared by package machine

TinyGo 的当前版本(也是我正在运行的版本)是 v0.19。似乎机器包已被修改为以不同的方式使用 PWM,但是,我在任何地方都找不到如何正确使用它。

4

2 回答 2

1

ATMega2560 的包中确实没有任何InitPWM功能- https://tinygo.org/docs/reference/microcontrollers/machine/arduino-mega2560/machine

于 2021-07-22T12:22:12.440 回答
0

您必须设置 machine.Timer1 才能使用 pin9。下面的代码将执行您想要的操作,但不会发生任何事情,因为 'value' 设置为 0。您必须使用 0-256 之间的值才能执行操作:

pwm := machine.Timer1
pin9 := machine.D9

err := pwm.Configure(machinePWMConfig{})
if err != nil{println(err.Error())}

ch, err := pwm.Channel(pin9)
if err != nil{println(err.Error())}

//note that values are between 0-256 for pwm:
value := uint32(0)
pwm.Set(ch, uint32(value))
于 2021-11-05T20:54:53.680 回答