2016-12-20 2 views
-3

abc()에 1 회만 기능하는 루프로 이것을 실행하고 싶습니다. 그러나 그것은 계속 작동합니다. 어떻게해야합니까?Arduino 루프 1 회

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