Paso 4: Controlar el audio usando aduino
No necesita a la biblioteca al programa, pero si quieres que hay una biblioteca para esto te proteja pueden descargarlo desde aquí
//..............................................................................
Mohannad Rawashdeh
MP3 1.2V prueba de escudo.
#include < SoftwareSerial.h >
SoftwareSerial Geno(7,8); RX, Tx
unsigned char datos [10];
unsigned char i;
void setup() {}
Pon tu código de instalación, para ejecutar una vez:
Geno.Begin(9600);
SetVolume(20); volumen 0-31
Delay(1000);
FileSource('SD_card',0x05);
SetPlayMode('Single_play');
Delay(5000);
play_pause(); / / pausa
Delay(3000);
FileSource('SD_card',0x01);
play_pause(); juego
Delay(5000);
Next();
Delay(5000);
Next();
para (int v = 15; v > 0; v--) {}
SetVolume(v); volumen 0-31
Delay(1000);
}
para (int j = 0; j < 15; j ++) {}
SetVolume(j); volumen 0-31
Delay(500);
}
Delay(1000);
FileSource('SD_card',0x04);
Delay(5000);
FileSource('SD_card',0x05);
FileSource('SD_card',0x03);
STOP();
}
void loop() {}
Pon tu código principal, para ejecutar varias veces:
}
Seleccione Archivo sorce "Tarjeta SD, SPI Flash, disco de U"
{} void de ello (tipo char, byte pista)
play_pause(); / / pausa
Datos [0] = 0x7E;
Datos [5] = 0x7E;
Switch (tipo) {}
caso 'SD_card':
INICIO
Datos [1] = 0 x 04; Longitud
Datos [2] = 0xA0; Comando
Datos [3] = 0 x 00; byte alto número de archivo
Datos [4] = pista; byte bajo número de archivo
rotura;
caso 'SPI_Flash':
Datos [1] = 0 x 04; Longitud
Datos [2] = 0xA1; Orden spi flash 0XA1
Datos [3] = 0 x 00; byte alto número de archivo
Datos [4] = pista;
rotura;
caso 'U_Disk':
Datos [1] = 0 x 04; Longitud
Datos [2] = 0xA2; Comando
Datos [3] = 0 x 00; byte alto número de archivo
Datos [4] = pista; byte bajo número de archivo
rotura;
}
Command(Data,5);
play_pause(); / / pausa
}
void SetVolume (vol int) {}
Datos [0] = 0x7E; INICIO
Datos [1] = 0 x 03; Longitud no 0 x 02
Datos [2] = 0xA7; Comando
Datos [3] = vol; nuevo volumen
Datos [4] = 0x7E; FINAL
Command(Data,5);
}
void SetPlayMode(char type) {}
Datos [0] = 0x7E; INICIO
Datos [4] = 0x7E; INICIO
Switch (tipo) {}
caso 'Single_play':
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA9; Comando
Datos [3] = 0 x 00; Parámetro Mode
rotura;
caso 'Repeat_single':
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA9; Comando
Datos [3] = 0 x 01; Parámetro Mode
rotura;
caso 'Repeat_all':
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA9; Comando
Datos [3] = 0 x 02; Parámetro Mode
rotura;
caso 'Play_Random':
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA9; Comando
Datos [3] = 0 x 03; Parámetro Mode
rotura;
}
Command(Data,5);
}
//...............................
void play_pause() {}
Datos [0] = 0x7E; INICIO
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA3; Comando
Datos [3] = 0x7E; Parámetro Mode
Command(Data,4);
}
void Stop() {}
Datos [0] = 0x7E; INICIO
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA4; Comando
Datos [3] = 0x7E; Parámetro Mode
Command(Data,4);
}
void Next() {}
Datos [0] = 0x7E; INICIO
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA5; Comando
Datos [3] = 0x7E; Parámetro Mode
Command(Data,4);
}
void Previous() {}
Datos [0] = 0x7E; INICIO
Datos [1] = 0 x 02; Longitud
Datos [2] = 0xA6; Comando
Datos [3] = 0x7E; Parámetro Mode
Command(Data,4);
}
anular comandos (unsigned char * datos, int longitud) {}
para (int i = 0; i < longitud; i ++) {}
Geno.Write(Data[i]);
}
}
El video a continuación mostramos a usted cómo funcionaba.