2016-12-20 365 views
-3

我想运行这个循环,其中abc()只有一次功能。但它持续工作。我该怎么办?Arduino循环一次

const int buttonPin = 2; 
int buttonState = 0; 
int i; 

void setup() { 
    pinMode(buttonPin, INPUT); 
} 

void abc(){ 
    if (buttonState == HIGH) { 
     for(i=0; i<240; i++) 
     { 
      analogWrite(6,i); 
     } 

    } 
    else { 
     analogWrite(6,0); 
    } 
} 

void loop() { 
    buttonState = digitalRead(buttonPin); 
    abc(); 
} 
+3

这是真的吗?你真的读过关于Arduino项目中使用的(非常简单)'setup' /'loop'方案的任何内容吗?如何从'setup'调用'abc'(或者更好的方法是将'abc'函数的代码放入'setup'函数中)。 –

+1

这可以从设置调用功能。我实际上不知道 – Mithun

+2

为什么它不是?在任何情况下,您都可以直接将代码直接放在那里。 –

回答

2

您可以使用IF语句一些布尔,就像这样:

bool ABC = true; 

void loop() { 
    if(ABC) { 
     abc(); 
     ABC = false; 
    } 
} 

我希望它帮助。

Yoav

+1

这是一个非常糟糕的建议,我害怕。这个变量需要是'static',否则每次调用'loop'函数时它都会被初始化为'true'。即使您正确回答了,Arduino方案也是专门为了让程序员只执行一次某些事情而指定的 - 只需在'setup'函数中执行即可。没有理由在这里使用布尔标志。 –

+0

你说得对。我的意思是他需要声明一个全局变量。我发现我不写得对。感谢您的评论。我改变了答案。 – YoavShtainer

+0

对不起,我在英语中犯了一些错误,我删除了我的评论。 – YoavShtainer