MusicShield подключил к Меге. Работаю на Arduino 1 (работаю на Маке). Карточка на 2 гига (читал, что не все карточки кушаются, но это мы узнаем в конце) - три файла 001.mp3, 002.mp3, 003.mp3. Кстати, а подключенный к Меге MusicShield с поданным на Мегу питанием не должен уметь проигрывать файлы под управлением лишь кнопок? У меня никакие индикаторы на Music Shield'e не горят. На кнопки не реагирует. Ладно. Поехали дальше: Скачал библиотеки MusicShieldNewSDLib и FAT16. Заменил файл portpins.h. Взял пример из библиотеки MusicShieldNewSDLib - MusicPlayWithName - проигрывание файла по имени. Получился код: // Попытка проиграть файл .mp3 через MusicShield #include <Arduino.h> #include <avr/io.h> #include "/Users/fedortihomirov/Library/Arduino/MusicShieldNewSDLib/config.h" #include "/Users/fedortihomirov/Library/Arduino/MusicShieldNewSDLib/player.h" #include "/Users/fedortihomirov/Library/Arduino/MusicShieldNewSDLib/vs10xx.h" #include "/Users/fedortihomirov/Library/Arduino/Fat16/Fat16.h" #include "/Users/fedortihomirov/Library/Arduino/Fat16/Fat16Util.h" #include "/Users/fedortihomirov/Library/Arduino/MusicShieldNewSDLib/newSDLib.h" void setup() { Serial.begin(9600); InitSPI(); InitIOForVs10xx(); InitIOForKeys(); InitIOForLEDs(); Mp3Reset(); if (!initialSDCard()) return; RED_LED_ON();//light red LED } void loop() { playFile("001.mp3"); } Arduino ругается: In file included from test0.cpp:9: /Users/fedortihomirov/Library/Arduino/Fat16/Fat16.h:250: error: conflicting return type specified for 'virtual void Fat16::write(uint8_t)' /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)' - конфликт объявлений в библиотеке FAT16 с чем-то в кишочках Arduino. В чем косяк?
Класс Fat16 унаследован от класса Print, при этом в классе Print есть функция Код (Text): virtual size_t write(uint8_t) = 0; а в классе Fat16 она перекрывается Код (Text): void write(uint8_t b); для Arduino IDE < 1.0 что вызывает у компилятора жуткий головняк из-за несоответствия size_t и void. В файле Fat16.h предусмотрено объявление Код (Text): size_t write(uint8_t b); для Arduino IDE версии >= 1.0, но у вас почему-то выбирается старый вариант для прошлых версий IDE.