2012-10-19 2 views
0

나는 Arduino로 프로그래밍하는 데 며칠이며 귀찮은 문제가 발생했습니다. 내 회로에는 핀 2,3,4에 연결된 세 개의 LED와 핀 8에 연결된 누름 버튼이 있습니다. 버튼을 눌러 점등 된 LED를 교대로 바꾸고 싶습니다. 어떤 점에서 어떤 LED가 켜지는지를 계산하기 위해 변수를 사용하고 있으며 값이 4에 도달하면 재설정합니다. 하드웨어 부분은 잘 동작합니다. LED를 별도로 테스트했기 때문입니다. Arduino IDE), 그래서 내 코드로 무언가가 있어야합니다. 정확히 무엇입니까?푸시 버튼 변수 변경이 작동하지 않습니다.

void setup(){ 
    pinMode(2, OUTPUT); 
    pinMode(3, OUTPUT); 
    pinMode(4, OUTPUT); 
    pinMode(8, INPUT); 

} 

void loop(){ 
    int buton= digitalRead(8); 
    int led = 1; 

    if(led == 1){ 
    digitalWrite(2, HIGH); 
    digitalWrite(3, LOW); 
    digitalWrite(4, LOW); 
    } 
    if(led == 2){ 
    digitalWrite(2, LOW); 
    digitalWrite(3, HIGH); 
    digitalWrite(4, LOW); 
    } 
    if(led == 3){ 
    digitalWrite(2, LOW); 
    digitalWrite(3, LOW); 
    digitalWrite(4, HIGH); 
    } 
    if(buton == HIGH){ 
    led++; 
    if(led == 4) led = 1; 
    } 

} 

내가 배치했기 때문에 나는 그것이 (버튼 입력 값에 대한 하나)의 경우 마지막 입력하지 않는다는 사실을 알고 Serial.println() 모두 이끌어 변수의 값을 참조하고, 상수 문자열 및 그것은 표시되지 않았다.

미리 감사드립니다.

+3

'int led = 1;'을 설정 함수로 옮겨야합니다. 그렇지 않으면 루프가 돌아갈 때마다 '1'로 재설정됩니다. – smilledge

+0

그것이 처음 생각이었습니다. 그러나 제가 거기로 이동하면 "이 범위에서"선언되지 않았다는 오류가 발생합니다. 그것들은 다른 지역 변수를 가진 다른 함수입니다. – FloIancu

답변

0

Smillge가 주석에서 옳았습니다. led 변수는 루프 반복마다 1로 재설정되었습니다. 두 함수 (설정 및 루프) 밖에서 변수 선언을 할 수 있다는 것을 알지 못했기 때문에 변수를 전역으로 만들었습니다.

관련 문제