8장. 기울기 센서(Ball Switch) & LED 실습
실습은 개인 학습을 위해 "주) 엘케이 임베디드" 사이트에서 구매한 아두이노 코딩 배우기 고급 키트를 이용한 학습입니다. 동봉된 책을 기반으로 학습하면서 개인적인 궁금증과 추가 필요한 부분을 정리한 블로그임을 미리 알려드립니다.
< 준비물 >
아두이노 우노 : 1개
USB 케이블 : 1개
점퍼 케이블(숫숫) : 4개가량
브레드 보드 : 1개, 830홀 사용
Ball Switch : 2개
LED : 2개
저항 : 220Ω 2개
이번 실습은 기울기센서인 볼스위치를 이용 LED를 ON/OFF하는 간단한 실습 입니다.
팅커 캐드 링크입니다 : https://www.tinkercad.com/things/5devBOqyiQM
< 참고 지식 >
⦿ 볼 스위치(Ball Switch, SW_520D)
볼 스위치는 기울기 센서 스위치로 기본적인 움직임과 방향을 검출할 수 있는 스위치로 금속 튜브안에는 금속공이 들어 있어 위로 기울리면 동이 글러서 끝 부분에 접촉되어 서로 연결 되는 구조입니다.
⦿ pinMode()에서 INPUT_PULLUP : INPUT_PULLUP을 사용시 아두이노 입/출력 핀을 입력핀으로 사용하면서 PULLUP모드로 사용한다고 지정함. 보통의 경우 스위치를 통한 입력을 받을때 pull-up 저항을 연결해줘야 합니다. 하지만 ATmega168/328의 각 I/O핀에는 pull-up저항 부분이 내장되어 있습니다. 일반적으로는 미사용하고 pinMode() 설정시 INPUT_PULLUP으로 사용가능합니다.
< 실습 코드 >
int LED_A = 3; // LED 출력핀
int LED_B = 2; // LED 출력핀
int BallSW_A = 6; // 스위치 입력핀
int BallSW_B = 5; // 스위치 입력핀
void setup()
{
pinMode(LED_A, OUTPUT); // LED를 출력으로 설정
pinMode(LED_B, OUTPUT); // LED를 출력으로 설정
pinMode(BallSW_A, INPUT_PULLUP); // 볼스위치를 입력핀으로 설정( 내장 Pull-UP 저항 사용)
pinMode(BallSW_B, INPUT_PULLUP); // 볼스위치를 입력핀으로 설정( 내장 Pull-UP 저항 사용)
}
void loop()
{
if(digitalRead(BallSW_A) == LOW) // 볼스위치 A가 ON이되면
{
digitalWrite(LED_A, HIGH); // LED A를 ON
}
else // 볼스위치 A가 ON이 아니면 (OFF 이면)
{
digitalWrite(LED_A, LOW); // LED A를 OFF
}
if(digitalRead(BallSW_B) == LOW) // 볼스위치 B가 ON이되면
{
digitalWrite(LED_B, HIGH); // LED B를 ON
}
else // 볼스위치 B가 ON이 아니면 (OFF 이면)
{
digitalWrite(LED_B, LOW); // LED B를 OFF
}
}