37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑑於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流爲目的,這裏準備逐一動手試試多做實驗,不管成功與否,都會記錄下來——小小的進步或是搞不掂的問題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
實驗五十二:SPI接口Micro SD卡模塊 TF卡讀寫卡器 (帶電平轉換芯片)
項目:製作簡易錄音機
1、下載安裝TMRpcm庫,地址https://github.com/TMRh20/TMRpcm
https://gitee.com/hu1023/TMRpcm
2、解壓縮後,打開文件夾,用記事本打開pcmConfig.h
3、TMRpcm裏面還有一個用於錄音的方法,源碼中是被註釋掉的,在安裝該庫之後需要打開源碼庫中的pcmConfig.h文件將以下的行取消註釋,否則會編譯不通過:
#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
保存,然後手動添加該庫。
【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)
實驗五十二:SPI接口Micro SD卡模塊TF卡讀寫卡器 (帶電平轉換芯片)
程序:MAX9814簡易錄音機
接線:MAX9814接A0
MicroSD uno
CS-------------10
MOSI(DI)------11
MISO(DO)------12
CLK------------13
/* 【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程) 實驗五十二:SPI接口Micro SD卡模塊TF卡讀寫卡器 (帶電平轉換芯片) 程序:MAX9814簡易錄音機 接線: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; // 創建一個用於此程序的對象 void setup() { audio.speakerPin = 4; Serial.begin(115200); if (!SD.begin(SD_ChipSelectPin)) { Serial.println("SD Fail"); return; } else { Serial.println("SD OK"); } // 音頻庫需要知道使用哪個 CS pin 進行錄音 audio.CSPin = SD_ChipSelectPin; } void loop() { if (Serial.available()) { //通過串行發送命令進行播放 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; //錄音,但要直通到揚聲器 case 't': audio.startRecording("test.wav", 16000, A0, 2); break; //不記錄, 直接輸出到揚聲器 //注意:如果樣本在寫入前被丟棄,則 //在直通模式下不會被聽到 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實驗場景圖
實驗中使用串口命令,返回情況截圖
在電腦上打開TF卡,發現確有一個名爲“test.wav”的錄音文件,直接播放該文件,聲音非常小,看來只是個簡單的演示實驗
直通小喇叭模式,聲音小的聽不到