해당 게시물에서는 VS Code PlatformIO를 사용합니다. 참고바랍니다.
안녕하세요 데브구일입니다!
이번에는 아두이노 스위치를 사용해보도록 하겠습니다.
간단하게 스위치를 눌렀을 때 LED가 켜지도록 해보겠습니다.
참고로 스위치 회로를 구성할 때는 플로팅이라는 현상이 발생하기 때문에
Pull up & Pull down 회로를 이해하시는게 좋습니다!
아래 링크를 참고하시면 되겠습니다!
아래 회로는 Pull up 스위치입니다!
Pull up 에 대한 설명은 위 링크를 참고바랍니다!
Pull up의 경우 보통 1.5 ~ 10K옴을 사용하는 편입니다.
저는 그냥 10K 저항이 있어서 그냥 10K 저항을 사용했습니다 :D
위와 같이 회로를 구성하시고 다음과 같이 코드를 작성합니다.
LED_BUILTIN의 경우 기본적으로 정의된 값이기 때문에, 따로 정의하지 않고 사용가능합니다.
SW_1의 경우 D3핀으로 미리 정의를 하였습니다.
코드를 작성하고 업로드 하도록 하겠습니다.
#include <Arduino.h> // PlatformIO를 사용하시는게 아니라면 이 라인은 지워주세요!
#define SW_1 3 // Arduino D3핀을 SW_1으로 정의
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN 핀에 대해 출력(OUTPUT) 설정
pinMode(SW_1, INPUT); // SW_1 핀에 대해 입력(INPUT) 설정
}
void loop() {
int sw_flag = digitalRead(SW_1); // SW_1(D3핀)의 디지털값을 읽음
if (sw_flag) { // sw_flag 값이 true 일 때
digitalWrite(LED_BUILTIN, HIGH); // LED ON
} else { // sw_flag 값이 false 일 때
digitalWrite(LED_BUILTIN, LOW); // LED OFF
}
delay(10);
}
이제 아두이노를 동작시켜보면 스위치를 누르지 않았을 때 LED가 켜지게 되고,
반대로 스위치를 누르게 되면 LED가 꺼지게 됩니다!
여기서 조금 혼란이 오시는 분들도 계실거에요.
보통은 스위치를 눌렀을 때 켜지는걸 생각하실텐데요!
이유는 Pull up 스위치 회로를 사용하고 있기 때문입니다.
Pull up 회로에서는 스위치를 누르지 않았을 때 D3핀으로 5V 신호가 들어오게되고,
스위치를 눌렀을 때는 반대입니다!
만약에 회로를 Pull Down으로 하셨다면 지금 상황의 반대가 되겠지요?
그리고, 이 방법 외에도 아두이노와 같은 MCU에서 내장된 저항을 사용하여,
Pull up & Pull Down 회로 구성없이 Pull Up & Pull Down을 사용 할 수도 있습니다.
아두이노에서는 Pull Down은 안되고 Pull Up만 가능하기 때문에 참고하세요!
MCU에 따라서 Pull Up & Pull Down 둘 다 가능한 경우도 있습니다.
이 경우 Pull Up 회로를 구성 할 필요 없기때문에 다음과 같이 회로를 구성하시면 됩니다.
회로를 보시게 되면 저항은 따로 필요 없으며 GND - 스위치 - D3로 연결해 주시면됩니다.
코드에서도 조금 수정할 부분이 생깁니다!
조금 전에 작성했던 코드에서 INPUT이였던 부분을 INPUT_PULLUP으로 바꿔주시면됩니다.
간단하지요?
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN 핀에 대해 출력(OUTPUT) 설정
pinMode(SW_1, INPUT_PULLUP); // SW_1 핀에 대해 풀업 입력(INPUT_PULLUP) 설정
}
간단하게 스위치를 구현하는 방법을 알아보았습니다.
감사합니다 :D
'Arduino' 카테고리의 다른 글
[PlatformIO] 아두이노 Serial print()와 write() (0) | 2022.05.11 |
---|---|
[PlatformIO] 아두이노 Serial 출력하기 (0) | 2022.05.03 |
[PlatformIO] 아두이노 LED Blink digitalWrite() (PlatformIO 프로젝트 생성) (0) | 2022.04.11 |
아두이노로 시리얼 모니터 사용해보기 ! (0) | 2022.04.05 |
아두이노로 버튼을 사용해보자! (0) | 2022.04.05 |