본문 바로가기

Arduino/[2] Arduino Module

[Arduino Module] #15. 진동 센서 모듈

728x90
반응형

아두이노 충격센서 / 진동센서

진동 센서는 충격 감지 센서라고도 불리는데, 진동 센서 안에 스프링이 충격을 감지하는 구조로 충격의 여부를 측정한다.

 

진동 센서에는 총 3개의 핀이 달려있다.

 

맨 왼쪽에서부터 S로 표시된 맨 왼쪽에서부터 데이터핀, VCC핀, GND핀'으로 아두이노 보드에 연결하면 된다. 진동 센서는 충격을 감지할 경우 전류의 흐름이 끊기면서 LOW의 신호 상태가 되며, 충격을 감지하지 않을 경우 HIGH의 신호 상태가 된다.

 

1. 디지털 출력

0 or 1의 값을 만들어 내며 초기상태값이 HIGH 상태, 진동이 발생하면 LOW 상태가 된다. 즉, 진동이 발생하면 진동센서는 LOW가 된다. 

 

2. 아날로그 출력

0~1023의 값을 만들어 낸다. 아날로그 출력은 진동의 강도값으로 진동의 신호를 만들어 내기 때문에 이 신호의 범위값을 나누면 여러 상황을 만들어 낼 수 있다.

  • 디지털 입력 : digitalRead(D0)
  • 아날로그 입력 : analogRead(A0)

회로도

출처: https://blog.naver.com/dokkosam/221216916133

피에조 부저가 아닌 LED를 사용해도 무방하다.
int Dit_Sensor = 2; // INPUT PIN (DIGTAL)
int LED= 13;

// 프로그램 시작 - 초기화 작업
void setup(){
    Serial.begin(9600); // 시리얼 통신 초기화
    Serial.println("Arduino Examples - Shock Dit_Sensor");
    pinMode(Dit_Sensor, INPUT);
}

void loop(){
    /*디지털 출력: 터치의 유무 판단 조건*/
    if (true == IsTouchec(Dit_Sensor)){
       Serial.println("Moved!"); digitalWrite(LED,HIGH);
    }
    else {Serial.print(".");digitalWrite(LED,LOW);}
    delay(500);
}

bool IsTouchec(int p){
    int time = 0;
    do{
        if (HIGH == digitalRead(Dit_Sensor)) return true;
        delay(1);
    } while (time++<15);
    
    return false;
}

 

728x90
반응형
댓글