Hola, estoy intentando obtener los datos RDS con un si4703, pero no consigo sacar nada en claro.
He probado varios codigos, y el único que me saca algo el codigo de prueba de sparkFun, pero me muestra una serie de bytes que no se descifrar los datos ni para que sirven:
//La función para obtener los registros
void si4703_readRegisters(void){
//Si4703 begins reading from register upper register of 0x0A and reads to 0x0F, then loops to 0x00.
Wire.requestFrom(SI4703, 32); //We want to read the entire register set from 0x0A to 0x09 = 32 bytes.
while(Wire.available() < 32) ; //Wait for 16 words/32 bytes to come back from slave I2C device
//We may want some time-out error here
//Remember, register 0x0A comes in first so we have to shuffle the array around a bit
for(int x = 0x0A ; ; x++) { //Read in these 32 bytes
if(x == 0x10) x = 0; //Loop back to zero
si4703_registers[x] = Wire.read() << 8;
si4703_registers[x] |= Wire.read();
if(x == 0x09) break; //We're done!
}
}
//Llamada a la función anterior y mostrando los datos:
si4703_readRegisters();
if(si4703_registers[STATUSRSSI] & (1<<RDSR)){
Serial.println("We have RDS!");
byte Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl;
Ah = (si4703_registers[RDSA] & 0xFF00) >> 8;
Al = (si4703_registers[RDSA] & 0x00FF);
Bh = (si4703_registers[RDSB] & 0xFF00) >> 8;
Bl = (si4703_registers[RDSB] & 0x00FF);
Ch = (si4703_registers[RDSC] & 0xFF00) >> 8;
Cl = (si4703_registers[RDSC] & 0x00FF);
Dh = (si4703_registers[RDSD] & 0xFF00) >> 8;
Dl = (si4703_registers[RDSD] & 0x00FF);
Luego, imprime los 8 bytes anteriores, pero como ya he dicho, no tengo ni idea de que significa cada uno, suele dar datos asi:
226-57-36-81-85-32-80-32
226-57-252-65-226-57-252-66
Un saludo y gracias.