Untitled
unknown
c_cpp
2 years ago
2.9 kB
6
Indexable
Чтобы добавить ограничение на общее время записи в 15 секунд, вам нужно включить дополнительную проверку времени в основной цикл записи. Это гарантирует, что запись прекратится, если общее время записи достигнет 15 секунд, даже если в это время идет речь.
Давайте модифицируем предыдущий код, добавив условие для ограничения общего времени записи:
```cpp
#include <SD.h>
#include <SPI.h>
const int chipSelect = 4; // Пин CS для SD-карты
const int micPin = A0; // Пин подключения микрофона
const int silenceThreshold = 20; // Пороговое значение для детектирования тишины
const unsigned long maxSilenceDuration = 3000; // Максимальная продолжительность тишины (3 секунды)
const unsigned long maxRecordingTime = 15000; // Максимальное время записи (15 секунд)
void setup() {
Serial.begin(9600);
pinMode(micPin, INPUT);
if (!SD.begin(chipSelect)) {
Serial.println("Ошибка инициализации SD-карты");
return;
}
File dataFile = SD.open("audio.txt", FILE_WRITE);
if (dataFile) {
unsigned long silenceStart = 0;
unsigned long recordingStart = millis();
bool isSilent = false;
while (true) {
if (millis() - recordingStart > maxRecordingTime) {
break; // Прекращаем запись после 15 секунд
}
int micValue = analogRead(micPin);
dataFile.println(micValue);
if (micValue < silenceThreshold) {
if (!isSilent) {
isSilent = true;
silenceStart = millis();
} else if (millis() - silenceStart > maxSilenceDuration) {
break; // Прекращаем запись после 3-5 секунд тишины
}
} else {
isSilent = false;
}
delay(10); // Задержка для контроля частоты дискретизации
}
dataFile.close();
} else {
Serial.println("Ошибка открытия файла");
}
}
void loop() {
// Ничего не делаем в loop
}
```
Этот код теперь учитывает два условия для завершения записи: превышение максимального времени тишины (3-5 секунд) и превышение общего времени записи (15 секунд). Таким образом, запись будет остановлена, если любое из этих условий будет выполнено.Editor is loading...
Leave a Comment