본문 바로가기

아두이노-스케치

아두이노 버튼 연결하고 LED 켜고 끄기




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


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



사진 출처 : http://wiki.vctec.co.kr/opensource/arduino/pushbutton



소스코드


  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를 끄게 됩니다.