1. 程式人生 > >Arduino Uno SD卡模組 (二)讀取檔案

Arduino Uno SD卡模組 (二)讀取檔案

實驗效果

SD 卡根目錄裡有個文字檔案 LingShunLAB.txt    實驗就是要開啟它並且讀取裡面的資料 裡面的內容如下: hello world     by LingShunLAB 在串列埠中顯示文字內容


問題與注意

SDFat 庫並不支援長檔名字,所以在程式中有要讀取LingShunLAB.txt 這麼長的檔名的時候,正確的開啟方式是

LINGSH~1.TXT

BOM表

Arduiino Uno *1

SD卡模組  *1

SD卡   *1

調線若干

接線

Arduino Uno   <----->   Sd Card 模組

       GND          <----->           GND

        5V            <----->             +5

       CS            <----->            Pin 4

      MOSI         <----->           Pin 11

        SCK        <----->            Pin 13

      MISO         <----->           Pin 12

詳細請參照 文章 Arduino Uno SD卡模組 (一)獲取SDcard的資訊 

開源程式

這個實驗還是需要下載庫

具體如何操作,再次說一下,下載解壓到Arduino IDE的安裝路徑裡的庫資料夾libraries    

庫裡提供了很多SD卡模組示例程式,可以多多參考


//載入SPI庫和SD庫
#include <SPI.h>
#include <SD.h>

//宣告檔案物件
File myFile;

void setup() 
{
    Serial.begin(9600); //設定波特率
    while (!Serial) 
    {
    ; // wait for serial port to connect. Needed for native USB port only
      //等待串列埠連線。 僅適用於本機USB埠
    }
    
    Serial.print("Initializing SD card...");//正在初始化

    //如果返回4則初始化失敗
    if (!SD.begin(4)) {
      Serial.println("initialization failed!");
      return;
    }
    Serial.println("initialization done.");//初始化結束

    myFile = SD.open("LINGSH~1.TXT");//開啟指定檔案
    if (myFile) {
      Serial.println("LingShunLAB.txt:");//串列埠輸出test。txt
      Serial.println("↓↓↓↓");//串列埠輸出↓↓↓↓
      // read from the file until there's nothing else in it:
      //從檔案中讀取,直到沒有其他內容
      while (myFile.available()) {
        Serial.write(myFile.read());//不斷迴圈讀取直到沒有其他內容
      }
      // close the file:
      //關閉檔案
      myFile.close();
  } else {
    // if the file didn't open, print an error:
    //如果檔案沒有開啟,列印錯誤:
    Serial.println("error opening test.txt");
  }
}

void loop() {
  

}


程式實現思路解讀

1

//載入SPI庫和SD庫
#include <SPI.h>
#include <SD.h>

2
//宣告檔案物件
File myFile;

3

myFile = SD.open("LINGSH~1.TXT");//開啟指定檔案

4

    if (myFile) {
      Serial.println("LingShunLAB.txt:");//串列埠輸出test。txt
      Serial.println("↓↓↓↓");//串列埠輸出↓↓↓↓
      // read from the file until there's nothing else in it:
      //從檔案中讀取,直到沒有其他內容
      while (myFile.available()) {
        Serial.write(myFile.read());//不斷迴圈讀取直到沒有其他內容
      }
      // close the file:
      //關閉檔案
      myFile.close();
  } else {
    // if the file didn't open, print an error:
    //如果檔案沒有開啟,列印錯誤:
    Serial.println("error opening test.txt");
  }