【雕爺學編程】Arduino動手做(52)---MicroSD卡讀寫模塊4

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”的錄音文件,直接播放該文件,聲音非常小,看來只是個簡單的演示實驗

 

直通小喇叭模式,聲音小的聽不到

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章