ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 시간 간격을 통해 버튼을 누를 때마다 LED를 반전
    Arduino/Button 2020. 10. 22. 18:34

    하드웨어를 다음과 같이 구성한다.

    내부적으로 풀업 저항으로 세팅을 한다.

     

    버튼을 누르자마자 반응을 하기 보다는, 버튼을 누른 적정 시간이 지나야 버튼을 누른 것으로 판정을 하도록 한다.

    소스 코드

    //  버튼을 누를 때마다 LED가 반전된다.
    //  내부적으로 풀업 저항으로 세팅을 한다.
    
    // 버튼 //
    const int pin_switch = 7;             //  7번핀 스위치
    const int button_interval = 500;      //  버튼 반응 속도 0.5초
    long button_pressed_millis;           //  버튼 눌러진 시간을 밀리초로 저장하기 위한 변수
    
    // LED //
    const int pin_LED = 13;               //  13번핀 LED 출력
    
    // 시간 //
    long current_millis;                  // 현재 시간을 밀리초로 저장하기 위한 변수
    bool isActive = false;
    const int check_interval = 100;
    
    void setup()
    {
      //  입력 버튼, LED 초기화
      button_pressed_millis = 0;
      
      pinMode(pin_LED, OUTPUT); //LED 출력
      pinMode(pin_switch, INPUT_PULLUP); //스위치 입력(누르지 않으면 켜진상태로 유지)
    }
    
    void loop()
    {
        current_millis = millis(); // 현재 시간 기록
    
        //  버튼을 특정 시간만큼 눌러야 누른 것으로 판단한다.
        //  버튼이 눌렸는지를 판단해서 눌렸다면
        if (digitalRead(pin_switch) == LOW && 
            current_millis-button_pressed_millis > button_interval) 
        {  
           button_pressed_millis = current_millis;  //  버튼이 눌린 시각을 저장
           isActive = (isActive) ? false : true;    //  상태 반전
        }
         
        if (isActive) { digitalWrite(pin_LED,HIGH);}
        else          {digitalWrite(pin_LED,LOW); }
         
        delay(check_interval);
      }

    'Arduino > Button' 카테고리의 다른 글

    버튼과 인터럽트  (0) 2020.10.23
    시간 간격을 통해 버튼을 누를 때마다 LED를 깜빡이게 하기  (0) 2020.10.22
    Pull down & Pull up 저항  (0) 2020.10.22
    버튼 누른 회수 구하기  (0) 2020.10.22
    버튼 제어  (0) 2020.10.21

    댓글

Designed by Tistory.