Transmisor con PLL Si4713 y Arduino, el código compartido diseñado por JM Transmisores, usando las librerías disponibles en Arduino ID la del módulo Si4713 y la pantalla Alfanumérico 20x4, compatible con todas las versiones Arduino como Arduino UNO y Arduino nano.
Vídeo Test en Arduino nano
///////////////////////////////////////////////////////////////////////////////////
// //
// APORTE DE JM TRASNMISORES //
// https://proyectosjmtransmissores.blogspot.com/2024/03/arduino-radio-20x4.html //
// //
///////////////////////////////////////////////////////////////////////////////////
#include <Wire.h>
#include <Adafruit_Si4713.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
const int rs = 33, en = 31, d4 = 29, d5 = 27, d6 = 25, d7 = 23;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
#define RESETPIN 12
#define stereo_RDSoff 3
#define stereo 7
#define mono 0
//void update( int idx, uint8_t val ) { EERef( idx ).update( val ); }
const int up= 4; // the number of the pushbutton pin
const int set=3;
const int dow=2; // the number of the pushbutton pin
const int KEYPin =5;
const int ledPin =11;
uint16_t frec;
uint16_t Audio;
int po,fset=0;
char ind=127;
char cl=219;
int mod;
Adafruit_Si4713 radio = Adafruit_Si4713(RESETPIN);
void plcd() {
lcd.setCursor(0, 0);
lcd.print(" JM TRANSMISORES");
lcd.setCursor(0, 1);
lcd.print("FREQ: ");
lcd.print( frec/100); lcd.print("."); lcd.print(frec%100);
lcd.setCursor(20, 0);
lcd.print("MODO: ");
if(mod==4){
lcd.setCursor(26, 0);
lcd.print("MONO ");
}
else{
lcd.setCursor(26, 0);
lcd.print("ESTEREO");
}
delay(200);
}
void MODO(int h){
radio.setProperty(SI4713_PROP_TX_COMPONENT_ENABLE,h);
}
void Audio_DV(uint16_t h){
radio.setProperty(SI4713_PROP_TX_AUDIO_DEVIATION,h);
}
void setup() {
lcd.begin(20, 4);
lcd.print("si4713");
pinMode(up,INPUT_PULLUP);
pinMode(set,INPUT_PULLUP);
pinMode(dow,INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
pinMode(KEYPin, OUTPUT);
EEPROM.get( 80,frec);
mod=EEPROM.read(0);
delay(2000);
if (frec>10800){
frec=10070;
Audio=6550;
po=115;
mod=7;
}
plcd();
radio.reset();
delay(100);
radio.begin();
delay(500);
radio.setTXpower(115); // dBuV, 88-115 max
radio.tuneFM(frec); // 100.7 mhz
radio.setRDSstation("JM RADIO");
radio.setRDSbuffer( "Que Buena Radio!");
digitalWrite(KEYPin,LOW);
// stereo_RDSoff
// stereo
// mono
MODO(mod);
// Audio_DV(Audio);
}
void loop(){
if (digitalRead(set)==LOW){
fset=2;
delay(300);
fmsetup();
}
}
void fmsetup(){
while(fset==2) {
lcd.setCursor(14,1);
lcd.print(ind);
if (digitalRead(up)==LOW){
frec=frec+10;
radio.tuneFM(frec); // 100.7 mhz
plcd();
}
if (digitalRead(dow)==LOW){
frec=frec-10;
radio.tuneFM(frec); // 100.7 mhz
plcd();
}
if (digitalRead(set)==LOW){
EEPROM.put(80,frec);
delay(300);
fset=4;
}
while(fset==4){
lcd.setCursor(14,1);
lcd.print(" ");
lcd.setCursor(34,0);
lcd.print(ind);
if (digitalRead(up)==LOW){
mod=7;
MODO(mod);
plcd();
}
if (digitalRead(dow)==LOW){
mod=4;
MODO(mod);
plcd();
}
if (digitalRead(set)==LOW){
EEPROM.write(0,mod);
lcd.setCursor(34,0);
lcd.print(" ");
//plcd();
fset=6;
delay(300);
}
}
while(fset==6){
if (digitalRead(set)==LOW){
delay(300);
fset=2;
}
}
}
}
Comentarios
Publicar un comentario