티스토리 뷰

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

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 조건을 입력하였습니다.

실행 결과


See Also

본 예제에서 사용한 디지털 입출력 코드 설명이 필요하시면 아래의 포스트를 참고해주세요.

관련포스트

아두이노 디지털핀 입/출력 방법

2020/07/01 - [Arduino/Basic] - 아두이노 강좌 #2 디지털핀 GPIO 으로 LED 깜빡이기


마무리

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

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




  1. Atmega328 데이터시트 : http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf [본문으로]
댓글
댓글쓰기 폼
최근에 올라온 글
«   2020/10   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
10,493
Today
9
Yesterday
229