[아두이노 강좌] 06. 푸쉬버튼을 이용한 디지털 입력하기

본 게시물에서는 푸시 버튼을 이용하여 LED를 켜고 끄는 방법에 대해 살펴보도록 하겠습니다.

overview.jpg

맨위에 있는 푸쉬 버튼을 누르면 LED가 켜지고 다른 버튼을 누르면 LED가 꺼지게 될 것입니다.

브레드보드 레이아웃

스위치 버튼의 핀은 스위치 반대편에 위치하여 있습니다.

fritzing.jpg

LED를 연결할 때는 극성을 주의하여 연결하십시오. 짧은 쪽이 음극이며 오른쪽에 위치 시켜야 합니다.

아두이노 코드

아래의 스케치를 아두이노에 로드시키고 맨 위에 위치한 푸쉬버튼을 눌러보십시오. LED가 켜지는것을 확인한 후 다른 버튼을 눌러 LED를 끄십시오.

  1. int ledPin = 5;
  2. int buttonApin = 9;
  3. int buttonBpin = 8;
  4. byte leds = 0;
  5. void setup()
  6. {
  7. pinMode(ledPin, OUTPUT);
  8. pinMode(buttonApin, INPUT_PULLUP);
  9. pinMode(buttonBpin, INPUT_PULLUP);
  10. }
  11. void loop()
  12. {
  13. if (digitalRead(buttonApin) == LOW)
  14. {
  15. digitalWrite(ledPin, HIGH);
  16. }
  17. if (digitalRead(buttonBpin) == LOW)
  18. {
  19. digitalWrite(ledPin, LOW);
  20. }
  21. }

코드의 첫부분에서는 세개의 핀을 위한 변수를 정의하였습니다. ledPin은 출력 핀이며 buttonApin은 제일 위에 있는 버튼, buttonBpin은 다른 스위치를 의미합니다.

setup함수에서 ledPin을 디지털 출력모드로 설정하였습니다. buttonApin, buttonBpin은 입력으로 설정되었는데 INPUT_PULLUP이 파라메터로 쓰였습니다.

  1. pinMode(buttonApin, INPUT_PULLUP);
  2. pinMode(buttonBpin, INPUT_PULLUP);

INPUT_PULLUP 핀모드는 핀이 입력으로 사용될 것이지만 아무것도 연결되지 않았다면 HIGH 상태로 pullup 시켜두라는 것을 의미합니다. 다시 말하면 입력핀의 기본 상태는 HIGH입니다. 그리고 버튼을 눌르면 상태는 LOW가 되어야 합니다.

그래서 스위치들이 GND에 연결되어 있습니다. 스위치가 눌리면 스위치는 입력핀을 그라운드와 연결시키게 되고 입력핀은 더이상 HIGH상태가 될수 없게 됩니다.

입력은 보통 HIGH이고 버튼이 눌리면 LOW로 되는 로직을 loop 함수에서 처리합니다.

  1. void loop()
  2. {
  3. if (digitalRead(buttonApin) == LOW)
  4. {
  5. digitalWrite(ledPin, HIGH);
  6. }
  7. if (digitalRead(buttonBpin) == LOW)

{

  1. digitalWrite(ledPin, LOW);
  2. }
  3. }

루프 함수 안에는 두개의 if문이 있고 각각 버튼 두개의 상태를 검사합니다.

버튼이 눌린다면 눌린쪽에 연결된 입력핀은 LOW가 되므로 버튼A가 눌려 LOW상태가 된다면 digitalWrite 함수가 ledpin을 HIGH로 만들어 LED를 켜게 됩니다.

비슷하게 버튼 B가 눌린다면 LED를 끄게 됩니다.

푸쉬 스위치

스위치는 간단한 부품으로 버튼을 누르면 두개의 접촉부분을 연결시켜 전기를 흐르게 만드는 부품입니다.

여기서 사용되는 택틀 스위치는 4개의 다리를 가지고 있어 무엇이 무엇인지 약간 헷갈립니다.

sw.png

실제로 버튼에는 두개의 전기적 연결만이 있습니다. 스위치 케이스 안에는 핀B와 핀C가 서로 연결되어 있고 핀A와 핀D가 서로 연결되어 있습니다.

 

Comments