如何在while循环操作后保持全局变量的值?

时间:2017-08-07 04:18:11

标签: arduino

所以最近我一直致力于一个涉及使用while循环来操纵全局变量的项目。我希望将while循环用作一种计数器。但是,我发现当while循环终止时,全局变量的值恢复为零。关于如何解决这个问题的任何想法?

以下是我所说的一个例子:

int i = 0;

setup() {

    pinMode(3, OUTPUT);

}

loop() {

    while (i < 10) {
        i++;
    }

    analogWrite(3, i);

}

在while循环终止后,我发现没有信号写入引脚3,并且我已经重置为零。是否有任何方法可以保留其价值?

我理解给出的示例非常简单,我目前正在处理的项目要复杂得多,但我只是想知道变量是否有可能在while循环中递增后保留其值

2 个答案:

答案 0 :(得分:1)

我修改了你的代码以便它编译(另一个线索你没有实际测试那个代码)并添加了一些调试打印来证明我保持在10。

int i = 0;

void setup() {

  pinMode(3, OUTPUT);
  Serial.begin(115200);

}

void loop() {

  Serial.print("Loop start i = ");
  Serial.println(i);

  while (i < 10) {
    Serial.println("Running while loop");
    i++;
  }

  analogWrite(3, i);

  Serial.print("Loop end i = ");
  Serial.println(i);

}

产生输出:

Loop start i = 0
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Running while loop
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10
Loop start i = 10
Loop end i = 10

答案 1 :(得分:0)

你确定要在你的while循环之外write ......所有这些都是将i递增到10退出循环,然后写入pint 3 ......

也......重新全局......除非你在函数开头把我写成另一个变量&#34; loop&#34;即z ... int z = i;然后在函数i = z;

的末尾

全局变量是坏mmmkkkaaay !!将变量作为参数传递。