Esp32 Arduino 读取sd卡 的文件图片

本文介绍了作者在使用ESP32 Arduino读取SD卡上的图片文件时遇到的问题及解决过程。通过运行示例代码,作者发现文件路径的表示方式是问题的关键,即文件名应包含在路径中,例如"/arduino.jpg"。添加斜杠后成功读取文件,强调了编程中的细心和对边界问题的理解的重要性。
摘要由CSDN通过智能技术生成

照例,
https://randomnerdtutorials.com/esp32-microsd-card-arduino

老外写的很详细的帖子 ,读取sd卡。很详细,琢磨一下就弄懂了,全文完。

哎呀,这个microByte 玩了有段时间了。怎么也要把读取sd卡,显示图片,和连上网搞起来呀……
我就一一利用现成的例程程序搭建好图片显示代码。

在使用sd卡读取文件的时候,串口总是提示 sd卡初始化成功,但是读取文件失败,找不到文件。岂有此理。提示,不是fat/fat32 格式问题 ,也不是esp32 接口问题(这个问题卡了两天)

我是怎么发现的呢!第一,使用esp32 例程SD_Test 运行起来显示 sd卡空间大小 使用情况。这就是说程序运行正确
在这里插入图片描述
第二,读了老外的帖子。又运行一下

特意在代码里添加读取test.txt

listDir(SD, “/”, 0);
createDir(SD, “/mydir”);
listDir(SD, “/”, 0);
removeDir(SD, “/mydir”);
listDir(SD, “/”, 2);
writeFile(SD, “/hello.txt”, "Hello ");
appendFile(SD, “/hello.txt”, “World!\n”);
readFile(SD, “/hello.txt”);
readFile(SD,”test.txt”);//←就是这一行
deleteFile(SD, “/f

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要实现ESP32S3读取SD卡音频文件并通过I2S输出,您可以按照以下步骤进行: 1. 首先,您需要在ESP32S3上连接一个SD卡模块,并使用SD卡库来读取音频文件。您可以使用ESP32官方的SD卡库或者其他第三方库来实现。 2. 接下来,您需要配置I2S输出。您可以使用ESP32官方的I2S库来设置I2S输出参数,如采样率、位深度等。 3. 一旦您成功读取了音频文件并设置了I2S输出参数,您就可以开始将音频数据写入I2S缓冲区并输出音频信号了。您可以使用I2S库的write函数来将音频数据写入I2S缓冲区。 下面是一个示例代码,用于读取SD卡中的音频文件,并通过I2S输出: ```c #include <Arduino.h> #include <SD.h> #include <driver/i2s.h> #define SD_CS 5 #define I2S_BCK 26 #define I2S_WS 25 #define I2S_DO 27 File audioFile; void setup() { Serial.begin(115200); // 初始化SD卡 if (!SD.begin(SD_CS)) { Serial.println("SD Card initialization failed!"); return; } // 配置I2S输出 i2s_config_t i2sConfig = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX), .sample_rate = 44100, .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, .communication_format = I2S_COMM_FORMAT_I2S_MSB, .dma_buf_count = 8, .dma_buf_len = 64, .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, .tx_desc_auto_clear = true, }; i2s_pin_config_t pinConfig = { .bck_io_num = I2S_BCK, .ws_io_num = I2S_WS, .data_out_num = I2S_DO, .data_in_num = I2S_PIN_NO_CHANGE }; i2s_driver_install(I2S_NUM_0, &i2sConfig, 0, NULL); i2s_set_pin(I2S_NUM_0, &pinConfig); // 打开音频文件 audioFile = SD.open("/test.wav"); if (!audioFile) { Serial.println("Failed to open audio file!"); return; } Serial.println("Begin playing audio..."); } void loop() { static uint8_t buffer[1024]; static int bytesRemaining = audioFile.size(); static int bytesRead = 0; // 从SD卡读取音频数据 int bytesToRead = min(sizeof(buffer), bytesRemaining); int bytesRead = audioFile.read(buffer, bytesToRead); bytesRemaining -= bytesRead; // 将音频数据写入I2S缓冲区并输出 i2s_write(I2S_NUM_0, buffer, bytesRead, portMAX_DELAY); // 如果音频文件已经播放完毕,则关闭文件并停止I2S输出 if (bytesRemaining <= 0) { audioFile.close(); i2s_driver_uninstall(I2S_NUM_0); Serial.println("Audio playback complete!"); while (1) delay(1000); // 停止执行 } } ``` 需要注意的是,以上示例代码仅供参考,实际使用时您需要根据自己的需求进行修改。另外,由于ESP32S3的I2S输出引脚与ESP32不同,请根据实际情况修改示例代码中的引脚定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值