Paso 4: Descargar el programa
Aquí está el código de arduino:/*
Por Daniel Solís
Licenciado bajo Creative Commons Reconocimiento-CompartirIgual 3.0 bajo
http://creativecommons.org/licenses/by-SA/3.0/
Son capaces de modificar este código, así como el hardware. Si usted
tener un código mejor o hacer cambios que mejoren la performa
NCE por favor compartirlos
Pin analógico 4: ipod TX (para detectar el ipod)
Pin analógico 0: botón de detección
Pin digital 1: arduino TX
*/
mode2 de bytes [] = {0xFF, 0x55, 0 x 03, 0 x 00, 0 x 01, 0 x 02, 0xFA}; //mode 2 mando
Byte [] nobutton = {0xFF, 0x55, 0 x 03, 0 x 02, 0 x 00, 0 x 00, 0xFB}; //button comando
Comunicado de Int = 200;
comandos de
byte playxpause = 0 x 01;
nextsong bytes = 0x08;
byte prevsong = 0 x 10;
shuffle de Byte [] = {0xFF, 0x55, 0 x 04, 0 x 02, 0 x 00, 0 x 00, 0 x 80, 0x7A};
int tiempo; / /
int butbefore = 1023;
int dockbef = 0;
void setup()
{
Serial.Begin (19200); //sets serial com
para (int p = 0; p < 7; p ++)
{Serial.print(mode2[p],HEX);} envía comando mode2
}
void loop()
{
int dock=analogRead(4);
Si (muelle! = dockbef) //checks si hay un iPod conectado
{
para (int p = 0; p < 7; p ++) //if no, otra vez envía comando mode2
{Serial.print(mode2[p],HEX);}
}
int butnow=analogRead(0);
Si (butnow! = butbefore & & millis ()-tiempo > liberar)
{
Si (butnow! = alta) //wait para pulsador
{
Time=Millis();
if(butnow==0) / /
{
srlcommand(playxpause);
}
Si (butnow > 948 & & butnow < 953)
{
srlcommand(nextsong);
}
Si (butnow > = 506 & & butnow < 508)
{
srlcommand(prevsong);
}
Si (butnow > 955 & & butnow < 963)
{
para (int d = 0; d < 8; d ++)
{Serial.print(shuffle[d],BYTE);}
}
}
}
otra cosa
{
para (int d = 0; d < 7; d ++)
{Serial.print(nobutton[d],BYTE);} no hay tecla de comando
}
butbefore = butnow;
}
void srlcommand(byte select)
{
suma de bytes = 0 x 00-0 x 03-0 x 02-0 x 00-seleccionar; //checksum de longitud, el modo y el comando
inst de bytes [] = {0xFF, 0x55, 0 x 03, 0 x 02, 0 x 00, selección, suma de comprobación}; //general estructura
para (int m = 0; m < 7; m ++)
{Serial.print(inst[m],BYTE);} envía el comando
}