Проблемы с воспроизведением wav звука c SD карты
- Войдите на сайт для отправки комментариев
Здравствуйте, я достаточно недавно увлекся электроникой и Ардуино и увидев проект светового меча от Alex Gyver https://alexgyver.ru/arduino-lightsaber/ решил сделать такой же.
Проблема с которой я столкнулся связанна с воспроизведением wav файлов с SD карточки.
Звук воспроизводится очень плохого качества, с лишним шумом, в общем очень далек от оригинала, плюс когда воспроизведение заканчивается динами продолжает шуметь, пищать что так же странно.
Было подозрение что усилитель создает этот шум, но без него звучит так же только тихо.
Для теста я написал простой скетч что бы проигрывать звуки включения и гудения светового меча.
Вот видео работы и фото моего макета https://photos.app.goo.gl/vISzMHqFaEKmPAvx1
Подскажите пожалуйста что может быть не так, что можно проверить? Или что по пробоваь изменить?
#include <SD.h> // need to include the SD library //#define SD_ChipSelectPin 53 //example uses hardware SS pin 53 on Mega2560 #define SD_ChipSelectPin 8 //using digital pin 4 on arduino nano 328, can use other pins #include <TMRpcm.h> // also need to include this library... #include <SPI.h> TMRpcm tmrpcm; // create an object for use in this sketch void setup(){ tmrpcm.speakerPin = 9; //5,6,11 or 46 on Mega, 9 on Uno, Nano, etc Serial.begin(9600); if (!SD.begin(SD_ChipSelectPin)) { // see if the card is present and can be initialized: Serial.println("SD fail"); return; // don't do anything more if not } Serial.println("SD ok"); tmrpcm.setVolume(4); tmrpcm.quality(1); } void loop(){ if(Serial.available()){ char c = Serial.read(); if(c == 'o'){ tmrpcm.play("ON.wav"); Serial.println("play ON.wav"); } else if(c == 'h'){ tmrpcm.play("HUM.wav"); Serial.println("play HUM.wav"); } } }
Качество звука зависит прежде всего от записи. Шумы чаще от высокого уровня громкости в программе. Я немного экспериментировал с этим делом, но потом бросил за ненадобностью. Вот тестовый скетч, в котором звуки из прилагаемого архива. Воспроизводилось все нормально без шумов. Посмотрите может все дело в настройках. Файлы запускаются из монитора. По номерам 1,2,3.
Скетч:
Архив звуков:
https://yadi.sk/d/Qus66GnB3Umvd6
Возможно в архиве нет первого файла (без расширения). Я просто скопировал файл 1.wav и переименовал просто убрав расширение. В целях экономии памяти. Все равно воспроизводится.
По пробовал, звучит плохо, сплошной шум и дребежание. Воспроизводил файлы 0001.wav,0002.wav,0003.wav вот что из этого получилось.
https://photos.app.goo.gl/qWP0UCv2Ojc2ZQBI2
Еще раз проверил схему подключения, не вижу ошибки, все как по инструкции здесь https://alexgyver.ru/arduino-lightsaber/ компоненты такие же, динамики пробовал разные, результат один и тот же.
Что еще можно проверить?
Привет!
Тоже борюсь с этой проблемой. думаю у автора та-же ситуация на которую он забил.
Сделаю батарейное питание 5В напрямую. Чтоб исключить все преобразователи в схемах и их помехи. Отпишусь что вышло.
Еще файл HUM воспроизводится с щелчками при зацикливании. Я новый делал длиннее, около 1 мин.
Земли акселерометра и SD кидал на общий минус. В коде выходы отключил.
Еще может не запускаться проигрывание и нормальная работа акселерометра пока не поставишь задержку около 0,3-0,5 сек. перед их инициализацией.
Ну от себя добавил короткую мелодию марша при включении, вибромоторчик от телефона на вкл/выкл, удар, режим ночника с выключенными звуками, и режим ГАИшной палки (полоски белые) :)
Напиши если будут какие решения.
https://www.youtube.com/watch?v=0pFKaDLYyzA