Atmega328p воспроизводим звук с sd карты

Принцип работы прост – подаёте питание – начинает играть музыка!
Нужно:
– микросхема Atmega328p.
– Arduino модуль чтения sd карт.
– Sd карта!

———————-
Для тестирования подойдет нижеуказанный код, но если Вы хотите его изменить, то:

Код написан в программе Arduino IDE – поэтому редактировать его нужно там, если вы хотите изменить принцип работы устройства.
Более подробно как писать код для atmega328 и других atmega на Arduino IDE здесь “gameforstreet.ru/besplatnaya-arduino-ide-programmiruem-ljubye-atmega/”
———————

Схема подключения:

Вышеуказанное изображение основано на следующем рисунке:

То есть соединяем:
– SCK Arduino модуля SD карты с SCK Atmega328p
– MISO Arduino модуля SD карты с MISO Atmega328p
– MOSI Arduino модуля SD карты с MOSI Atmega328p
– CS Arduino модуля SD карты с PB2 Atmega328p (почему PB2 – потому что соответствует разъёму D10 Arduino Nano – смотри картинку в конце записи.)
– Плюс от динамика (колонки) с PB1 Atmega328p (почему PB1 – потому что соответствует разъёму D9 Arduino Nano – смотри картинку в конце записи.)

Конденсаторы между плюсом и минусом можно убрать:

Код для программы Arduino IDE написан на C++:

#include <SD.h>             // необходимо включить SD библиотеку
#include <TMRpcm.h>         // также необходимо включить данную библиотеку...
#include <SPI.h>
// Измените это в соответствии с вашей платой расширения или модулем;
const int chipSelect = 10;

TMRpcm music;   // создать объект для использования в данном скетче
void setup()
{
 if (!SD.begin(chipSelect))
  {
    Serial.println("initialization failed!");
    while (1);
  }
  music.speakerPin = 9; // 11 на Mega, 9 на Uno, Nano и т.д.
  music.setVolume(5);    //   от 0 до 7. Установка уровня громкости
  music.quality(1);        //  1 для 2x передескритезации, 0 for для нормального режима

 music.play("sounds/2.wav");

    delay(7000);
    music.pause();
    delay(3000);
music.play("sounds/3.wav");
 delay(7000);
    music.pause();
}
void loop()
{

}

Фьюзы:

Программатор использовал:

UniProf:
“gameforstreet.ru/uniprof-programmiruem-fjuzy-na-atmega328p/”

AVR8 Burn-O-Mat
“gameforstreet.ru/usb-programmator-na-atmega88/”

И другие…

Из кода видно – что играет музыка из файла в папке sounds (поэтому форматируем sd карту в формате fat32 и скидываем в неё папку sound с 6 wav файлами внутри) – 2.wav в течение 7 секунд (delay(7000);), потом идёт пауза в 3 секунды (music.pause(); и delay(3000);), а далее играет файл sounds/3.wav также 7 секунд.

Скачать файлы для данного проекта код, wav файл, ino файл:
– в zip архиве.
– в tar.gz архиве.

SD-карту нужно отформатировать как FAT32 (или FAT16).

Или посмотрите видео как я это делал в Linux Rosa Fresh R12 Plasma, программа “Диспетчер разделов от KDE”:

“rutube.ru/video/9c2979c426e276ce947fd2da9c1ead36/”

Качество воспроизводимой музыки достаточно хорошее (но не идеальное, немого тихо) – это связанно с вычислительными способностями Arduino. Поэтому требования к аудио файлам для Ардуино:
– частота дискретизации: 16000 Гц;
– количество каналов: моно;
– количество бит: 8.

Для подготовки аудиофайлов к вышеуказанным критериям я использую онлайн конвектором аудио файлов.

“audio.online-convert.com/ru/convert-to-wav”

Выбираем файл настраиваем параметры и конвертируем. По моему опыту можно использовать достаточно большие файлы в несколько десятков Мб.

Можно купить Arduino модуль – устройства чтения карт памяти micro-SD

Примечание:
Данная запись основана на предыдущей: “gameforstreet.ru/arduino-nano-zvuk-sd-karty/”

Добавить комментарий