C函数之间的全局变量

时间:2015-11-06 04:05:10

标签: c arduino

我试图弄清楚如何让这个打印函数在变量所在的函数之外工作。

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微控制器板上使用。

我知道它是一个无限循环,仅用于测试目的。

3 个答案:

答案 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个问题:

首先,您需要初始化aaltitude。给他们初始值(比如0)。

其次,您没有设置串行监视器。将此行添加到您的设置功能:

Serial.begin(9600); //9600 is more common but you can set other update frequencies

答案 2 :(得分:0)

此代码中存在两个问题。第一个是永远不会调用simulateAltitude,因此altitude永远不会更新。第二个问题是aaltitude实际上都没有初始化。