본문 바로가기

작업실/arduino

아두이노(arduino) - 버튼을 누를때마다 동작이 변하는 LED [3state]





소스1 -누를때마다 동작이 변하는 릴리즈스위치 응용소스입니다. 1회:LED ON 2회:LED OFF 3회: LED ON-> LED OFF -> 리셋-



// 5v -> switch -> port7    port7 -> 10K -> GND

// port13 -> LED -> 470 -> GND


void setup(){ 

  pinMode(7,INPUT); // 7번을 입력포트로 사용

  pinMode(13,OUTPUT); // 13번을 출력포트로 사용한다.

}

void loop(){

  int LED = 0; //LED 상태저장

  int Switch = 0; //스위치 값 저장

  int pass = 0; //정상적으로 누르고 때는 스위치동작 확인용

  

  while(1){ //루프 돌때마다 변수가 초기화되므로 반복문으로 무한반복

    Switch = digitalRead(7); //7번 포트로 입력을 받는다

    if(Switch==1){

      delay(200); //debounce 0.2초 대기

      while(Switch==1) //bounce이후 재확인 스위치가 때어지면 나온다

        Switch = digitalRead(7);

      if(Switch==0){

        delay(200);

        Switch = digitalRead(7);

        if(Switch==0)

          pass++;

      }

    }

    if(pass==1){ //스위치 인식확인

      digitalWrite(13,1);

    }

    if(pass==2){ //스위치 인식확인

      digitalWrite(13,0);

    }

    if(pass==3){

      while(1){

      digitalWrite(13,1);

      delay(200);

      digitalWrite(13,0);

      delay(200);

      Switch = digitalRead(7);

      if(Switch == 1)

        break;

      }

      pass=0;

    }

  } //while END

} //loop END