Untitled
unknown
c_cpp
a year ago
2.9 kB
3
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