SD記憶卡積木

SD記憶卡是電腦常用的延伸儲存裝置,Arduino、7697、ESP32、ESP8266透過SD記憶卡讀取模組,便可以將SD卡當做資料儲存裝置,或是讀取資料。新完成的「SD記憶卡積木」主要分為兩類,一類是資料夾管理,另一類則是檔案處理的積木。要使用「SD記憶卡」積木,吉哥積木要先升級到20210623之後的版本才可以正常使用。

SD記憶卡模組可在許多電子零件商行買得到,如果不想買,可以把microSD轉SD的轉卡,焊上七根排針,也可以當做記憶卡模組。

市面上買的記憶卡模組,SPI界面。

microSD轉SD的轉卡焊上七根排針,也可以當做記憶卡模組

7697、ESP32以及ESP8266與SD卡的腳位連接圖:

7697的SD卡連接腳位

ESP32的SD卡連接腳位

NodeMCU(ESP8266)的SD卡連接腳位

範例一:建立資料夾及刪除資料夾

  1. 要使用SD記憶卡,要先使用「SD記憶卡 初始化」積木才能開始使用。

  2. 接下來判斷SD記憶卡是否啟動成功,啟動成功才能進行建立資料夾或刪除資料夾的動作。

  3. 建立資料夾「/ABC」、「/DEF」、「/aa/kk/dd/ff」,注意,資料夾名稱要符合8+3的規格,盡量不要用中文,而且要用「絕對路徑」的表示法。資料夾「/aa/kk/dd/ff」在建立時,如果中間的資料夾路徑不存在,會自動幫它建立中間的資料夾。

  4. 等待一秒後,會刪除「/ABC」這個資料夾。刪除資料夾時,如果資料夾裡有檔案或是資料夾,那麼便不會刪除。也就是說只有空的資料夾才可以被刪除

範例二:將感測資料儲存到SD記憶卡

這個範例將開發板感測到的資料,儲存到SD卡的「/record/record1.csv」。

  1. 連上WIFI,主要是要透過網路取得現在的正確時間,並設定要開發板(在這個例子是ESP32)的RTC。

  2. SD記憶卡初始化後,判斷如果SD卡啟動成功,便先建立「/record」這個資料夾,並宣告一個檔案變數叫做「myFile」,變數名稱可以更改,但更改後的變數名稱在之後的積木都必須設定成這個名稱

  3. 命令檔案變數「myFile」去開啟「/record/record1.csv」檔,,csv格式的檔是個文字檔,可以由excel讀取這個文字檔成為試算表。檔案開啟的方式有三種模式:唯讀、覆寫(不管檔案原有什麼,一律覆蓋成新檔)、新增(不管原有檔案是什麼,接下來寫入的內容都連接在檔案尾端)。

  4. 判斷檔案myFile是否開啟成功,若能成功開啟,便寫入一行文字「時間,光感A,光感B,溫度」當做excel的標題,標題的欄位名稱中間以一個半型的逗號「,」隔開。

  5. 接下來在重複執行判斷myFile是否開啟成功,若成功開啟,便將感測值組合成一行文字,寫入檔案中。每個感測值中間以一個半型的逗號「,」隔開。

使用記事本開啟SD卡的/record/record1.csv檔案,內容會長成這個樣子

使用Excel開啟SD卡的/record/record1.csv檔案,內容會長成這個樣子

範例三:從記憶卡讀取資料,並顯示在OLED上

在SD卡上的/record資料夾,建立一個color.txt這個檔案,裡面每一行有三個數字,這三個數字會被開發板讀取,並設定給RGB的LED燈,這三個數字便代表紅色、綠色、藍色的數值。開發板讀取之後設定到板子上的RGB燈,顯示不同的顏色。

程式如下:

  1. 設定SD記憶卡初始化,如果有偵測到SD卡,並初始化成功,便宣告檔案變數「myFile」,變數名稱可以更改,但更改後的變數名稱在之後的積木都必須設定成這個名稱

  2. 重複執行,先判斷SD是否啟動成功。

  3. 如果SD有成功啟動,讓變數myFile以唯讀的方式讀取/record./color.txt這個文字檔。

  4. 再判斷myFile是否有成功讀取到檔案。

  5. myFile開始讀取檔案,當myFile沒有讀到檔案尾端,便以迴圈的方式,每讀到一個半型逗號「,」為終點讀取文字:

  6. 碰到逗號「,」便是紅色的值,將這個文字轉成數字後,交由變數red記住;碰到下一個逗號,便是綠色的值,將這個文字轉成數字後,交由變數green記住;碰到下一個逗號,便是色的值,將這個文字轉成數字後,交由變數blue記住

  7. 將變數red、green、blue的值,顯示在OLED上,並設定到RGB的燈色上,RGB燈的顏色便會隨著讀取到的數字更改,等待二秒。

  8. 跳出迴圈,代表檔案已讀到盡頭,將myFile關閉。

程式結果:

讀取到第一行的RGB值

讀取到第行的RGB值

讀取到第行的RGB值