gpt4 book ai didi

没有库的Arduino伺服器

转载 作者:行者123 更新时间:2023-12-02 10:08:32 24 4
gpt4 key购买 nike

作为发送数字信号的教育练习,我尝试在不使用servo.h库的情况下对伺服器的脉冲序列进行编码。

Helm 机是9g微型 Helm 机。硬件是正确的,因为许多使用servo.h的示例工作正常。

我有以下代码。问题在于 Helm 机会猛烈晃动 3 秒,而不是移动并保持静止。

void loop() {
movePulse_1000();
delay(3000);
}

void movePulse_1000(){
Serial.print("Start movePulse_1000()\t\t");
for (int pulseCounter=0; pulseCounter<=150; pulseCounter++){
digitalWrite(pinServo,LOW);
delay(20); // between pulses
digitalWrite(pinServo,HIGH);
delayMicroseconds(1000);
}
Serial.println("End movePulse_1000()");
}

最佳答案

使用模拟伺服系统,平均脉冲宽度必须间隔 1.5ms,并且占空比根据所需位置而变化。为了让 Helm 机保持在你想要的位置,你必须不断刷新 Helm 机数据。这不是一个 super 简单的任务,并且伺服库已经非常优化。没有理由不使用它。

它创建硬件计时器并使用它们来刷新伺服系统。这使得您的常规代码看起来会定期继续,即使它被伺服库中断以服务伺服系统。占空比、pwm 频率和刷新率都会发挥作用。您必须查看您所使用的伺服器的数据表才能获得完整的详细信息。但它并不像您想象的那么简单,并且您使用的那些延迟/延迟微函数并不总是足够精确。这就是为什么要使用时间和溢出中断。尽管大多数伺服系统都不太挑剔,但您可以避免大量的溢出。

关于没有库的Arduino伺服器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49056510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com