Hi,
ich bin Anfänger und wollte mich mit einem neuen Projekt "FM-Radio mit Si4703" beschäftigen. Starten wollte ich mit einem Tutorial, das ich zum Thema mittels google gefunden habe:
Leider läuft dieses Tutorial bei mir nicht wie dort abgebildet.
Ich vermute mal, dass ich nicht die richtige library für das SI4703 eingebunden habe. Ich habe von Github folgende library verwendet: Whiteneon/Si4703_FMRadio
Mein Problem ist, dass nach Eingabe in die Kommandozeile und keine Reaktion passiert.
Mit einzelnen Serial.println-Marken habe ich versucht den Fehler zu finden. Es scheint ein Problem mit z.B. radio.powerOn();
radio.setVolume(0);
zu geben. Void loop() wird wohl gar nicht erst durchlaufen.
Hat jemand eine Idee?
Brauche ich eine andere library?
#include <Si4703_Breakout.h>
#include <Wire.h>
const int resetPin = 2;
const int SDIO = A4;
const int SCLK = A5;
Si4703_Breakout radio(resetPin, SDIO, SCLK);
int channel;
int volume;
char rdsBuffer[10];
void setup()
{
Serial.begin(9600);
Serial.println("\n\nSi4703_Breakout Test Sketch");
Serial.println("===========================");
Serial.println("a b Favourite stations");
Serial.println("+ - Volume (max 15)");
Serial.println("u d Seek up / down");
Serial.println("r Listen for RDS Data (15 sec timeout)");
Serial.println("Send me a command letter.");
radio.powerOn();
radio.setVolume(0);
}
void loop()
{
if (Serial.available())
{
char ch = Serial.read();
if (ch == 'u')
{
channel = radio.seekUp();
displayInfo();
}
else if (ch == 'd')
{
channel = radio.seekDown();
displayInfo();
}
else if (ch == '+')
{
volume ++;
if (volume == 16) volume = 15;
radio.setVolume(volume);
displayInfo();
}
else if (ch == '-')
{
volume --;
if (volume < 0) volume = 0;
radio.setVolume(volume);
displayInfo();
}
else if (ch == 'a')
{
channel = 930; // Rock FM
radio.setChannel(channel);
displayInfo();
}
else if (ch == 'b')
{
channel = 974; // BBC R4
radio.setChannel(channel);
displayInfo();
}
else if (ch == 'r')
{
Serial.println("RDS listening");
radio.readRDS(rdsBuffer, 15000);
Serial.print("RDS heard:");
Serial.println(rdsBuffer);
}
}
}
void displayInfo()
{
Serial.print("Channel:"); Serial.print(channel);
Serial.print(" Volume:"); Serial.println(volume);
}
Das Radio wird in setup auf die kleinste Lautstärke gestellt.
Wenn Du den obengenannte Sketch aus dem Tutorial nimmst dann wird im loop() gar nichts ausgegeben erst wenn Du irgend ein Komando vom seriellen Terminal zB der IDE schickst. Wobei für a und b Du die Frequenz Deiner Lieblingssender eintragen mußt.
Serial.println("a b Favourite stations");
Serial.println("+ - Volume (max 15)");
Serial.println("u d Seek up / down");
Serial.println("r Listen for RDS Data (15 sec timeout)");
Serial.println("Send me a command letter.");
Wenn Du den obengenannte Sketch aus dem Tutorial nimmst dann wird im loop() gar nichts ausgegeben erst wenn Du irgend ein Komando vom seriellen Terminal zB der IDE schickst. Wobei für a und b Du die Frequenz Deiner Lieblingssender eintragen mußt.
Serial.println("a b Favourite stations");
Serial.println("+ - Volume (max 15)");
Serial.println("u d Seek up / down");
Serial.println("r Listen for RDS Data (15 sec timeout)");
Serial.println("Send me a command letter.");
Grüße Uwe
Ja,
Ich habe schon bei a und b zwei Senderfrequenzen eingetragen. Nach Aufruf in serial monitor von a oder b wird der Sender aufgerufen und mit + oder - kann die Lautstärke über den SM geregelt werden. Im SM wird dann durch void displayInfo() dieses als feedback ausgegeben.
Und genau dieses funktioniert nicht und es wird auch kein Sound über die Kopfhörer ausgegeben. Das liegt daran, dass die void loop () erst gar nicht durchlaufen wird.
Wo finde ich den die richtige library Si4703_breakout.h ? In der Beschreibung hatte ich nichts gefunden und ich hatte keine Lust mich bei Codebender anzumelden. Die sind rein kommerziell und wollen gleich 10€/Monat sehen. :o
Gruß Ulli
und danke für die bisherige Unterstützung
DrDiettrich:
Ich dachte, daß nach MW auch FM Radio (UKW) weitgehend abgeschaltet wurde?
Das hatte ich auch mal gehört. Aber durch das Ausscheren eines Bundeslandes beim DAB+ geht die Diskussion einer Abschaltung von vorn los.
Zusätzlich noch von unserem Heimat-Minister Seehofer die Bedenken wegen der Sicherheitsmeldungen im Krisenfall wenn das Internet tot ist.
4711engel: Wo finde ich den die richtige library Si4703_breakout.h ? In der Beschreibung hatte ich nichts gefunden und ich hatte keine [/quote] Google machts möglich, einfach mal googeln. Z.B. hier.
Das macht ja nichts.
Ich hatte nur in meiner Kiste noch einen Si4703 liegen und habe dann nach einem einfachen Tutorial gesucht, das ein Anfänger wie ich nachbauen kann. Und da fand ich dieses und in der zweiten Stufe dann das Tutorial mit TFT:
Scheint für mich lösbar zu sein.
Mich wurmt nur, dass ich nicht verstehe, warum es nicht läuft und auch die Authoren von Codebender_cc sagen nichts dazu. Und deshalb möchte ich das Ding schon zum Laufen bringen. Nur so kann ich ja lernen.
4711engel:
Das macht ja nichts.
Ich hatte nur in meiner Kiste noch einen Si4703 liegen und habe dann nach einem einfachen Tutorial gesucht, das ein Anfänger wie ich nachbauen kann. Und da fand ich dieses und in der zweiten Stufe dann das Tutorial mit TFT: https://youtu.be/6xBYTCAreNc
Scheint für mich lösbar zu sein.
Mich wurmt nur, dass ich nicht verstehe, warum es nicht läuft und auch die Authoren von Codebender_cc sagen nichts dazu. Und deshalb möchte ich das Ding schon zum Laufen bringen. Nur so kann ich ja lernen.
Gruß Ulli
Ja ok, kann ich verstehen.
Nur schwer zu helfen, wenn damit keiner Erfahrung hier hat.