電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>實(shí)時(shí)SD卡故障檢測(cè)系統(tǒng)

實(shí)時(shí)SD卡故障檢測(cè)系統(tǒng)

2022-12-13 | zip | 0.28 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

在某些系統(tǒng)上,例如 3D 打印機(jī),存儲(chǔ)卡用于保存打印文件。因此,在打印開始和打印過(guò)程中檢查存儲(chǔ)卡連接非常重要。

因此,在任何連接或卡故障的情況下,系統(tǒng)必須能夠檢測(cè)到故障并在系統(tǒng)LCD 屏幕上通知用戶

除了 3D 打印機(jī),這種方法還可以用于任何使用存儲(chǔ)卡的系統(tǒng)或設(shè)備。

因此,我們提出了一個(gè)電路來(lái)測(cè)試解決方案,如圖 1 所示。

接下來(lái),我們將創(chuàng)建并解釋一種算法,用于在系統(tǒng)執(zhí)行過(guò)程中檢測(cè)存儲(chǔ)卡的故障或未連接。

?
poYBAGOX2qeAWBQCAAGJoFEsmGM529.png
圖 1 - 溶液測(cè)試電路。
?

項(xiàng)目發(fā)展

構(gòu)建代碼的邏輯非常簡(jiǎn)單。我們需要在開始(void setup 函數(shù))和代碼執(zhí)行期間(循環(huán)函數(shù)內(nèi)部)檢查卡是否已連接。

如果未檢測(cè)到卡,則必須在LCD屏幕上輸入一條消息以通知用戶,如圖 2 所示。

?
pYYBAGOX2rSAOp7yAAF1RwSB_XE687.jpg
圖 2 - 失敗或卡斷開的消息。
?

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

?
pYYBAGOX2ryASFdEAAFgREFtJhc88.jpeg
圖 3 - 已連接消息卡。
?

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

?
pYYBAGOX2suAQ2SbAAF4biKskck54.jpeg
圖 4 - 用戶按下按鈕以啟動(dòng)存儲(chǔ)過(guò)程的消息。
?

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

?
?
?
?
pYYBAGOX2s-AeCH3AAFG-iI6eUg36.jpeg
?
1 / 2 ?圖 5 - (1) 存儲(chǔ)數(shù)據(jù)的消息和 (2) 成功完成的消息。
?

在所有這些過(guò)程之后,系統(tǒng)回到循環(huán)的開始并再次啟動(dòng)所有邏輯。

此后,我們將介紹和討論為解決該問(wèn)題而開發(fā)的代碼。

編程邏輯

根據(jù)下面的代碼,插入了所用元素的庫(kù):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;

在這個(gè)代碼塊之后,我們將在下面展示 void 循環(huán)函數(shù)。可以看到,Display LCD和 Serial 已初始化。之后,進(jìn)行了第一次測(cè)試以驗(yà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");
}

有一個(gè) do-while 循環(huán)來(lái)驗(yàn)證SD 卡。在此過(guò)程中,系統(tǒng)會(huì)對(duì) SD 卡進(jìn)行初始化。如果初始化過(guò)程正常發(fā)生,那么SD卡就沒(méi)有問(wèn)題了。但是,如果出現(xiàn)任何問(wèn)題,系統(tǒng)將初始化SD 卡。

這種方式將在顯示 LCD中顯示“失敗或卡斷開”消息,并且變量 SDCardTest 將接收值 0。該變量將用于控制循環(huán)執(zhí)行。

解決問(wèn)題并重新連接SD卡后,將顯示消息“按下按鈕存儲(chǔ)數(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)以驗(yàn)證我們的用戶是否按下了按鈕。在要讀取的按鈕之后,有以下情況:

if(LCDControl == 0)
{
  lcd.setCursor(0,0);
  lcd.print("Press the button");
  lcd.setCursor(1,1);
  lcd.print("To store data");
  LCDControl = 1;
}

此條件用于允許“按下按鈕存儲(chǔ)數(shù)據(jù)”消息僅顯示一次。這可以防止文本多次顯示,并可能在屏幕上產(chǎn)生奇怪的效果。

之后,如果按下按鈕,文件將打開,10 個(gè)值將保存在SD 卡中,隨后出現(xiàn)“Finishing Successfully”消息,通知該過(guò)程完成。

最后,文件將被關(guān)閉。因此,系統(tǒng)將多次驗(yàn)證SD 卡

致謝

感謝PCBWay支持我們的 YouTube 頻道并生產(chǎn)和組裝質(zhì)量更好的 PCB。

Silícios 實(shí)驗(yàn)室感謝UTSOURCE提供電子元件。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)