ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 버튼 제어
    Arduino/Button 2020. 10. 21. 17:54

     

    버튼을 아두이노와 연결해보자.

    버튼의 입력핀은 11번핀을 사용한다.

    저항은 10k이고, 흰색선은 5V에 연결되고, 노란선은 GND에 연결되고

    붉은선은 11번핀에 연결되었다.

    연결이 다 되어으면, 버튼이 눌렸거나 떼졌을 때를 판단하는 프로그램을 작성해보자.

    아래의 소스를 실행해보자.

    소스 코드

    더보기
    //  버튼이 눌리면 1을, 그렇지 않으면 0이 출력되는 예제
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(11,INPUT);  //  1번 핀은 입/출력이 다 되는 핀이다.
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      Serial.println(digitalRead(11));
    
      delay(100);
    }

     

     

     

    버튼과 LED의 연결해서, 버튼이 눌리면 LED가 켜지고 버튼이 안 눌리면 LED가 꺼지는 예제

    아래는 하드웨어를 연결한 그림이다.

    소스는 두 가지인데, 마음에 드는 것을 선택하면 된다. 로직은 서로 같다.

    소스 코드1

    더보기
    //  버튼이 눌림에 따라 LED on/off
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(11,INPUT);  //  1번 핀은 입/출력이 다 되는 핀이다.
    
      pinMode(3,OUTPUT);  //  3번핀을 LED핀으로 설정
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      int btn = digitalRead(11);
      
      digitalWrite(3,btn);
     
      delay(100);
    }

    소스 코드2

    더보기
    //  버튼이 눌림에 따라 LED on/off
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(11,INPUT);  //  1번 핀은 입/출력이 다 되는 핀이다.
    
      pinMode(3,OUTPUT);  //  3번핀을 LED핀으로 설정
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      Serial.println(digitalRead(11));
    
      //  버튼이 눌리면, LED on.
      if (digitalRead(11) == HIGH)
        digitalWrite(3,HIGH);
    
      //  버튼이 떼지면, LED off.
      else
        digitalWrite(3,LOW);
     
      delay(100);
    }

     

     

    버튼을 누르고 있었던 시간 구하기

    아래의 그림은 하드웨어 연결이다.

    micros(}, millis() 함수를 이용하면 된다.

    더보기
    //  버튼을 누른 시간 구하기
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(9600);
    
      pinMode(11,INPUT);  //  1번 핀은 입/출력이 다 되는 핀이다.
    }
    
    double startTime; //  버튼을 누른 시각
    double endTime;   //  버튼을 뗀 시각
    
    void loop() {
      // put your main code here, to run repeatedly:
      //  Serial.println(millis()/1000);  //  1초
      
      if (digitalRead(11))
      {
        startTime = millis(); //  시간을 밀리second 단위로 가지고 옴
      
        while (1)
        {
          if (digitalRead(11) == LOW)
          {
            endTime = millis();
            break;
          }
        }
    
        double t = endTime - startTime; //  두 차가 버튼을 누르고 있던 시간 간격
        Serial.println(t / 1000); //  밀리secnd를 second로 환산
      }
    }

     

    댓글

Designed by Tistory.