아두이노 코딩 스위치 입력 폴링 방식 (Switch Polling) 으로 LED 제어
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 연결
(좌) 회로도, (우) 연결 방법 예시
본 예제의 회로 구성은 아래와 같습니다.
- D2 : 스위치 입력(내부 풀업 사용)
- Switch ON : LOW(0V) 입력
- Switch OFF : HIGH(5V) 입력
- D13 : LED 출력
- HIGH 출력 일 때 LED 켜짐
- LOW 출력 일 때 LED 꺼짐
회로도 참고사항
스위치는 2번 핀으로 연결 하였습니다. 스위치 회로를 간소화 하기 위해 2번 핀은 내부 풀업 저항(Pull-up Resistor)을 사용할 예정입니다. Atmega328 데이터시트에서, 아두이노 우노 보드에서 내부 풀업 저항은 약 20 ~ 50kΩ 의 저항 값으로 확인됩니다. 1
(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 체터링 처리 방법에 대해 작성할 예정입니다.
끝까지 읽어 주셔서 감사합니다.^^
- Atmega328 데이터시트 : http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf [본문으로]
'Embedded > Arduino' 카테고리의 다른 글
아두이노 코딩 스위치 채터링과 디바운스 디바운싱 (4) | 2020.07.21 |
---|---|
아두이노 코딩 스위치 입력 인터럽트(Interrupt) 방식으로 LED 제어 (0) | 2020.07.20 |
아두이노 코딩 LED Toggle (On/OFF) 여러 가지 방식 (0) | 2020.07.19 |
아두이노 팁 #4. Visual Studio Code로 아두이노 디버깅 환경 설정 및 실행 (8) | 2020.07.18 |
아두이노 팁 #3. Visual Studio Code로 아두이노 코딩 사용법과 나노팁 (0) | 2020.07.16 |