?>

Hard Copy World

HCW

Sensor

Home > Info >

Sensor

Tilt Sensor: 기울기 센서

페이지 정보

작성자 하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일15-04-02 10:44 조회5,029회 댓글2건

본문

 

  기울어짐을 측정할 때 사용하는 Tilt sensor (혹은 tilt switch)입니다. 정교하고 복잡한 동작을 감지하기 위해서는 가속도+자이로 센서를 이용해서 복잡한 처리를 해줘야 합니다. 하지만 간단하게 특정 각도 이상 기울어졌는지만 판단하고 싶다면 굳이 가속도+자이로 센서를 이용할 필요가 없습니다. 간단하게 Tilt sensor 만으로도 가능합니다.  

1. 연결방법

Tilt sensor는 기울어짐에 따라 on/off 되는 스위치로 보셔도 됩니다. 그래서 아두이노 없이 아래와 같이 테스트가 가능합니다. 일반 스위치처럼 눌러서 on/off 시키는 것이 아니라, 기울어짐에 따라 on/off 됩니다. force___flex_tiltLEDlayout 

(이미지: Adafruit)  

Tilt switch가 on/off 되었는지 상태를 아두이노에서 알고 싶을 땐 아래와 같이 디지털 핀을 통해 값을 입력받도록 만들면 됩니다. 

 

force___flex_tiltarduinolay 

(이미지: Adafruit)

5V 핀에 연결된 저항(10K)을 통해 D2 핀에 연결되어 있습니다. 그리고 tilt sensor를 통해 GND로 연결됩니다.

tilt sensor 가 off 상태일 때 D2 핀은 풀업저항을 통해 5V에 연결되어 있으므로 on(=5V, HIGH) 값을 읽게 됩니다.

Tilt sensor 가 기울어져 on 상태로 바뀌면 off(=0V, LOW) 값을 읽게 됩니다.

아래 예제는 tilt sensor를 통해 읽은 값에 따라 아두이노 내부에 포함된 LED (13번 핀)를 on/off 시키는 예제입니다.

 

 

2. 소스코드 (스케치)

 

/* Better Debouncer
 * 
 * This debouncing circuit is more rugged, and will work with tilt switches!
 *
 * http://www.ladyada.net/learn/sensor/tilt.html
 */
 
int inPin = 2;         // the number of the input pin
int outPin = 13;       // the number of the output pin
 
int LEDstate = HIGH;      // the current state of the output pin
int reading;           // the current reading from the input pin
int previous = LOW;    // the previous reading from the input pin
 
// the follow variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long time = 0;         // the last time the output pin was toggled
long debounce = 50;   // the debounce time, increase if the output flickers
 
void setup()
{
  pinMode(inPin, INPUT);
  digitalWrite(inPin, HIGH);   // turn on the built in pull-up resistor
  pinMode(outPin, OUTPUT);
}
 
void loop()
{
  int switchstate;
 
  reading = digitalRead(inPin);
 
  // If the switch changed, due to bounce or pressing...
  if (reading != previous) {
    // reset the debouncing timer
    time = millis();
  } 
 
  if ((millis() - time) > debounce) {
     // whatever the switch is at, its been there for a long time
     // so lets settle on it!
     switchstate = reading;
 
     // Now invert the output on the pin13 LED
    if (switchstate == HIGH)
      LEDstate = LOW;
    else
      LEDstate = HIGH;
  }
  digitalWrite(outPin, LEDstate);
 
  // Save the last reading so we keep a running tally
  previous = reading;
}

 

Tilt sensor 의 on/off 값에 따라 아두이노에 포함된 LED를 on/off 시켜줍니다.  

 

참고자료 :

 

 


하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

모든 전통이 한 때는 오해를 면치 못했다. 마찬가지로 모든 아이디어는 한 때는 비웃음을 면치 못했다. -홀브룩 잭슨 ::::: 느닷없이 떠오르는 생각이 가장 귀중한 것이며, 보관해야할 가치가 있는 것이다. -베이컨 ::::: 미리 숙고하면 힘든 일도 그저 실행에 옮기는 순간 쉬워진다. - 로버트 M. 피어식

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

틸트센서, 스위치 등을 여러개 쓰신다면 쓰는만큼 디지털 핀 여러개를 INPUT 모드로 설정해서 사용하세요