Arduino/Arduinio기초 실습

8장. 기울기 센서(Ball Switch) & LED 실습

sinki 2022. 4. 7. 19:06

실습은 개인 학습을 위해 "주) 엘케이 임베디드" 사이트에서 구매한 아두이노 코딩 배우기 고급 키트를 이용한 학습입니다. 동봉된 책을 기반으로 학습하면서 개인적인 궁금증과 추가 필요한 부분을 정리한 블로그임을 미리 알려드립니다. 

 

< 준비물 >

아두이노 우노 : 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) 

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
  }
}