Принцип работы прост – подаёте питание – начинает играть музыка!
Нужно:
– микросхема 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/”