roboforum.ru

Технический форум по робототехнике.

DFRduino Player

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

DFRduino Player

Сообщение Xsenus » 06 дек 2011, 11:31

Всем привет.

Вопрос собственно вот в чем: как с помощью этой штуки ( http://www.dfrobot.com/wiki/index.php?t ... KU:DFR0112) ) проигрывать нужные мне звуковые файлы, не используя команды типа следующий, предыдущий....(не искать нужный, а сразу проигрывать его) то есть, сказал я ему играть такой то файл, он играет,сказал ему играть десятый файл, он играет...

вот пример сэмпловского кода\


#include <Wire.h>
#include <stdlib.h>
//
//The sd card must be formated at FAT format.
//Create a "sound" directory, put mp3/wav/midi files under the SD card,
//Make sure the length of file name do not exceed 8 letters.



// Play Sound "\sound name\r\n". Return "Play ok\r\n" if success,
// Return "Not found\r\n" if sound track does not be found, Return "over\r\n" if the track has reached its end.
// Pause Play "\:p\r\n" Return "pause\r\n" if success
// Continoue Play "\:s\r\n" Return "start\r\n" if success
// Play next "\:n\r\n" Return "next\r\n" if success,Return "false\r\n" if failed
// Play previous "\:u\r\n" Return "key up\r\n"
// Set the volume "\:v 255\r\n",set the volume, from 0 (minimum)-255 (maximum), Return "vol set ok" if success
/////////////////////////////////////////////////////////////////////////////////
#define ArduinoPlayer_address 0x35 //ArduinoPlayer I2C address 0x35 (default)

void TwiSend(const char *cmd) //I2C Command
{
char len = 0;
len = strlen(cmd); //Calculate the length of the command
Wire.beginTransmission(ArduinoPlayer_address); // ArduinoPlayer I2C address
while(len--)
{
Wire.send(*(cmd++));
}
Wire.endTransmission(); // stop transmitting
}
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600);
delay(2000);//Wait for 2 seconds
Serial.println("Ready");
TwiSend("\\:v 255\r\n"); // set the volume, from 0 (minimum)-255 (maximum)
}

//Receive control command from serial
void loop()
{
int val;
if(Serial.available() > 0)
{
val=Serial.read();
switch(val)
{
case 'p': // Pause
TwiSend("\\:p\r\n");
Serial.println("OK");
break;
case 's': // Continoue to play
TwiSend("\\:s\r\n");
Serial.println("OK");
break;
case 'n':
TwiSend("\\:n\r\n"); // Play next
Serial.println("OK");
break;
case 'u':
TwiSend("\\:u\r\n"); // Play previous
Serial.println("OK");
break;
case 'm': //Play
//The volume must be set before playing the sound
TwiSend("\\:v 250\r\n"); // set the volume, from 0 (minimum)-255 (maximum)
TwiSend("\\yes\r\n");
Serial.println("OK");
break;
default:
break;
}
}
}


То есть // Play Sound "\sound name\r\n". Return "Play ok\r\n" if success,

мне следует написать так:

case '1': // играть файл 1.mp3
TwiSend("\\1.mp3\r\n");
Serial.println("OK");
break;

правильно???
или надо как то по-другому??
Аватара пользователя
Xsenus
 
Сообщения: 113
Зарегистрирован: 10 янв 2008, 22:01
Откуда: Москва

Re: DFRduino Player

Сообщение Xsenus » 08 дек 2011, 20:01

все, Разобрался!!! :Yahoo!:
надо писать просто имя файла, без расширения.

но возникла другая, не смертельная но неприятная проблема...
высокая скорость воспроизведения.... голос получается мультяшно-писклявым... а вот как с этим бороться, я даж не знаю...
Аватара пользователя
Xsenus
 
Сообщения: 113
Зарегистрирован: 10 янв 2008, 22:01
Откуда: Москва

Re: DFRduino Player

Сообщение boez » 08 дек 2011, 22:02

Странная фигня, это типа он не понимает частоту из файла? Ну самый тупой метод - пересемплить файлы с другой частотой, чтоб на компе они звучали басом. Ну или разбираться, возможно гуглить, это ж не от тебя зависит частота, а от прошивки этой дфруни.
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: DFRduino Player

Сообщение chervyachok » 23 янв 2012, 04:44

Здраствуйте.

Приобрел на днях DFRduino Player. И немогу понять как его подключить к ардуино.
Если не трудно подкажыте куда какие контакти втыкать (D0, D1).
И как вы разобрались с скоростю воспроизведения?

Заранее благодарен.
chervyachok
 
Сообщения: 4
Зарегистрирован: 14 янв 2010, 17:56
Откуда: Украина, Львов

Re: DFRduino Player

Сообщение alexsx06 » 23 янв 2012, 11:10

Это какой-то ужас, зачем. Если китайцы мп3 плеера по 100 рублей продают, там же тупо 4 кнопки, а возможностей в 10 раз больше
alexsx06
 
Сообщения: 75
Зарегистрирован: 13 янв 2011, 23:41

Re: DFRduino Player

Сообщение Xsenus » 01 фев 2012, 17:46

подсоединял я все по этой схеме - http://www.dfrobot.com/wiki/index.php?t ... Player.jpg

а на счет скорости воспроизведения- так и не разобрался...
Аватара пользователя
Xsenus
 
Сообщения: 113
Зарегистрирован: 10 янв 2008, 22:01
Откуда: Москва

Re: DFRduino Player

Сообщение Madf » 19 фев 2012, 11:47

Плату не имею и конкретно аурдинами не увлекаюсь, но ссылка на сайт производителя (на их продукцию) выдает, что нет больше такой страницы и причина видима как раз в фиксе какой-то проблемы.
Если отвлечься от их проблем и подумать о конкретики, то скорее всего они не передают данные о настройках из файла, не до пиленная прошивка (если это wav), а т.к. прямого подключения к аппаратному декодеру нет и ей управляет 168 мега, то получается затык.
По идеи с мп3 таких проблем не должно быть, т.к. информация о хар-х находится в самом потоке..
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...


Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22