我试图弄清楚如何让这个打印函数在变量所在的函数之外工作。
int altitude = 0;
void setup() {
Serial.begin(9600);
simulateAltitude();
}
void loop() {
Serial.println(altitude); // This does not work.
}
int simulateAltitude() {
int a = 0;
while ( a == 0 ) {
altitude += 1;
Serial.println(altitude); // This does work.
delay(1);
}
}
我最大的问题是void loop()没有从int simulateAltitude函数中的while循环获取高度值。这是在使用C的Arduino UNO微控制器板上使用。
我知道它是一个无限循环,仅用于测试目的。
答案 0 :(得分:2)
它不会在loop()
内打印高度,因为loop()
实际上从未被调用过。
记住这个关于Arduino的事。 setup()
函数在引导时调用一次,一旦返回,就会一遍又一遍地调用loop()
函数。
按照你拥有它的方式,你的setup()
函数调用simulateAltitude()
进入一个无限循环,所以永远不会返回。它不会同时运行simulateAltitude()
和loop()
。
你可能最好看一下像这样的东西:
void loop() {
Serial.println(altitude);
increaseAltitude();
}
int increaseAltitude() {
altitude += 1;
delay(1);
}
答案 1 :(得分:0)
这里有2个问题:
首先,您需要初始化a
和altitude
。给他们初始值(比如0
)。
其次,您没有设置串行监视器。将此行添加到您的设置功能:
Serial.begin(9600); //9600 is more common but you can set other update frequencies
答案 2 :(得分:0)
此代码中存在两个问题。第一个是永远不会调用simulateAltitude
,因此altitude
永远不会更新。第二个问题是a
和altitude
实际上都没有初始化。