資料介紹
描述
介紹
在某些系統(tǒng)上,例如 3D 打印機(jī),存儲卡用于保存打印文件。因此,在打印開始和打印過程中檢查存儲卡連接非常重要。
因此,在任何連接或卡故障的情況下,系統(tǒng)必須能夠檢測到故障并在系統(tǒng)LCD 屏幕上通知用戶。
除了 3D 打印機(jī),這種方法還可以用于任何使用存儲卡的系統(tǒng)或設(shè)備。
因此,我們提出了一個電路來測試解決方案,如圖 1 所示。
接下來,我們將創(chuàng)建并解釋一種算法,用于在系統(tǒng)執(zhí)行過程中檢測存儲卡的故障或未連接。

項目發(fā)展
構(gòu)建代碼的邏輯非常簡單。我們需要在開始(void setup 函數(shù))和代碼執(zhí)行期間(循環(huán)函數(shù)內(nèi)部)檢查卡是否已連接。
如果未檢測到卡,則必須在LCD屏幕上輸入一條消息以通知用戶,如圖 2 所示。

這樣,用戶將卡片插入,系統(tǒng)將再次重新運(yùn)行,并顯示“卡片已連接!”的消息,如圖 3 所示。

系統(tǒng)驗證SD卡狀態(tài)后,系統(tǒng)將等待用戶按下按鈕,開始對10個ADC值在SD卡中的存儲處理。此時,它將顯示如圖 4 所示的消息。

用戶按下按鈕后,系統(tǒng)會在SD 卡中存儲 10 個單位的 ADC 值,并在屏幕上顯示信息:“正在存儲數(shù)據(jù)...”和“成功完成”,通知存儲過程結(jié)束。這些消息如下所示。

在所有這些過程之后,系統(tǒng)回到循環(huán)的開始并再次啟動所有邏輯。
此后,我們將介紹和討論為解決該問題而開發(fā)的代碼。
編程邏輯
根據(jù)下面的代碼,插入了所用元素的庫:LCD 顯示器、SD 卡并聲明了代碼的所有變量。
#include <SD.h>
#include <SPI.h>
#include <LiquidCrystal.h>
File myFile;
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define AnalogPin A0
int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO
int DigitalValue = 0;
byte samples = 0;
bool SDCardTest = 0, ControlState = 0, LCDControl = 0;
在這個代碼塊之后,我們將在下面展示 void 循環(huán)函數(shù)。可以看到,Display LCD和 Serial 已初始化。之后,進(jìn)行了第一次測試以驗證我們的SD 卡是否已連接或失敗。
void setup()
{
Serial.begin(9600); // Define BaundRate
lcd.begin(16, 2);
pinMode(pinoSS, OUTPUT); // Declara pinoSS como saída
delay(500);
lcd.clear();
do
{
if (SD.begin())
{ // Inicializa o SD Card
lcd.setCursor(6,0);
lcd.print("Card");
lcd.setCursor(3,1);
lcd.print("Connected!");
delay(2000);
SDCardTest = 1;
}
else
{
lcd.clear();
Serial.println("imprimindo segunda mensagem de erro.");
lcd.setCursor(1,0);
lcd.print("Failed or Card");
lcd.setCursor(2,1);
lcd.print("disconnected");
SDCardTest = 0;
}
}while(SDCardTest == 0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Press the button");
lcd.setCursor(1,1);
lcd.print("To store data");
}
有一個 do-while 循環(huán)來驗證SD 卡。在此過程中,系統(tǒng)會對 SD 卡進(jìn)行初始化。如果初始化過程正常發(fā)生,那么SD卡就沒有問題了。但是,如果出現(xiàn)任何問題,系統(tǒng)將初始化SD 卡。
這種方式將在顯示 LCD中顯示“失敗或卡斷開”消息,并且變量 SDCardTest 將接收值 0。該變量將用于控制循環(huán)執(zhí)行。
解決問題并重新連接SD卡后,將顯示消息“按下按鈕存儲數(shù)據(jù)”。
在此之后,將執(zhí)行 void 循環(huán)函數(shù)中的命令。void 循環(huán)函數(shù)的代碼如下所示。
void loop()
{
bool Button = digitalRead(8);
if(LCDControl == 0)
{
lcd.setCursor(0,0);
lcd.print("Press the button");
lcd.setCursor(1,1);
lcd.print("To store data");
LCDControl = 1;
}
if(Button == 0 && ControlState == 1)
{
ControlState = 0;
}
if(Button == 1 && ControlState == 0)
{
myFile = SD.open("silicioslab.txt", FILE_WRITE); // Create/Open File the txt
delay(500);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Storing");
lcd.setCursor(4,1);
lcd.print("data...");
do
{
DigitalValue = analogRead(AnalogPin);
myFile.println(DigitalValue);
delay(400);
samples++;
}while(samples < 10);
samples = 0;
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Finished");
lcd.setCursor(2,1);
lcd.print("Successfully");
delay(2000);
myFile.close(); //Close file
LCDControl = 0;
ControlState = 0;
}
do
{
if (SD.begin())
{
SDCardTest = 1;
}
else
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Failed or Card");
lcd.setCursor(2,1);
lcd.print("disconnected");
SDCardTest = 0;
LCDControl = 0;
Serial.println("Verificando problema...");
}
}while(SDCardTest == 0);
}
在 void 循環(huán)函數(shù)中,將讀取按鈕的狀態(tài)以驗證我們的用戶是否按下了按鈕。在要讀取的按鈕之后,有以下情況:
if(LCDControl == 0)
{
lcd.setCursor(0,0);
lcd.print("Press the button");
lcd.setCursor(1,1);
lcd.print("To store data");
LCDControl = 1;
}
此條件用于允許“按下按鈕存儲數(shù)據(jù)”消息僅顯示一次。這可以防止文本多次顯示,并可能在屏幕上產(chǎn)生奇怪的效果。
之后,如果按下按鈕,文件將打開,10 個值將保存在SD 卡中,隨后出現(xiàn)“Finishing Successfully”消息,通知該過程完成。
最后,文件將被關(guān)閉。因此,系統(tǒng)將多次驗證SD 卡。
致謝
感謝PCBWay支持我們的 YouTube 頻道并生產(chǎn)和組裝質(zhì)量更好的 PCB。
Silícios 實驗室感謝UTSOURCE提供電子元件。
- SD卡2.0協(xié)議資料英文版 0次下載
- 基于SPI協(xié)議的SD卡讀寫說明 49次下載
- SD卡的99SE封裝庫免費(fèi)下載 43次下載
- SD卡的99SE封裝庫免費(fèi)下載 13次下載
- 使用單片機(jī)實現(xiàn)SD卡讀寫的資料和程序免費(fèi)下載
- SD卡資料 8次下載
- 28335實用版SD卡文件系統(tǒng)實驗 0次下載
- 基于SD卡的FATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉 40次下載
- 51單片機(jī)與SD卡接口設(shè)計
- SD卡要點說明 266次下載
- SD卡分類簡介
- SD卡命令解釋
- sd卡-mmc卡-CPU說明資料
- 基于SD卡的駕駛行為再現(xiàn)存儲系統(tǒng)設(shè)計
- sd卡量產(chǎn)工具,下載
- 貼片式SD卡功能介紹【MK SD NAND】 851次閱讀
- sd卡是什么有什么用途 TF卡和SD卡有什么區(qū)別 5589次閱讀
- sd卡是什么有什么用途 TF卡和SD卡有什么區(qū)別 5769次閱讀
- SD卡的分類以及常見屬性 6273次閱讀
- TF卡和SD卡的區(qū)別有哪些? 1w次閱讀
- 怎么通過FPGA采取SD模式實現(xiàn)Micro SD卡的驅(qū)動 2323次閱讀
- 如何移植FatFs文件系統(tǒng)到SD卡內(nèi) 1889次閱讀
- SD/micro SD存儲卡介紹 1915次閱讀
- fireflyROC-RK3328燒寫SD卡介紹 3515次閱讀
- 干貨 | SD卡/TF卡的PCB布局布線設(shè)計要求 2.5w次閱讀
- 基于μC/OS-II的SD卡文件系統(tǒng)的設(shè)計與實現(xiàn) 1480次閱讀
- spi讀取sd卡數(shù)據(jù)例程 9063次閱讀
- 單片機(jī)讀取sd卡數(shù)據(jù)_51單片機(jī)讀寫SD卡程序詳解 2.3w次閱讀
- 基于DSP和SD卡的生理信號數(shù)據(jù)采集系統(tǒng)設(shè)計 3729次閱讀
- mmc卡和sd卡的區(qū)別是什么 4.7w次閱讀
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 12次下載 | 4 積分
- 2世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 3電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電流檢測芯片F(xiàn)P135應(yīng)用說明
- 1.24 MB | 3次下載 | 免費(fèi)
- 6全面解讀被動式與主動式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7HC88L051F4低功耗芯片規(guī)格書
- 4.76 MB | 1次下載 | 免費(fèi)
- 8CIU32D655x5數(shù)據(jù)手冊
- 2.14 MB | 1次下載 | 免費(fèi)
本月
- 1常用電子元器件使用手冊
- 2.40 MB | 52次下載 | 免費(fèi)
- 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 3PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 12次下載 | 4 積分
- 4世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 5電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 6USB拓展塢PCB圖資料
- 0.57 MB | 11次下載 | 免費(fèi)
- 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊
- 4.51 MB | 9次下載 | 免費(fèi)
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊
- 0.70 MB | 9次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
評論