안녕하세요 데브구일입니다!
오늘은 아두이노 버튼을 사용해보려구해요 ! :D
차근차근 해보도록하겠습니다 !
버튼을 사용할때 전에 포스팅했던 Pull up & Pull down이 활용되기 때문에
한번 보고 오시는게 이해하기 좋을 것 같습니다 !
먼저 준비물 !
1. 아두이노
2. LED
3. 저항
4. 브레드 보드
5. 버튼 !
버튼은 어떤 버튼이든 상관은 없습니다 :D
다만 버튼마다 회로 구조가 조금씩 다를 수 있기때문에
그건 잘 알아보시면 될 것 같습니다
시작하겠습니다 !
먼저 회로도는 이렇게 되어있습니다 !
여기서 검은색 선은 항상 GND !
빨간색 선은 VCC입니다 !
노란색은 LED에 연결되어있구
초록색은 버튼에 연결되어있습니다 :D
여기서 버튼에 연결된 저항은 10k옴 저항입니다 !
너무 낮은 저항을 이용하게 되면 풀업 저항이 안될 수 있기때문에 10k옴 이상 사용해주세요 !
LED는 330옴을 이용했습니다 :D
이렇게 연결 하신뒤에 :D
프로그램 소스는 이렇게 작성했습니다 !
#define LED 8
#define BUTTON_IN 9
void setup() {
pinMode(LED, OUTPUT);
pinMode(BUTTON_IN, INPUT);
}
void loop() {
if(digitalRead(BUTTON_IN) == HIGH) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
이게 버튼을 인식하기 위한 전체 소스 코드이구요 :D
#define LED 8
#define BUTTON_IN 9
제가 이번엔 #define이라는걸 사용했는데요 !
#define은 어떤 숫자나 글자를 정의할때 사용합니다 !
저 처럼 #define LED 8 이렇게 작성하시면
LED를 8번 핀이라 지정하겠다 ! 라는 식으로 사용이 가능합니다
그렇게 되면 pinMode(8, OUTPUT)과 pinMode(LED, OUTPUT) 두개는 같은 명령이 됩니다
두 개 중에 어떤게 더 직관적이신가요 :D ?
LED라 적혀있는게 누가봐도 LED를 사용하는 것 같지요 ?
void setup() {
pinMode(LED, OUTPUT);
pinMode(BUTTON_IN, INPUT);
}
setup() 입니다 :D
이번에는 입력을 받기때문에 INPUT이라는 새로운 문구가 등장했어요 !
이전에 LED를 켜기위해서 저희가 OUTPUT을 사용했던것 처럼
이번엔 입력을 받기위해서 INPUT을 사용합니다 !
void loop() {
if(digitalRead(BUTTON_IN) == LOW) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
이번엔 loop() 입니다 :D
여기서는 if라는 조건문을 사용했습니다 :D
if는 말 그대로 만약에 ! ~이라면인데요 !
if ( x < 1 ) 라면 x가 1보다 작다면 다음 중괄호로 가라 입니다 :D
else는 위에 있는 if 조건에 참이 되는것이 없다면 else에 있는 중괄호로 가게됩니다!
이렇게 if라는 조건문 안에 제가 digitalRead()를 사용했는데요 !
digitalRead()는 입력 값을 받는 함수입니다 !
digitalRead(BUTTON_IN) 이라 되어있는데 여기서 BUTTON_IN은 9번 핀을 의미합니다 :D
해석해본다면 9번핀에서 digital입력값이 있는지 확인하는 것이지요 :D
여기서 입력값이 있다면 HIGH 없다면 LOW가 나오게 됩니다 !
저는 if문을 통해서 BUTTON_IN의 핀에서 LOW가 나오면 LED핀으로 HIGH신호 !
HIGH가 나오면 LOW 신호를 주도록 코딩했습니다 !
여기서 문제 !
하지만 저는 왜 LOW일때 버튼일 켜게 했을까요 :D ?
정답은 :D (아래를 블록지정이 되게 드래그해주세요)
// Pull up 저항을 사용하고 있기 때문입니다 :D //
// Pull up 저항은 스위치가 눌렸을때 LOW 땠을때 HIGH가 됩니다 !//
// Pull up & down 저항관련 내용은 이전 포스팅을 참고해주세요 :D//
버튼 사용에 대해 어느정도 알게 되셨나요 :D ?
도움이 되셨으면 좋겠네요 !!
그럼 다음엔 또 다른 포스팅으로 돌아오겠습니당 :D !!
'Arduino' 카테고리의 다른 글
[PlatformIO] 아두이노 Serial 출력하기 (0) | 2022.05.03 |
---|---|
[PlatformIO] 아두이노 Switch 구현하기 digitalRead() (Pull up 스위치) (0) | 2022.04.24 |
[PlatformIO] 아두이노 LED Blink digitalWrite() (PlatformIO 프로젝트 생성) (0) | 2022.04.11 |
아두이노로 시리얼 모니터 사용해보기 ! (0) | 2022.04.05 |
아두이노로 LED 켜기 ! (0) | 2022.04.04 |