Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Audio Playback - Source Code NOT compiled for: Arduino Nano ESP32 - Source Code created on: 2024-10-18 13:21:35 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* Play sound file from the sd card. Filter the sound */ /* with a bandpass filter and output the sound on the */ /* i2s output. */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include
#include
//https://github.com/greiman/SdFat #include
// Include I2S library for audio output /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); /***** DEFINITION OF SPI PINS *****/ const uint8_t player_SDCardModule_SPI_PIN_MOSI_D11 = 11; const uint8_t player_SDCardModule_SPI_PIN_MISO_D12 = 12; const uint8_t player_SDCardModule_SPI_PIN_SCLK_D13 = 13; const uint8_t player_SDCardModule_SPI_PIN_CS_D10 = 10; // I2S configuration #define I2S_NUM (0) // I2S port number #define I2S_SAMPLE_RATE (44100) // Sample rate #define I2S_CHANNELS (2) // Number of channels (stereo) #define I2S_BITS_PER_SAMPLE (I2S_BITS_PER_SAMPLE_16BIT) // Bits per sample /****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/ // Create an instance of the SdFat class SdFat SD; // Create an instance of the File class File myFile; void setup(void) { // Initialize Serial communication Serial.begin(9600); while (!Serial) {} // Initialize the SD card Serial.print("Initializing SD card..."); if (!SD.begin(player_SDCardModule_SPI_PIN_CS_D10)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); // Initialize I2S for audio output i2s_config_t i2s_config = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX), .sample_rate = I2S_SAMPLE_RATE, .bits_per_sample = I2S_BITS_PER_SAMPLE, .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, .communication_format = I2S_COMM_FORMAT_I2S, .intr_alloc_flags = 0, .dma_buf_count = 8, .dma_buf_len = 1024, .use_apll = false }; i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL); i2s_set_pin(I2S_NUM, NULL); // Use default pins // Open the sound file for reading myFile = SD.open("sound.wav"); // Ensure you have a sound file named "sound.wav" if (myFile) { Serial.println("Playing sound.wav..."); uint8_t buffer[512]; // Buffer to hold audio data size_t bytesRead; // Read from the file and write to I2S while ((bytesRead = myFile.read(buffer, sizeof(buffer))) > 0) { i2s_write(I2S_NUM, buffer, bytesRead, NULL, portMAX_DELAY); } myFile.close(); Serial.println("Finished playing sound."); } else { Serial.println("error opening sound.wav"); } } void loop(void) { // Nothing happens here }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)