아트메가/모듈들

아트메가를 사용하여 사운드 감지 센서 모듈 사용하기(NS-SDSM,LM393,FC-04)

원원 2017. 8. 7. 16:43

아트메가를 사용하여 사운드 감지 센서 이용하기(NS-SDSM,LM393,FC-04)


안녕하세요. 오늘은 사운드 감지 센서 모듈을 사용해보겠습니다.





이 사운드 감지 센서모듈은 사운드 감지 여부에따라 디지털 출력핀(OUT)에서 HIGH 혹은 LOW가 출력됩니다.

사운드가 감지되면 LOW가 출력되고 감지표시LED에 불빛이 들어옵니다.

사운드가 감지되지 않으면 HIGH가 출력되고 감지표시LED에 불빛이 들어옵니다.


사운드 감도는 가변저항(감도 설정)을 통하여 할 수 있습니다. 사진 기준 시계방향으로 가변저항을 돌리면 큰 소리에 반응하게 됩니다.



이 모듈을 아트메가128에 연결하여 사운드가 감지되면 ON/OFF되게 해보겠습니다.


방법1 I/O포트를 통하여 제어

방법2 외부인터럽트를 통하여 제어



방법 두가지의 공통 회로도입니다. PD0에 모듈의 OUT핀을 연결하였고 PB0에 LED를 연결하였습니다.





방법1 I/O포트를 통하여 제어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
 
 
 
int main(void)
{
  
   DDRD=0x00;
   PORTD=0xff;
   DDRB=0xff;
 
    while(1)
    {
         if(!(PIND & 0x01))
            PORTB=0xff;
        else
            PORTB=0x00;
    }
}






방법2 외부인터럽트를 통하여 제어

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
27
28
29
30
31
32
33
34
35
36
37
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
 
 
 
 
void init()
{
     DDRB=0xff;
}
 
void external_init(){
    DDRD=0x00;
    PORTD=0xff;
    EIMSK=0x01;
    EICRA=0x00;
    SREG=0x80;
}
 
SIGNAL(SIG_INTERRUPT0) //외부인터럽트
{
    PORTB=0xff;
 
}
 
int main(void)
{
   init();
   external_init();
  
    while(1)
    {
         PORTB=0x00;
    }
}

외부인터럽트 LOW신호시 LED가 켜진상태가 됩니다.                                                                                                                                           





모듈의 감도를 강하게 하여 사운드가 감지되면 LED가 켜지는것을 볼 수 있습니다.