carlosvolt
Published © LGPL

Exploring the potential of SI5351 module in electronic proje

In this tutorial, you will dive into the depths of this amazing device and discover its unlimited potential in generating signals and freque

IntermediateProtip112
Exploring the potential of SI5351 module in electronic proje

Story

Read more

Code

Source code

C/C++
Source code
#include <Keypad.h>
#include "si5351.h"
#include "Wire.h"
#include "U8g2lib.h"//Librería para el control del display oled   
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
Si5351 si5351;
  float f1 = 0ULL;
  float f2 = 0ULL;
String freq = "SETEA FREC";
//String botonSet = "";
const byte ROWS = 4; //cuatro filas
const byte COLS = 4; //cuatro columnas
//definimos los caracteres del teclado
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','4'},
  {'5','6','7','8'},
  {'9','0','A','B'},
  {'C','D','E','F'}
};
byte rowPins[ROWS] = {4, 6, 7, 8}; //conectarse a las salidas de pines de fila del teclado
byte colPins[COLS] = {9, 10, 14, 15}; //conectarse a las salidas de pines de la columna del teclado

//inicializar una instancia de la clase NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  u8g2.begin();//Inicializamos el display oled
    bool i2c_found;
  // Iniciar el módulo Si5351
  i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0);
  oled();//Llamamos a la función oled para mostra datos en el display
}
  
void loop(){
  char customKey = customKeypad.getKey();//Obtenemos la tecla que precionamos
if (customKey == '1'){
  f1= 358205600ULL;//Frecuencia
f2 = f1 - 87400ULL;//Corrección de frecuencia
//  Serial.println(" Herz");
  si5351.set_freq(f2, SI5351_CLK0);
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
  } 
if (customKey == '2'){
f1= 14450000000ULL;//Frecuencia
f2 = f1 - 1896000ULL;//Corrección de frecuencia
  si5351.set_freq(f2, SI5351_CLK0);
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
  }

 if (customKey == '3'){
f1= 14500000000ULL;//Frecuencia
f2 = f1 - 1896000ULL;//Corrección de frecuencia
  si5351.set_freq(f2, SI5351_CLK0);
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
  }
if (customKey == '4'){
  f1= 14650000000ULL;//Frecuencia
f2 = f1 - 1898000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '5'){
  f1= 535400000ULL;//Frecuencia
f2 = f1 - 109000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1; 
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '6'){
  f1= 710000000ULL;//Frecuencia
f2 = f1 - 138000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '7'){
  f1= 1013000000ULL;//Frecuencia
f2 = f1 - 169000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '8'){
  f1= 1410100000ULL;//Frecuencia
f2 = f1 - 218000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '9'){
  f1= 1810500000ULL;//Frecuencia
f2 = f1 - 276000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1; 
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == '0'){
  f1= 2120000000ULL;//Frecuencia
f2 = f1 - 220000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'A'){
  f1= 2492000000ULL;//Frecuencia
f2 = f1 - 351000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'B'){
  f1= 2820000000ULL;//Frecuencia
f2 = f1 - 395000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'C'){
  f1= 2960000000ULL;//Frecuencia
f2 = f1 - 412000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
//botonSet = "SET13";
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'D'){
  f1= 5000000000ULL;//Frecuencia
f2 = f1 - 668000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
//botonSet = "SET14";
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'E'){
  f1= 14400000000ULL;//Frecuencia
f2 = f1 - 1858000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
//botonSet = "SET15";
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
if (customKey == 'F'){
  f1= 14420000000ULL;//Frecuencia
f2 = f1 - 1862000ULL;//Corrección
si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0
freq = f1;
oled();//Llama a la función oled para mostrar la frecuencia en el display
}
}
 void oled() {
  //Imprimimos en pantalla
  u8g2.clearBuffer();          // borra la memoria interna
  u8g2.setFont(u8g2_font_ncenB08_tr); // elige una fuente 
  u8g2.drawStr(0,10,"FRECUENCIA CLOCK0: ");
  u8g2.drawStr(0,30,freq.c_str());
  u8g2.drawStr(80,30," Herz");  // escribir "Herz" en la memoria interna
  freq = f1 / 100000000ULL;
  u8g2.drawStr(0,50,freq.c_str());
  u8g2.drawStr(30,50," MHz");  // escribir "MHz" en la memoria interna
  u8g2.sendBuffer();          // transferir la memoria interna a la pantalla 
  }

Credits

carlosvolt
34 projects • 4 followers

Comments