본문 바로가기

소프트박스 코딩

소프트박스에서 소리센서 데이터 확인하기

반응형

 

소프트박스에서 소리센서 데이터 확인하기
 
소리센서는 사운드 센서라고도 하는데. 주변에서 흔히 볼 수 있는 마이크를 생각하면 된다. 소리가 발생할 경우 소리 센서는 소리의 크기와 지속시간에 따른 아날로그 신호를 출력한다. 소리로 전등을 켜고 끄거나 또는 주차 중인 차 안에 설치하여 주변에 소리가 발생할 경우 카메라가 동작하는 기능들은 사운드 센서를 사용해서 구현할 수 있는 기능들이다. 주변에서 응용 범위가 많은 사운드 센서를 실습해 보자.
 
사운드 센서 사진
센서 핀 연결 
 
 
 
 
 
소리센서 아날로그 데이터 확인하는 코드
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int blueled = 7;
int threshold = 250//Change This
int volume;
 
void setup() {                
    Serial.begin(9600); // For debugging
    pinMode(blueled, OUTPUT);     
}
 
void loop() {
  
    volume = analogRead(A2); // Reads the value from the Analog PIN A0
    //데이터 값 출력
    Serial.println(volume);
    //delay(100);
    
    if(volume >= threshold){
        digitalWrite(blueled, HIGH); //Turn ON Led
    }  
    else{
        digitalWrite(blueled, LOW); // Turn OFF Led
    }
}
 
cs
 

소리센서 디지털 데이터 확인하는 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int blueled = 7;
int soundpin = 11//Change This
int volume;
 
void setup() {
 
    Serial.begin(9600); /* PC모니터로 결과를 쉽게 확인하기위해 시리얼 통신을 정의해 줍니다.*/   
    pinMode(soundpin, INPUT); // 11번 핀으로 데이터를 값을 받습니다.
}
 
void loop() {
    /*조건문인 IF문을 사용하여 소리를 감지하면 LED를 켠다. */
 
    if (digitalRead(soundpin) == HIGH)
    { 
        digitalWrite(blueled, HIGH); //Turn ON Led; 
        Serial.println("sori!");
    }
    else
    {
        digitalWrite(blueled, LOW);
        Serial.println("cm");
    }
    delay(100);
}
 
cs

 

소리의 크기에 반응하는 디스플레이 화면을 만드는 예제

 

 

void setup() {
  Serial.begin(9600);   // 시리얼 통신을 시작, 통신 속도는 9600
}

void loop() {
  int a = analogRead(A0); // 정수형 변수 a를 선언하고 A0핀에 입력되는 신호를 대입
  if (a > 150) {           // 만약 a가 150보다 크다면
    Serial.print(a);       // 시리얼 모니터에 a의 값을 출력
    delay(100);            // 0.1초 대기
  }
  
//이 밑 부분은 ++를 표시해주는 코드입니다.

  if (150 < a && a < 200 ) {
    Serial.println("  ++");
  }
  if (201 < a && a < 250 ) {
    Serial.println("  +++++");
  }
  if (251 < a && a < 300 ) {
    Serial.println("  ++++++++");
  }
  if (351 < a && a < 400 ) {
    Serial.println("  +++++++++++");
  }
  if (401 < a && a < 450 ) {
    Serial.println("  ++++++++++++++");
  }
  if (451 < a && a < 500 ) {
    Serial.println("  +++++++++++++++++");
  }
  if (501 < a && a < 550 ) {
    Serial.println("  ++++++++++++++++++++");
  }
  if (551 < a && a < 600 ) {
    Serial.println("  +++++++++++++++++++++++");
  }
  if (601 < a && a < 650 ) {
    Serial.println("  +++++++++++++++++++++++++++");
  }
  if (651 < a && a < 700 ) {
    Serial.println("  ++++++++++++++++++++++++++++++");
  }
  if (701 < a && a < 750 ) {
    Serial.println("  +++++++++++++++++++++++++++++++++");
  }
  if (751 < a && a < 800 ) {
    Serial.println("  ++++++++++++++++++++++++++++++++++++");
  }
  if (801 < a && a < 900 ) {
    Serial.println("  +++++++++++++++++++++++++++++++++++++++");
  }
  if (901 < a && a < 1023 ) {
    Serial.println("  ++++++++++++++++++++++++++++++++++++++++++");
  }
}

 

 

 

반응형