아두이노 코딩 스위치 입력 폴링 방식 (Switch Polling) 으로 LED 제어
Lucy Archive
Lucy / Facilitate4U
2020. 7. 19. 18:29

아두이노 폴링 방식 스위치 입력아두이노 폴링 방식 스위치 입력

Arduino Uno Switch Input Polling Method for LED Control

아두이노 우노 보드에서 

스위치를 입력을 폴링 방식 구현하여 LED 를 제어

하는 예제입니다.

Hardware

준비물

본 예제의 구성품은 아래와 같습니다.

  • Arduino Uno x 1 EA
  • LED x 1 EA
  • Tact Switch x 1 EA
  • Resistor x 1 EA
  • Bread Board x 1 EA
  • Jumper Wires 

회로도 : 스위치, LED 연결

아두이노 스위치로 LED 제어(좌) 회로도, (우) 연결 방법 예시

본 예제의 회로 구성은 아래와 같습니다.

  • D2 : 스위치 입력(내부 풀업 사용)
    • Switch ON : LOW(0V) 입력 
    • Switch OFF : HIGH(5V) 입력
  • D13 : LED 출력
    • HIGH 출력 일 때 LED 켜짐
    • LOW 출력 일 때 LED 꺼짐

회로도 참고사항

스위치는 2번 핀으로 연결 하였습니다. 스위치 회로를 간소화 하기 위해 2번 핀은 내부 풀업 저항(Pull-up Resistor)을 사용할 예정입니다. [각주:1]Atmega328 데이터시트에서, 아두이노 우노 보드에서 내부 풀업 저항은 약 20 ~ 50kΩ 의 저항 값으로 확인됩니다.

아두이노 우노 내부 풀업 저항(Atmega328 데이터 시트 일부) 아두이노 우노 내부 풀업 저항

Software

스위치가 눌려져 있을 때 LED를 ON, 스위치가 꺼져 있을 때 LED 를 OFF 하는 예제 입니다.

Code

#define 구문에서 스위치 핀 번호와 LED 핀 번호를 변경 할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define switchPin 2 // 스위치 핀 번호 
#define ledPin 13 // LED 핀 번호
 
void setup() {
  pinMode(switchPin, INPUT_PULLUP); // 스위치핀 입력 모드 - 내부 풀업 사용
  pinMode(ledPin, OUTPUT); // LED핀 출력 모드
}
 
 
void loop() 
{
  if(digitalRead(switchPin) == HIGH)// SWTICH OFF 상태
    digitalWrite(ledPin, LOW);         // LED OFF
  else                              // SWITCH ON 상태
    digitalWrite(ledPin, HIGH);        // LED ON
}
cs

if 문과 같은 분기문은 빈도수가 높은 조건이 우선적으로 처리되도록 작성하는 것이 좋습니다. 본 예제에서 일반적으로 스위치는 OFF인 상태이므로, if 문에 스위치가 OFF인 경우를 판단하도록 digitalRead(switchPin) == HIGH 조건을 입력하였습니다.

실행 결과


마무리

본 포스트에서는 스위치 입출력 기본적인 내용에 다루었습니다. 이후 포스트에서는 스위치를 인터럽트 방식으로 사용 그리고 SW 체터링 처리 방법에 대해 작성할 예정입니다.

끝까지 읽어 주셔서 감사합니다.^^

관련포스트

👉 아두이노 디지털 입출력 관련글 목록 보기

👉 아두이노 관련글 전체 목록 보기



  1. Atmega328 데이터시트 : http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf [본문으로]