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的信息 

 

 

开源程序

 

这个实验还是需要下载库

下载地址: https://github.com/greiman/SdFat

具体如何操作,再次说一下,下载解压到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");
  }

本教程提供了使用基于WIZ5500的以太网屏蔽与Arduino兼容的基础知识。 Wiznet WIZ5500是一款现代以太网接口芯片,用于Adafruit的Ethernet Shield W5500和Feather Ethernet Wing。 屏蔽外形适用于基于ATmega328的Arduino兼容产品,如Arduino Uno R3和Adafruit Metro 328(Classic)。屏蔽包含用于网络的以太网连接和用于存储数据的SD插槽。 羽翼可与带有SD插槽的羽毛配合使用。 Feather 32u4 Adalogger拥有Arduino Leonardo兼容32u4处理器和micro-SD插槽。通过以太网羽翼,它在更小的封装中提供与Ethernet Shield + Metro / Uno相同的功能。 SD和micro-SD对于所有目的都是相同的,但后者更小。在本教程中,当它表示对SD执行某些操作并且您正在使用Feathers时,请考虑使用micro-SD。 本教程假设您已经了解Arduino IDE的基础知识,代码生成和Arduino接口。如果您对Arduino IDE不太熟悉,可以查看Adafruit Learn Arduino系列中的教程。 截至本修订教程的日期,Arduino指出他们的以太网盾已经退役。如果使用退役或第三方以太网屏蔽,则可能必须使用支持电路板使用的芯片组的不同Arduino库。请注意,Ethernet Shield和Feather Wing Adafruit使用的是基于WIZ5500芯片,而不是旧的WIZ5100芯片组或其他。 WIZ5500需要Ethernet2库,而不是Arduino上的旧以太网库。如果您使用较旧的硬件,请确保将库从Ethernet2更改为以太网并仔细检查。 本教程将通过准备然后使用SD,一般情况下读取上的文件。最后一个示例将说明如何通过以太网远程访问SD。此功能可能是远程文件存储或访问远程Arduino兼容的其他程序的基础。 SD准备 确保使用计算机将SD预格式化为FAT16。 FAT16很久以前就由微软推出,但它很简单,微控制器也很简单。 许多格式化程序支持FAT16。 Windows使用format命令支持FAT16本机。 建议您使用sdcard.org SD记忆格式化程序。 它适用于PC和Mac。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值