[Arduino] Tilt sensor

스윗포테이토·2022년 11월 29일
1

아두이노

목록 보기
2/5
post-thumbnail

기울기 센서 (Tilt Sensor)

말 그대로 기울기를 감지하는 센서이다. 내부는 전도성 구 혹은 액체 수은으로 구성되어 있다. 아두이노 키트에서 흔히 볼 수 있는 SW-520D는 전도성 구가 들어 있어서 흔들어 보면 구슬 소리를 들을 수 있다.

기울기에 따라 전류가 흐르거나 흐르지 않기 때문에 디지털 신호를 주고, 푸시버튼과 같이 연결되지 않았을 때의 기준 값이 필요하다. 따라서 pull-up 혹은 pull-down 저항이 필요하다.

내부 pull-up 저항을 이용해 구현해보았다. 참고로 극이 없는 모듈이라 방향에 상관없이 연결하면 된다.

pull-up 저항에 연결했을 경우 스위치가 켜지지 않았을 때 HIGH 신호를 준다. 따라서 HIGH 일 때 기울어진 상태, LOW 일 때가 기울어지지 않은 상태이다.

bool is_tilted = digitalRead(TILT);

간단 실습

간단하게 기울어졌을 때 LED가 켜지는 회로를 구상해보았다.

시뮬레이터에 있는 기울기 센서는 SW-200DSW-520D와는 구조가 반대다. 센서 자체가 가로이기 때문에 SW-520D보다 작은 기울임에도 신호가 바뀔 수 있다. 반면 D520의 경우 완전히 기울어지기 전까지는 내부의 전류가 흐르다가 완전히 눕혀진 이후부터 전류가 끊기기 때문에 장치의 특성에 따라 센서 종류를 선택해야 할 것 같다. 아무튼 SW-200D는 기울어질 경우 내부에서 전류가 통하기 때문에 LOW 신호를 주니까 코드를 반대로 해야 한다.

bool is_tilted = !digitalRead(TILT);

전체 소스코드

/*
 * created at 2022-11-29
 * LED with arduino tilt sensor(SW-520D)
 */

// pin map
#define LED 13
#define TILT 12

bool is_tilted;

void setup() {
  pinMode(LED, OUTPUT);
  pinMode(TILT, INPUT_PULLUP);
}

void loop() {
  is_tilted = digitalRead(TILT); // 입력신호가 HIGH라면, 내부 pullup 저항과 연결된 것 -> 기울기 센서 내부에서 연결이 끊김 -> 기울어짐
  if (is_tilted){
    digitalWrite(LED, HIGH);
  } else {
    digitalWrite(LED, LOW);
  }
}

reference

기울기센서를 통한 LED 조작(SW-520D)

profile
나의 삽질이 미래의 누군가를 구할 수 있다면...

0개의 댓글