TextBufferCode
TextBufferCode
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#define I2S_DOUT 25
#define I2S_BCLK 27 // I2S
#define I2S_LRC 26
#define REC_BUTTON 21
#define PLAY_BUTTON 4
#define MIC_PIN 32
size_t byteCounter = 0;
uint32_t fileSize;
uint16_t sampleNum = 0, samplesWritten = 0, samplesArray16[128], sampleRead16;
uint8_t samplesArray8[256];
uint8_t samplesRead8[2];
bool isRecording = true, isPlaying = false, alternator = false;
char fileName[] = "/0004.wav";
void setup() {
pinMode(REC_BUTTON, INPUT_PULLUP);
pinMode(PLAY_BUTTON, INPUT_PULLUP);
//pinMode(SD_CS, OUTPUT);
//digitalWrite(SD_CS, HIGH);
//SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
Serial.begin(9600);
delay(1000);
if (!SD.begin(SD_CS)) {
Serial.println("SD card initialization failed.");
return;
}
Serial.println("SD card initialized.");
writeWavHeader(audioFile);
audioFile.close();
void loop() {
if (isRecording) {
samplesArray16[sampleNum] = micValue;
sampleNum++;
if (sampleNum == 128) {
bufferFile.write(samplesArray8, 256);
memset(samplesArray16, 0, sizeof(samplesArray16));
sampleNum = 0;
}
samplesWritten++;
}
delay(50);
if (digitalRead(REC_BUTTON) == LOW) {
Serial.println("Recording stopped!");
isRecording = false;
fileSizePrinter();
delay(50);
if (digitalRead(PLAY_BUTTON == LOW)) {
isPlaying = true;
Serial.println("Button pressed. Playing audio...");
playAudio();
}
}
}
void playAudio() {
audio1.connecttoFS(SD, "/0006.wav");
while(true) {
audio1.processLocalFile(30000000, 2);
delay(1000);
if (digitalRead(PLAY_BUTTON == LOW)) {
isPlaying = true;
Serial.println("Button pressed. Playing audio...");
playAudio();
}
}
}
/*uint8_t buf[4];
int16_t buf16[2];
size_t bytes_read;
while(true) {
audio1.playSample(buf16);
buf16[0] = ((buf16[0] & 0xff) - 128) << 8;
buf16[1] = ((buf16[1] & 0xff) - 128) << 8;
}*/
}
byteCounter += 2;
}
void fileSizePrinter() {
void headerSizeFiller() {
audioFile.seek(4);
audioFile.write((uint8_t*)&fileSize, 4); // File size placeholder
audioFile.seek(40);
audioFile.write((uint8_t*)&byteCounter, 4); // File size placeholder