37种传感器(六)之声音传感器模块+Stduino Nano&UNO
* _! S9 j5 v' Z+ s) N o7 V) f7 x m/ j5 h" U% V T8 K( ^
本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=28&extra=page%3D1=
9 c, b L( X$ [
; W' }4 s9 f0 s J' S [3 C
/ R3 m$ r" x* r: t9 P" m- R关键词:
3 t9 N6 j9 }4 y' O C51、stm32、arduino、stduino、单片机、stduino UNO&Nano、声音模块
' b6 l8 n. V L2 ?- S) Q/ U$ y. K' Q0 N
F3 B+ ~5 w0 [3 n; R5 Q8 H说明:, `: S O; [. G9 R4 o" [/ p9 n
声音传感器的作用相当于一个话筒(麦克风)。它用来接收声波,显示声音的振动图象,但不能对噪声的强度进行测量。传感器内置一个对声音敏感的电容式驻极体话筒。
. l8 s1 E; U0 i3 l# `/ }* t声波使话筒内的驻极体薄膜振动,导致电容的变化,而产生与之对应变化的微小电压。这一电压随后被转化成0-5V的电压,经过A/D转换被数据采集器接收。
# \+ X. w/ I: e7 T3 z+ E模块有两个输出,AO输出模拟量,实时输出麦克风两端电压值;当声音强度到达某个阈值时,DO引脚输出高电平信号,否则输出为低电平信号。(阈值可通过电位器调节)$ c$ a# J8 |3 m& M0 ~
# h& M8 |3 W$ L3 ]6 s2 H" \/ ^
& ?4 o! f, g& l. s' T' t* Z8 I
实验目的:/ F+ b$ s" C& r
检测声音
8 h- V# W2 @# d5 Z z! ?5 U, |
器材:% \7 }' p# P% ?
Stduino Uno/Nano;杜邦线;声音传感模块。 0 r) i( h6 g' C! ^' N
电路连接:
/ s6 \$ y2 d& K
4 h; L P) D* n# _/ _
代码展示:9 d" Z% e6 c: q; q* s/ n
- 数字输出:: f" O3 [! F- n, A6 @2 b4 s
- <font face="Arial">int LED = 13;
+ |" V1 _) F+ S2 f - int BUTTON = 8;//DO接口
9 V+ }2 m' l* z - int val;//数字变量val
; b- o, f) ], r: b. X - void setup()
4 O# y, z2 D! g q0 s2 D - {, S% z! N$ n, Y u$ G I, K+ l" X
- // put your setup code here, to run once:$ X" \. _, W$ z V: n* G& w
- pinMode(LED,OUTPUT);
' S1 ^# `8 _" v) ] - pinMode(BUTTON,INPUT);
, P* q# \6 ^! w8 g9 q. X: z9 M - }# q) ~- W0 {5 h5 Z
- void loop()' u+ H" |3 w+ E( D' K1 }) p( }
- {
3 O) C }; X$ ~' X1 s1 e2 \, i$ N( ? - // put your main code here, to run repeatedly:
+ e, G q4 r0 z! M. }% `0 D$ V - val=digitalRead(BUTTON);! j6 ?( D- U) C8 F* [5 t; m' m
- if(val ==HIGH)//当监测到有声音时,LED闪烁/ T* X: x( R# Q2 B. _. E
- {
: J: F5 U' h7 c - digitalWrite(LED,LOW);
4 y" s/ B3 t8 t% X" _# L - }% S% g, x; U3 V! U
- else p; p- p" Z/ E" l$ _& m! [/ V4 ]
- {
3 N/ q/ o1 r& C7 S! ~1 t e$ a, S - digitalWrite(LED,HIGH);
2 T% R: X7 R8 }( m - }5 K: f& m* C* x
- delay(1000);0 B; c- n- }7 x3 Y, [- Y" C- ?
- val = 0;
+ ]/ t' P) Z) S8 C& d# J/ V% c - }</font>) B3 F6 X3 Z3 D3 I1 a
复制代码
S9 @( R. `3 Z, Y) Y) _ @' S7 w8 {1 F0 C) A1 Y
- 模拟输出:) |$ ~$ Z$ x& _- a8 l& D
- <font face="Arial" size="3">int sensorPin = A0;//A0接口
4 e9 _9 j3 N8 P3 L( b - int ledPin = 13;
: W5 z8 W1 C( N( W6 } - int sensorValue = 0;//数字变量val
( O. Y1 p; D0 ~ L& k- c' M) g - void setup()
( Q% J" g4 H- ^. \ v+ E1 U. t2 h - {9 z! l) ]7 I* q9 a
- // put your setup code here, to run once:. u' q8 v" v1 m: o0 l: E; d
- pinMode(ledPin,OUTPUT);# ~$ Z6 n1 e1 T( _. v& w1 N! y
- pinMode(sensorPin,INPUT_ANALOG);# d, `/ _6 A3 u8 E' L
- Serial.begin(9600);
+ ?. Y; \( w/ y9 S9 c% d3 L - }
. b8 i! X4 m& E m2 l - void loop()
$ w8 e' X) A5 D* c' f - {5 Y# D" T# S1 D8 V7 [
- // put your main code here, to run repeatedly:
/ S! M2 v0 j* b' Y6 k - sensorValue=analogRead(sensorPin);
1 t7 P3 s" s$ A8 p5 Y' l - digitalWrite(ledPin,LOW);# e3 L% C. n4 W, U
- delay(sensorValue);
2 O% w7 |2 U: r' _# c' M - digitalWrite(ledPin,HIGH);1 H4 Z$ a, \! y- w! G5 V0 i) X; Y
- delay(sensorValue);
; D, L. s; U s - Serial.println(sensorValue);
: M. I+ y! h7 u" j - }</font>
复制代码 实验效果:
4 i5 x9 n3 v5 m
0 ?3 d' W2 a7 p! x1 P# U6 K! b% j
|