RDA5807SP FM Radio Receiver - i2C

Yep I added some serial debug to tell me if things fail...Take a look, maybe my error handling has an error :slight_smile:

Current state of code:

#include <Wire.h>

int device_address = 17;
int seekPin = 12;
int seekPinState = 0;

void setup(){
pinMode (seekPin,INPUT);  
  
Wire.begin();
Serial.begin(9600);

getVolume();
maxVolume();
getVolume();


}


void loop(){

Serial.print("Device addres is: ");
Serial.println(device_address);

seekPinState = digitalRead(seekPin);

if (seekPinState == 1) {
  Serial.println("High!");

  }

getVolume();
delay(5000);

}


void maxVolume(){
Serial.println("Setting Volume");
Wire.beginTransmission(device_address);
Wire.write(5);
byte val_hi = 0x88;  // 10001000
byte val_lo = 0xA8;  // 10101000
Wire.write(val_hi); // hi byte 
Wire.write(val_lo); // lo byte  
Wire.endTransmission();
if (Wire.endTransmission() != 0)
  {
  Serial.println("Error on TX"); // error message
  return;
  }
}

void getVolume(){
Wire.beginTransmission(device_address);
Wire.write(5);
Wire.endTransmission();
Wire.requestFrom(device_address, 2);
Wire.endTransmission();
if (Wire.requestFrom(device_address, 2) != 2)
  {
  Serial.println("Error in RX"); //error message
  return;
  }
  
byte byte1 = Wire.read();
byte byte2 = Wire.read();

Serial.print("The currnet volume setting is: ");
Serial.print(byte1, BIN);
Serial.print(":");
Serial.println(byte2, BIN);
}