如何解决如何在8位处理器上“伪造”多任务?
| 我有一个带有Adafruit Motor Shield的Arduino作为我的机器人的一部分。我想在压电元件上弹奏音调的同时运行电动机。 问题是我不太了解如何在我的代码中伪造/模拟多任务。我尝试过这样的事情:void goForward(int duration) {
for (int i; i<duration; i++) {
tl.run(FORWARD);
tr.run(BACKWARD);
bl.run(FORWARD);
br.run(BACKWARD);
counter++;
if (counter%4==0) {
piezo != piezo;
}
delay(1);
}
}
这使电动机运转,但是并没有在我的压电元件上产生音调。有什么更好的编程方法,以便在电动机命令运行时以440 Hz的频率打开/关闭压电?
解决方法
我不知道Arduino开发板,但是大多数微控制器都有一些定时器中断。您是否尝试设置过这样的计时器?在计时器中断处理程序中,您可以启用/禁用压电元件,而主循环可用于控制电动机。
, 普通的Arduino开发板只有3个计时器。这将“多任务”功能限制为3个“线程”。 Arduino Mega有16个计时器。换句话说,Arduino Mega可以成为您的解决方案。没有?
, 创建计划程序以创建并行任务,并为马达使用两个计时器,如果您有第三个计时器,则将其用作蜂鸣器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。