Проигрывание WAV файла через SD-карту.
- Войдите на сайт для отправки комментариев
Сб, 04/02/2017 - 16:44
Использую библиотеку TMRpcm, чтобы проиграть файл 1.wav, находящийся на SD-карте.Возникает такая ошибка в программе:
https://i.gyazo.com/12d9952b2acf61a842faf10eb0fa1f9d.png
Делал по примеру:
http://mozgochiny.ru/electronics-2/kak-sdelat-prostoy-pleer-iz-arduino-i...
Почему это происходит?
Вы не могли бы ошибки и текст скетча копипастить сюда текстом, а не картинками?
Это не ошибка, а предупреждение, что Вы использовали устаревшую конструкцию языка. По идее, всё должно при этом нормально работать. Работает?
#include <SD.h> #include <TMRpcm.h> TMRpcm tmrpcm; void setup(){ tmrpcm.speakerPin = 9; int SD_ChipSelectPin=10; Serial.begin(9600); if (!SD.begin(SD_ChipSelectPin)) { Serial.println("SD fail"); return; } tmrpcm.volume(10); tmrpcm.play("1.wav"); } void loop(){ }Да, прошу прощения.Не работает.Я подумал, что проблема в этом, но как раз прочитал о том, что программа продолжает работать после предупреждения.
По какой-то причине в Мониторе порта пишет "SD fail", хотя модуль SD-карты подключен правильно(отдельно проверил с помощью CardInfo)/
У авторов стандартов С и С++ есть некие тараканы в голове, по поводу совместимости процедурного и объектного языка.
Если таки предупреждения не нравятся из чисто эстетических соображений, то они лечатся ЯВНЫМ преобразованием типа:
вместо:
your_func("1.wav");
нужно писать:
your_func((char *)"1.wav");
Спасибо за исправление, теперь это не будет мозолить глаза.Однако ж проблема с "SD fail" остаётся.
Гоняй другие примеры из библиотеки. Не используй пин 13, замени его. Ну уж не знаю, что тебе еще предложить.
ну и карточку аккуратно отформатируй, драйвер капризен. Тут, на форуме, уже поднималась эта тема.
Каким образом можно заменить 13 пин для примеров?У них ведь в инструкции сказано использовать его.
** CLK - pin 13
Да, не получится для хардварного SPI. Эт я загнул.
Вся проблема в SD.begin().Карта просто не инициализируется.
там вызывется три инициализации внутри библиотеки:
1. карта
2. том
3. корневая директория.
--------------------
поставь туда отдельные принты, поймешь, кто из этих трех не срабатывает.
Собственно, отсюда взял по-очереди card.init, volume.init и root.openRoot.
Последние две вернули false.
Здравствуйте. Собрал устройство по схеме:
Откуда берётся свист?
https://www.youtube.com/watch?v=6hRN98XPAD4
Вход усилителя через резистор на минус не спасает ситуацию.
Разведите землю от одного источника, но раздельно на цифровую чпсать схемы и на усилитель. Т.е от источника провод к цифровой земле с фильтрующим конденсатором и от того же источника к аналоговой тоже с фильтрующим конденсатором. Еще раз земля от БП идет раздельно на цифровую часть и на аналоговую и на каждую со своим фильтром. Конденсаторы, например по 100uF
Посмотрите вот эту статью. Вы сделали как на рисунке 2, а надо, как на рисунке 3.
Разведите землю от одного источника, но раздельно на цифровую чпсать схемы и на усилитель. Т.е от источника провод к цифровой земле с фильтрующим конденсатором и от того же источника к аналоговой тоже с фильтрующим конденсатором. Еще раз земля от БП идет раздельно на цифровую часть и на аналоговую и на каждую со своим фильтром. Конденсаторы, например по 100uF
Посмотрите вот эту статью. Вы сделали как на рисунке 2, а надо, как на рисунке 3.
полезная статейка, спасибо...
ЕвгенийП, за статью большое спасибо.
Но разводка питания результата не принесла.
Поключив динамик к 9 выходу ардуино и минусу (без усилителя) слышится писк.
Без усилителя писк на расстоянии не слышно, но, и музыки тоже(
Поключив динамик к 9 выходу ардуино и минусу (без усилителя) слышится писк.
Не понял, что значит к ардуино, Вы что его не с прогирыватель слушаете? Я думал, Вы динамик к модулю проигрывателя подключаете.
В любом случае, питание проигрывателя также изолируйте (в нём ведь тоже есть аналоговая часть) - не соединяйте напрямую с GND ардуино, а все земли на общий источник через свои фильтры.
Вот так поключал, на питание ставил 10мкФ 16 В
Что значит проигрывателя? Это же модуль для работы с SD картами
Ну, в общем, я конденсаторов на схеме не вижу. Надеюсь, Вы правильно делали. Если так и не помогло, то берите осциллограф и смотрите что там за писк. Узнайте его частоту и постарайтесь понять кто его издаёт: модуль, ардуина, истоник питания ... а там уже будем думать как устранять (меня, например, как-то задолбала писком MAX7219 - она крутит свои 8кГц, землю просаживает, а усилитель это честно усиливает - вот и пищало).
10 мкФ параллельно входу УНЧ...
Конденсатор на входе УНЧ помог. Спасибо.
Звук получился чисты, но негромкий.
Вопрос по поводу усилителя.
Посмотрел схему оповещателя сигнализации, усилитель собран на 6 транзисторах.
Усиливается сигнал который идёт от микросхемы HT2860 (DIP 16) с 11 и 12 пина (Инвертирующий выход и неинвертирующий выход)