Radio FM con RDA5807M

Buongiorno sono Francesco mi sto imbattendo in un nuovo progetto ma non sono sicuro di poterci riuscire.
Ho una radio d'epoca valvolare che non è in grado di ricevere le frequenze in FM ed avevo pensato di aggiungere un Arduino nano con il modulo RDA5807m ed un potenziometro da applicare nella sintonia esistente per poter selezionare le varie frequenze. Nell'hardware ho connesso Arduino con il modulo utilizzando un adattatore di livello per gestire la comunicazione I2C.
Nello sketch ho installato una libreria che gestisce il cambio di frequenze, ma ho notato che ogni volta che scrivo una frequenza al RDA5708m, la radio passa in modalità muting per non fare sentire il frucio. Avrei bisogno di capire come poter dialogare direttamente con il modulo per fargli cambiare la frequenza, che andrebbe calcolato con il PIN A0 dov'è connesso il potenziometro della sintonia, senza dover utilizzare il muting.
Ho scaricato il datasheet ma purtroppo con le mie conoscenze non riesco.
Sto utilizzando la libreria wire per la comunicazione I2C utilizzando i PIN Sda ed Scl dell'arduino.

Esiste una guida o un libro completo che potrei acquistare per conoscere a fondo la programmazione di arduino?

Posso cambiare direttamente un singolo bit nei vari registri del RDA5807M?

Grazie

Ho realizzato il prototipo utilizzando una basetta millefiori.

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

Ti consiglio di postare il codice che stai usando (mi raccomando, marcalo con il tag "CODE") così vediamo anche come gestisci il modulino (usi una libreria tipo questa?) e possibilmente anche lo schema del circuito (anche fatto a mano e fotografato può bastare).

Chiedo scusa, è il mio primo post ed effettivamente non so come muovermi

Questo è blo schema sintetico del circuuto.

La libreria che utilizzo non è quella suggerita.
Devo trovare il modo per allegare lo sketch. Scrivendo da cellulare si può fare o devo scrivere la PC?

Se lo sketch ce l'hai sul PC, devi farlo sul PC che tra l'altro è più comodo.
Se ce l'hai anche sul cellulare, ti basta aprirlo (un visualizzatore di testi va benissimo), selezionare tutto il codice e copiarlo, quindi incollarlo qui dentro ai tag "CODE" (il pulsantino in alto nella barra dell'editor marcato "<CODE/>").

Ho preso il file di esempio ed ho aggiunto solo qualche riga

#include <Arduino.h>
#include <Wire.h>

#include <radio.h>
#include <RDA5807M.h>

// ----- Fixed settings here. -----

#define FIX_BAND RADIO_BAND_FM  ///< The band that will be tuned by this sketch is FM.
#define FIX_STATION 9670        ///< The station that will be tuned by this sketch is 89.30 MHz.
#define FIX_VOLUME 10           ///< The volume that will be set by this sketch is level 4.

RDA5807M radio;  // Create an instance of Class for RDA5807M Chip

 int Frequenza = 0;
 byte F0, F1;
 
/// Setup a FM only radio configuration
/// with some debugging on the Serial port

void setup() {
  delay(3000);
  
  Wire.begin();        // join I2C bus (address optional for master)
                    // open the Serial port
  Serial.begin(9600);
  Serial.println("RDA5807M Radio...");
  delay(200);

  

  // Enable information to the Serial port
  radio.debugEnable(true);
  radio._wireDebug(false);

  // Set FM Options for Europe
  radio.setup(RADIO_FMSPACING, RADIO_FMSPACING_100);   // for EUROPE
  radio.setup(RADIO_DEEMPHASIS, RADIO_DEEMPHASIS_50);  // for EUROPE

  // Initialize the Radio
  if (!radio.initWire(Wire)) {
    Serial.println("no radio chip found.");
    delay(4000);
  // ESP.restart();
  };

  // Set all radio setting to the fixed values.
  radio.setBandFrequency(FIX_BAND, FIX_STATION);
  radio.setVolume(FIX_VOLUME);
  radio.setMono(false);
  radio.setMute(false);
}  // setup


     /// show the current chip data every 3 seconds.
void loop() {
  char s[12];
  radio.formatFrequency(s, sizeof(s));
  Serial.print("Station:");
  Serial.println(s);

  Serial.print("Radio:");
  radio.debugRadioInfo();

  Serial.print("Audio:");
  radio.debugAudioInfo();

  delay(3000);

  Frequenza = analogRead(A0); // legge la posizione del potenziometro
  Frequenza = map(Frequenza, 0, 1024, 8800, 10800); Rimappa il valore
  //Frequenza = 9870;
  F0 = Frequenza;
  F1 = (Frequenza >>8);
  
  //radio.setFrequency(Frequenza);
   
  Wire.beginTransmission(0x5804); // trasmissione con RDA5807
  Wire.write(0x08);  //si sprosa al registro 08H
  Wire.write (F0);
  Wire.write(F1);
  Wire.endTransmission();     // stop transmitting
  
}  // loop

// End.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.