Working mbed code for the Adafruit 1958 radio transmitter. Does not include RDS support.
Dependencies: Adafruit_Si4713 TextLCD mbed
main.cpp
- Committer:
- gjones20
- Date:
- 2017-01-25
- Revision:
- 0:eae01b881372
File content as of revision 0:eae01b881372:
#include "mbed.h" #include "TextLCD.h" #include "Adafruit_Si4713.h" TextLCD lcd(p19,p20,p21,p22,p23,p24); AnalogIn Ain(p18); InterruptIn decrease(p6); InterruptIn increase(p7); Timer debounce; uint16_t fmstation=10740; I2C myi2c(p9,p10); Adafruit_Si4713 radio = Adafruit_Si4713(myi2c, p5, 0x63<<1); void StationDown(); void StationUp(); void StationDown() { if (debounce.read_ms()>200 && fmstation >= 8800) { fmstation=fmstation-10; radio.tuneFM(fmstation); debounce.reset(); } } void StationUp() { if (debounce.read_ms()>200 && fmstation <= 10800) { fmstation=fmstation+10; radio.tuneFM(fmstation); debounce.reset(); } } int main() { printf("Adafruit Radio - Si4713 Test\r\n"); if (! radio.begin()) { printf("Couldn't find radio?\r\n"); while (1); } /* // Uncomment to scan power of entire range from 87.5 to 108.0 MHz for (uint16_t f = 8750; f<10800; f+=10) { radio.readTuneMeasure(f); printf("Measuring %.1f\t",f/100.0); radio.readTuneStatus(); printf("%i\r\n",radio.currNoiseLevel); } */ printf("\n\rSet TX power"); radio.setTXpower(115); // dBuV, 88-115 max printf("\n\rTuning into %.1f\r\n",fmstation/100.0); radio.tuneFM(fmstation); // This will tell you the status in case you want to read it from the chip radio.readTuneStatus(); printf("\tCurr freq: %d\r\n", radio.currFreq); printf("\tCurr freqdBuV: %d\r\n", radio.currdBuV); printf("\tCurr ANTcap: %d\r\n", radio.currAntCap); debounce.start(); decrease.rise(&StationDown); increase.rise(&StationUp); while(1) { lcd.cls(); lcd.printf("FM STATION\n"); lcd.printf("%1.1f MHz",fmstation/100.0); wait(0.25); } //printf("\n\rTuning into %.1f\r\n",fmstation/100.0); }