如何在arduino上将变量重置为0?

时间:2019-05-10 20:17:49

标签: variables arduino arduino-uno arduino-c++

在新功能中使用变量时,我想将其重置为原始值。

我创建了一个计数器,用户可以与之交互来回答一系列问题。我希望在回答每个问题后将计数器设置回0。它的工作方式是用户输入与其答案相关的数字并按下按钮,这将触发下一个问题的播放以及将计数器设置回0以输入新的答案。但是,当我这样做时,计数器不会重置,并且会从剩余的任何数字开始继续计数。

正如您在我的代码中看到的那样,我正在尝试通过counter = 0 ;, 我不是最擅长编码的人,因此对任何明显的错误都深表歉意,请为我哑巴回答!

const int analogPin = A0;    // pin that the sensor is attached to
const int threshold = 1;   // an arbitrary threshold level that's in the range of the analog input
const int buttonPin = 9;

int counter = 0;
int life = 81;
int analogValue;
int buttonState = 0;

void setup() {
    analogValue = analogRead(A0);
    pinMode(buttonPin, INPUT);
    pinMode(buttonPin, INPUT_PULLUP);
    Serial.begin(9600);
}

void loop() {

    int k;  
    //COUNTER
    // read the value of the counter:
    analogValue = analogRead(analogPin);
    //Serial.println(analogValue);
    // if the analog value is high enough, add to counter:
    if (analogValue > 900) {
        digitalWrite(ledPin, LOW);
        counter ++;
    } else {
        digitalWrite(ledPin, LOW);
    }

    //Print the counter
    Serial.println(counter);
    //Adjust this delay to adjust counter timer
    delay(1500);

    buttonState = digitalRead(buttonPin);

    k = smokeFunction(counter);
    delay(200);
}

int smokeFunction(int counter){

    int q;

    //Do you smoke?
    //Smoke Yes    
    if (buttonState == 0 && counter == 1){
        life = life - 10;
        Serial.println(life); 
        counter = 0;
        diseaseFunction(counter);  
    }   

    //Smoke No
    if (buttonState ==0 && counter == 2){
        Serial.println(life);
        counter = 0;
        diseaseFunction(counter);
    }

    q = diseaseFunction(counter);
    delay(200);     
}

int diseaseFunction(int counter){}

1 个答案:

答案 0 :(得分:0)

您有一个全局变量和一个局部变量,都称为counter。我在这里看到可变范围的问题:

int smokeFunction(int counter)

您正在将名为counter的全局变量传递给该函数。但是,此函数中的counter被视为局部变量。修改此局部变量不会修改全局变量。

因此,当您在那里呼叫counter = 0时,此本地counter变为0。但是,不是全局counter

如果只想修改全局变量,则无需将其传递给函数。您可以这样声明一个函数:(由于您的函数不返回任何内容,因此我将返回类型更改为void。)

void smokeFunction() {
  // your implementation. counter = 0; etc.
}

然后在loop()中这样称呼它。

smokeFunction();

此页面介绍了变量范围。 https://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm