c++ - 空的while循环没有它的代码不起作用
问题描述
我遇到了一些相扑机器人的代码。我不明白为什么代码中使用了while(BTN)。while循环有什么用?
没有第一个while(BTN)代码不起作用,没有第二个,机器人不会停止。下面列出了所有相关代码。
#include <Wire.h>
void setup() {
//Button
pinMode(A2, INPUT);
digitalWrite(A2, HIGH);
#define BTN !digitalRead(A2)
void loop() {
Forward(0, 0); //Stop motors
delay(100);
if (BTN) { //Turn on program with button
while (BTN) {}
while (!BTN) { //stop robot if button is pushed again
//code to move the robot was included here
}
while(BTN){}
}
}
解决方案
考虑BTN
扩展后的代码:
if (!digitalRead(A2)) {
while (!digitalRead(A2)) {}
while (digitalRead(A2)) {
// move code
}
while (!digitalRead(A2)) {}
}
所以它说:
- 如果按钮被按下;
- 等到它不再关闭;
- 然后执行移动代码,直到按钮再次按下
- 并等到它不再下降。
(注意此代码根本不考虑开关弹跳,它的行为可能有些不规律。)
推荐阅读
- angular-cli - 我无法使用 cli 甚至手动在 angular 应用程序中添加组件,因为 power shell 向我显示此错误我该怎么办?请帮帮我
- flutter - 我的自定义 ThemeChangeEvent 仅更改我的主题一次
- excel - 如何使用应用程序脚本复制谷歌电子表格中的内容。(我想将这些内容粘贴到excel..)
- amazon-web-services - Terrafrom 资源创建条件,错误
- django - 如何删除旧样式的 django
- c++ - 关于谷歌dense_hash_map的find函数的一个问题
- python - jupyter notebook Linux ipywidgets不工作
- r - 解析问题,加载文件夹时出现意外字符
- python-3.x - 如何抑制谷歌日历API流输出Python3
- c++ - 外部函数指针变量的模拟/更改值