首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用TinyGo控制Arduino上的脉宽调制输出

如何使用TinyGo控制Arduino上的脉宽调制输出
EN

Stack Overflow用户
提问于 2021-07-22 14:47:02
回答 2查看 108关注 0票数 2

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

该示例本质上如下所示:

代码语言:javascript
复制
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,然而,我在任何地方都找不到如何正确使用它。

EN

回答 2

Stack Overflow用户

发布于 2021-07-22 20:22:12

在用于ATMega2560 - https://tinygo.org/docs/reference/microcontrollers/machine/arduino-mega2560/machine包中确实没有InitPWM函数

票数 1
EN

Stack Overflow用户

发布于 2021-11-05 20:54:54

您必须设置machine.Timer1才能使用pin9。下面的代码可以做你想做的事情,除了不会发生任何事情,因为'value‘被设置为0。您必须使用0-256之间的值才能执行某些操作:

代码语言:javascript
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68480314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档