Devices & Components
Arduino Pro Micro
Software & Tools
rogerbit.
Project description
Code
Source code
c
source code
1#include <Keypad.h> 2#include "si5351.h" 3#include "Wire.h" 4#include "U8g2lib.h"//Librería para el control del display oled 5U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); 6Si5351 si5351; 7 float f1 = 0ULL; 8 float f2 = 0ULL; 9String freq = "SETEA FREC"; 10//String botonSet = ""; 11const byte ROWS = 4; //cuatro filas 12const byte COLS = 4; //cuatro columnas 13//definimos los caracteres del teclado 14char hexaKeys[ROWS][COLS] = { 15 {'1','2','3','4'}, 16 {'5','6','7','8'}, 17 {'9','0','A','B'}, 18 {'C','D','E','F'} 19}; 20byte rowPins[ROWS] = {4, 6, 7, 8}; //conectarse a las salidas de pines de fila del teclado 21byte colPins[COLS] = {9, 10, 14, 15}; //conectarse a las salidas de pines de la columna del teclado 22 23//inicializar una instancia de la clase NewKeypad 24Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 25 26void setup(){ 27 u8g2.begin();//Inicializamos el display oled 28 bool i2c_found; 29 // Iniciar el módulo Si5351 30 i2c_found = si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0, 0); 31 oled();//Llamamos a la función oled para mostra datos en el display 32} 33 34void loop(){ 35 char customKey = customKeypad.getKey();//Obtenemos la tecla que precionamos 36if (customKey == '1'){ 37 f1= 358205600ULL;//Frecuencia 38f2 = f1 - 87400ULL;//Corrección de frecuencia 39// Serial.println(" Herz"); 40 si5351.set_freq(f2, SI5351_CLK0); 41freq = f1; 42oled();//Llama a la función oled para mostrar la frecuencia en el display 43 } 44if (customKey == '2'){ 45f1= 14450000000ULL;//Frecuencia 46f2 = f1 - 1896000ULL;//Corrección de frecuencia 47 si5351.set_freq(f2, SI5351_CLK0); 48freq = f1; 49oled();//Llama a la función oled para mostrar la frecuencia en el display 50 } 51 52 if (customKey == '3'){ 53f1= 14500000000ULL;//Frecuencia 54f2 = f1 - 1896000ULL;//Corrección de frecuencia 55 si5351.set_freq(f2, SI5351_CLK0); 56freq = f1; 57oled();//Llama a la función oled para mostrar la frecuencia en el display 58 } 59if (customKey == '4'){ 60 f1= 14650000000ULL;//Frecuencia 61f2 = f1 - 1898000ULL;//Corrección 62si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 63freq = f1; 64oled();//Llama a la función oled para mostrar la frecuencia en el display 65} 66if (customKey == '5'){ 67 f1= 535400000ULL;//Frecuencia 68f2 = f1 - 109000ULL;//Corrección 69si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 70freq = f1; 71oled();//Llama a la función oled para mostrar la frecuencia en el display 72} 73if (customKey == '6'){ 74 f1= 710000000ULL;//Frecuencia 75f2 = f1 - 138000ULL;//Corrección 76si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 77freq = f1; 78oled();//Llama a la función oled para mostrar la frecuencia en el display 79} 80if (customKey == '7'){ 81 f1= 1013000000ULL;//Frecuencia 82f2 = f1 - 169000ULL;//Corrección 83si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 84freq = f1; 85oled();//Llama a la función oled para mostrar la frecuencia en el display 86} 87if (customKey == '8'){ 88 f1= 1410100000ULL;//Frecuencia 89f2 = f1 - 218000ULL;//Corrección 90si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 91freq = f1; 92oled();//Llama a la función oled para mostrar la frecuencia en el display 93} 94if (customKey == '9'){ 95 f1= 1810500000ULL;//Frecuencia 96f2 = f1 - 276000ULL;//Corrección 97si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 98freq = f1; 99oled();//Llama a la función oled para mostrar la frecuencia en el display 100} 101if (customKey == '0'){ 102 f1= 2120000000ULL;//Frecuencia 103f2 = f1 - 220000ULL;//Corrección 104si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 105freq = f1; 106oled();//Llama a la función oled para mostrar la frecuencia en el display 107} 108if (customKey == 'A'){ 109 f1= 2492000000ULL;//Frecuencia 110f2 = f1 - 351000ULL;//Corrección 111si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 112freq = f1; 113oled();//Llama a la función oled para mostrar la frecuencia en el display 114} 115if (customKey == 'B'){ 116 f1= 2820000000ULL;//Frecuencia 117f2 = f1 - 395000ULL;//Corrección 118si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 119freq = f1; 120oled();//Llama a la función oled para mostrar la frecuencia en el display 121} 122if (customKey == 'C'){ 123 f1= 2960000000ULL;//Frecuencia 124f2 = f1 - 412000ULL;//Corrección 125si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 126freq = f1; 127//botonSet = "SET13"; 128oled();//Llama a la función oled para mostrar la frecuencia en el display 129} 130if (customKey == 'D'){ 131 f1= 5000000000ULL;//Frecuencia 132f2 = f1 - 668000ULL;//Corrección 133si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 134freq = f1; 135//botonSet = "SET14"; 136oled();//Llama a la función oled para mostrar la frecuencia en el display 137} 138if (customKey == 'E'){ 139 f1= 14400000000ULL;//Frecuencia 140f2 = f1 - 1858000ULL;//Corrección 141si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 142freq = f1; 143//botonSet = "SET15"; 144oled();//Llama a la función oled para mostrar la frecuencia en el display 145} 146if (customKey == 'F'){ 147 f1= 14420000000ULL;//Frecuencia 148f2 = f1 - 1862000ULL;//Corrección 149si5351.set_freq(f2, SI5351_CLK0);//Seteo de la frecuencia en el CLOCK0 150freq = f1; 151oled();//Llama a la función oled para mostrar la frecuencia en el display 152} 153} 154 void oled() { 155 //Imprimimos en pantalla 156 u8g2.clearBuffer(); // borra la memoria interna 157 u8g2.setFont(u8g2_font_ncenB08_tr); // elige una fuente 158 u8g2.drawStr(0,10,"FRECUENCIA CLOCK0: "); 159 u8g2.drawStr(0,30,freq.c_str()); 160 u8g2.drawStr(80,30," Herz"); // escribir "Herz" en la memoria interna 161 freq = f1 / 100000000ULL; 162 u8g2.drawStr(0,50,freq.c_str()); 163 u8g2.drawStr(30,50," MHz"); // escribir "MHz" en la memoria interna 164 u8g2.sendBuffer(); // transferir la memoria interna a la pantalla 165 }
Comments
Only logged in users can leave comments