【雕爷学编程】Arduino动手做(52)---MicroSD卡读写模块4

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验五十二:SPI接口Micro SD卡模块 TF卡读写卡器 (带电平转换芯片)

在这里插入图片描述

Micro SD卡读写模块的实验环境
1、Micro SD卡读写模块实验所需硬件清单
1G与4GTF卡X2
8Ω 0.5W小喇叭X1
Micro SD卡读卡器X2
Arduino Uno开发板 X1
Micro SD卡读写模块X2
DHT11 温度湿度模块X1
杜邦线 若干(备了9条)
LED发光二极管(蓝色)X1
Proto Shield原型扩展板(带mini面包板)X1

在这里插入图片描述

2、传感器模块实验所需软件平台
代码编程 Arduino IDE (版本1.8.19)
仿真编程 Linkboy (版本V4.6.3)
图形编程 Mind+ (版本 V1.7.0 RC2.0)
以及编玩边学(线上平台https://ide.codepku.com/?type=Arduino)

3、Arduino – SD库
自带的SD库实现了Arduino对SD卡的读取和写入。它基于William Greiman的SdFat 库进行开发。SD库在标准SD卡和SDHC卡上支持FAT16和FAT32文件系统模式。

使用SD库中函数里参数可以包含以正斜杠/分隔的路径,例如" directory / filename.txt"。由于工作目录始终是SD卡的根目录,因此无论文件名是否包含斜杠,其名称都指向同一文件(例如," / file.txt"等同于" file.txt")。从1.0版开始,SD库支持打开多个文件。

开发板与SD卡之间的通信使用SPI,注意:
必须连接SS引脚来选择SD卡。在UNO上,SS默认是为引脚D10,在MEGA2560上SS默认为引脚53,或着您也可以在SD.begin()函数中指定一个SS引脚并与之连接。请注意,在您自定义了SS引脚之后,请设置该引脚为输出模式,否则SD库无法正常工作。

3、实验接线示意图
Pin VCC ===> 5V Arduino
Pin GND ===> GND Arduino
Pin MOSI ===> Pin 11 Arduino
Pin MISO ===> Pin 12 Arduino
Pin SCK ===> Pin 13 Arduino
Pin CS ===> Pin 10 Arduino

在这里插入图片描述

5、实验说明
(1)将实验模块直接插到 Arduino uno 主板上,确保 Micro SD 卡已格式化为 FAT16 或 FAT32格式,并将其插到 Micro SD 卡读写模块上。
(2)用 6 根杜邦线将 Micro SD 卡模块与Arduino uno 主板的 SPI 接口连接起来,如上图所示。
(3)用mini USB将Arduino uno连接起来,如果是首次使用该主板,其USB转串口驱动可从Arduino的IDE目录下的drivers找到USB Drivers。
(4)Micro SD卡读写的相关程序可使用Arduino IDE自带的程序,目录是
…\Arduino-1.8.19\libraries\SD。重新打开Arduino IDE,点击工具栏的Open按钮,打开SD中的例程,需要注意的是片选信号脚应改成实际连接到模块的片选脚,在本实验中选择D10。
(5)选好串口、板子名称,点击烧录按钮,即可烧录。该例程展示的是如何读取 Micro SD 卡的信息,包括卡的类型、文件系统类型、存储容量,也列出卡中的文件名称。点击 Serial Monitor即可查看。

Micro SD卡读写模块的几个实验
程序一:读取Micro SD卡上123456.TXT的内容
(1)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序一:读取Micro SD卡上123456.TXT的内容
  实验接线:
  Micro SD      UNO
  CS-------------10
  MOSI(DI)------11
  MISO(DO)------12
  CLK------------13
*/

#include <SPI.h>
#include <SD.h>

File myFile;// 创建File实例化对象

void setup() {
  Serial.begin(9600);// 初始化硬件串口并设置波特率为9600
  while (!Serial)
  {
    ; // 等待串口连接, 仅使用本地 USB 端口
  }
  Serial.print("正在初始化 SD 卡...");
  //注意,必须将CS引脚设置为输出模式,否则SD库功能将不起作用。
  //此处将10引脚作为CS并设置为输出OUTPUT模式
  // pinMode(cs, OUTPUT);
  if (!SD.begin(10)) {
    Serial.println("初始化失败!");
     // 如卡不存在,则不要再做任何事情,初始化失败
    return;
  }
  Serial.println("初始化完成。");
  //打开文件。 请注意,一次只能打开一个文件
  //您必须先关闭该文件再打开另一个文件。
  myFile = SD.open("123456.TXT");
  // 如果文件可用,读取SD卡记事本123456上的内容
  if (myFile) {
    Serial.println("123456.txt:");
    Serial.println("↓↓↓↓");
    //从文件里读取数据并打印到串口,直到读取完成
    while (myFile.available())
    {
      Serial.write(myFile.read());
    }
    Serial.println(" ");
    Serial.println(" ");
    // 关闭文件打开状态
    myFile.close();
  } else
  {
    // 如果文件没有打开,弹出一个错误
    Serial.println("打开错误 123456.txt");
  }
}

void loop() {
}

(2)实验串口返回情况

在这里插入图片描述
(3)实验场景图

在这里插入图片描述

程序二:使用UNO和SD卡读取SD卡根目录的内容
(1)电脑上打开SD卡

在这里插入图片描述

(2)Arduino参考开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序二:使用UNO和SD卡读取SD卡根目录的内容
  实验接线:
  Micro SD      UNO
  CS-------------10
  MOSI(DI)------11
  MISO(DO)------12
  CLK------------13
*/

#include <SPI.h>
#include <SD.h>

// 创建File实例化对象
File myFile;

void setup() {
  // 初始化硬件串口并设置波特率为9600
  Serial.begin(9600);
  while (!Serial)
  {
    ; //等待串口连接,仅使用本地 USB 端口
  }

  Serial.print("正在初始化 SD 卡...");

  if (!SD.begin())
  {
    Serial.println("初始化失败!");
    return;
  }
  Serial.println("初始化完成。");

  //打开文件。 请注意,一次只能打开一个文件
  //您必须先关闭该文件再打开另一个文件。
  myFile = SD.open("/");

  printDirectory(myFile, 0);

  Serial.println("完毕!");
}

void loop() {
}

void printDirectory(File dir, int numTabs)
{
  while (true)
  {

    File entry = dir.openNextFile();
    if (!entry)
    {
      // 如果没有文件则跳出循环
      break;
}

    for (uint8_t i = 0; i < numTabs; i++)
    {
      Serial.print('\t');
    }
Serial.print(entry.name());

    if (entry.isDirectory())
    {
      Serial.println("/");
      printDirectory(entry, numTabs + 1);
    }
    else
{

      // 文件会有大小,文件夹则不打印大小
      Serial.print("\t\t");
      Serial.println(entry.size(), DEC);
    }
    entry.close();
  }
}

(3)实验串口返回情况

在这里插入图片描述
程序三:读取SD卡根目录的内容
(1)实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述
(2)实验串口返回情况

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值