37款傳感器與執(zhí)行器的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟?,以學(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手嘗試系列實(shí)驗(yàn),不管成功(程序走通)與否,都會(huì)記錄下來(lái)—小小的進(jìn)步或是搞不掂的問(wèn)題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
第三項(xiàng)實(shí)驗(yàn):用合成DTMF雙音多頻信號(hào)測(cè)試咪頭傳感器和DTMF解碼模塊
Arduino實(shí)驗(yàn)開源代碼
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
第三項(xiàng)實(shí)驗(yàn):用合成DTMF雙音多頻信號(hào)測(cè)試咪頭傳感器和DTMF解碼模塊
1、安裝 "dtmf"庫(kù): 下載https://codeload.github.com/DFRobot/DTMF/zip/master
2、需要材料:喇叭1個(gè),68Ω電阻兩個(gè),咪頭傳感器和DTMF解碼模塊,兩塊UNO板
3、合成信號(hào)硬件連接:在D11,D12引腳各接一個(gè)68Ω電阻一端,68Ω電阻另一端接喇叭,然后喇叭另一端接地。
4、咪頭模塊接線:
MAX9814 Arduino
VCC 5V
GND GND
OUT IN(接到DTMF)
5、DTMF解碼模塊接線
DTMF Arduino
VCC 5V
GND GND
Q1 12
Q2 11
Q3 10
Q4 9
*/
#include "dtmf.h"
DTMF dtmf;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// 讀DTMF代碼并且用串行輸出
int myDtmf;
myDtmf = dtmf.getDTMF();
if (myDtmf != -1)
Serial.println(myDtmf);
delay(100); // 以避免收到重復(fù)的輸出。
}
DTMF解碼識(shí)別模塊實(shí)驗(yàn)視頻
https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html
打開"dtmf.h"庫(kù)文件查看,發(fā)現(xiàn)是針對(duì)不同硬件模塊的(板上芯片都是MT8870),由于接腳對(duì)不上號(hào),故串口輸出的解碼不對(duì)的
制作簡(jiǎn)易錄音機(jī)
1、下載安裝TMRpcm庫(kù),地址https://github.com/TMRh20/TMRpcm
https://gitee.com/hu1023/TMRpcm
2、解壓縮后,打開文件夾,用記事本打開pcmConfig.h
3、TMRpcm里面還有一個(gè)用于錄音的方法,源碼中是被注釋掉的,在安裝該庫(kù)之后需要打開源碼庫(kù)中的pcmConfig.h文件將以下的行取消注釋,否則會(huì)編譯不通過(guò):
#define buffSize 128 //must be an even number
#define ENABLE_RECORDING // Amount of space to pre-allocate for recording
#define BLOCK_COUNT 10000UL // 10000 = 500MB 2000 = 100MB
保存,然后手動(dòng)添加該庫(kù)。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
項(xiàng)目:MAX9814簡(jiǎn)易錄音機(jī)
接線:MAX9814接A0
MicroSD uno
CS-------------10
MOSI(DI)------11
MISO(DO)------12
CLK------------13
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
項(xiàng)目:MAX9814簡(jiǎn)易錄音機(jī)
接線:MAX9814接A0
MicroSD uno
CS-------------10
MOSI(DI)------11
MISO(DO)------12
CLK------------13
*/
#define buffSize 128 //must be an even number
#define ENABLE_RECORDING // Amount of space to pre-allocate for recording
#define BLOCK_COUNT 10000UL // 10000 = 500MB 2000 = 100MB
#include <SD.h>
#include <SPI.h>
#include <TMRpcm.h>
#define SD_ChipSelectPin 10
TMRpcm audio; // 創(chuàng)建一個(gè)用于此程序的對(duì)象
void setup() {
audio.speakerPin = 4;
Serial.begin(115200);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD Fail");
return;
} else {
Serial.println("SD OK");
}
// 音頻庫(kù)需要知道使用哪個(gè) CS pin 進(jìn)行錄音
audio.CSPin = SD_ChipSelectPin;
}
void loop() {
if (Serial.available()) { //通過(guò)串行發(fā)送命令進(jìn)行播放
char c = Serial.read();
Serial.println(c);
switch (c) {
case 'r': audio.startRecording("test.wav", 16000, A0); break; //在引腳 A0 上以 16khz 采樣率記錄
case 'R': audio.startRecording("test.wav", 16000, A0, 1); break; //錄音,但要直通到揚(yáng)聲器
case 't': audio.startRecording("test.wav", 16000, A0, 2); break; //不記錄, 直接輸出到揚(yáng)聲器
//注意:如果樣本在寫入前被丟棄,則
//在直通模式下不會(huì)被聽到
case 's': audio.stopRecording("test.wav"); break; //停止錄音
case 'p': audio.play("test.wav"); break; //播放錄音
case '=': audio.volume(1); break; //音量加1,不影響錄音
case '-': audio.volume(0); break; //音量減1,不影響錄音
case 'S': audio.stopPlayback(); break; //停止所有播放
}
}
}
Arduino實(shí)驗(yàn)場(chǎng)景圖
實(shí)驗(yàn)中使用串口命令,返回情況截圖
在電腦上打開TF卡,發(fā)現(xiàn)確有一個(gè)名為“test.wav”的錄音文件,直接播放該文件,聲音非常小,看來(lái)只是個(gè)簡(jiǎn)單的演示實(shí)驗(yàn)
直通小喇叭模式,聲音小的聽不到
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
程序:通過(guò)讀取MAX9814咪頭模塊輸入的電壓值來(lái)控制電平模塊的亮燈數(shù)量(0-5)
實(shí)驗(yàn)接線:MAX9814咪頭模塊OUT接Uno的A0,電平模塊接D6(pwm)
Arduino實(shí)驗(yàn)開源代碼
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)一百四十九:MAX9814麥克風(fēng)放大器模塊 MIC話筒聲音放大/咪頭傳感器
程序:通過(guò)讀取MAX9814咪頭模塊輸入的電壓值來(lái)控制電平模塊的亮燈數(shù)量(0-5)
實(shí)驗(yàn)接線:MAX9814咪頭模塊OUT接Uno的A0,電平模塊接D6(pwm)
*/
int levelModule = 6;
int readValue = 0; //保存讀到的模擬值
int ledValue = 0; //保存LED燈占空比
void setup() {
pinMode(levelModule, OUTPUT); //數(shù)字口要選擇帶~號(hào)的具有pwm功能的輸出口
}
void loop() {
readValue = analogRead(A0); //讀取A0模擬口的數(shù)值(0-5V 對(duì)應(yīng) 0-1024取值)
ledValue = map(readValue, 0, 1023, -1, 6);
// 將0到1024之間的數(shù)據(jù)映射成-1到6之間的數(shù)據(jù)
analogWrite(levelModule, ledValue); //PWM最大取值6
}
動(dòng)感節(jié)奏燈實(shí)驗(yàn)場(chǎng)景圖
使用MAX9814咪頭模塊的動(dòng)感節(jié)奏音樂(lè)旋律電平燈(測(cè)試視頻40秒)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-558354.html
https://v.youku.com/v_show/id_XNTE2OTUyMzgwOA==.html?spm=a2hcb.playlsit.page.1文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-558354.html
到了這里,關(guān)于【雕爺學(xué)編程】Arduino動(dòng)手做(149)---MAX9814咪頭傳感器模塊2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!