Hola a todos,buenola idea ya la expuse en el whatsapp,pero voy a ampliarla aqui.
Empecemos con el proyecto,el monitor de servicio costara de un generador de rf(dds),en mi caso de 1Hz a 30MHz con modulacion generada por el propio arduino.La entrada de frecuencia y las funciones seran por teclado matricial,dispondremos de un atenuador de dos o mas pasos para la salida del generador y de un watimetro hasta 100w.Creo que es suficiente para ajustar los equipos con cierta precision.
la construccion sera por bloques,ya que asi sera mas facil modificar y ampliar al gusto de cada uno.
Soft del arduino,de momento solo el generador de señal y la conmutacion rx test/tx test.Mencionar que el soft original es de Joaquín Paredes,en base a el lo ire modificando.
#include <Wire.h>
#include "Keypad.h"
#include <AH_AD9850.h>
//#include <AD9850.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // set the LCD address to 0x27
const byte RX=22;
const byte TX=23;
const byte MOD=24;
const byte ATT=25;
AH_AD9850 AD9850(10, 11, 12, 13);
const byte ROWS = 4; //cuatro rows
const byte COLS = 4; //cuatro columnas
char keys[ROWS][COLS] =
{{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
byte rowPins[ROWS] = { 2, 3, 4, 5}; //connectar filas a pin del Arduino
byte colPins[COLS] = { 6, 7, 8, 9}; //connectar columnas a pin del Arduino
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int NuMax; //limitar a 8 digitos la frecuencia
String teclas; //tecla que se va pulsando y su concatenación
char cadena[9]; //para poder hacer la conversion a número
long frecuencia; //f a mostrar
char key[1]; //captura tecla
void setup()
{
//lcd.init(); // initialize the lcd
lcd.begin(16,2);// Indicamos medidas de LCD
NuMax = 0;
lcd.blink();
lcd.print("MONITOR SERVICE");
lcd.setCursor(0,1);
lcd.print(" EA1HXG ");
delay(4000);
lcd.clear();
}
void loop()
{
// AD9850.set_frequency(0,0,1000);
leerKeypad();
}
void leerKeypad()
{
char key = keypad.getKey();
if (key != NO_KEY){
if (NuMax < 9) {
switch (key) {
case '1':
teclas = (teclas + "1");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '2':
teclas = (teclas + "2");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '3':
teclas = (teclas + "3");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '4':
teclas = (teclas + "4");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '5':
teclas = (teclas + "5");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '6':
teclas = (teclas + "6");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '7':
teclas = (teclas + "7");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '8':
teclas = (teclas + "8");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '9':
teclas = (teclas + "9");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
case '0':
teclas = (teclas + "0");
lcd.setCursor(0,0);
lcd.print(teclas);
NuMax ++;
delay(150);
break;
}
}
switch (key) {
case '*':
teclas = "";
lcd.clear();
lcd.blink();
lcd.print("INPUT FRECUENCY");
lcd.setCursor(0,1);
lcd.print("1Hz to 30MHz + #");
delay(1000);
lcd.clear();
NuMax = 0;
teclas = "";
delay(150);
break;
case '#':
delay(150);
teclas.toCharArray(cadena,9);
frecuencia=atol (cadena); // convierte cadenas tipo string a numero
AD9850.set_frequency(frecuencia);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(frecuencia);
lcd.print(" Hz");
teclas = "";
NuMax = 0;
break;
case 'A':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RX TEST");
digitalWrite(TX,LOW);
digitalWrite(RX,HIGH);
teclas = "";
NuMax = 0;
delay(150); // debounce
break;
case 'B':
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TX TEST");
digitalWrite(RX,LOW);
digitalWrite(TX,HIGH);
teclas = "";
NuMax = 0;
delay(150); // debounce
break;
case 'C':
delay(150); // debounce
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MOD ON");
digitalWrite(MOD,HIGH);
else {
if (MOD=HIGH)
digitalWrite (MOD,LOW)
}
teclas = "";
NuMax = 0;
break;
case 'D':
delay(150); // debounce
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1000000 Hz");
AD9850.set_frequency(1000000);
teclas = "";
NuMax = 0;
break;}
}
}
EDITADO la carpeta con la info es esta,aqui ire añadiendo la info del proyecto.
onedrive.live.com/redir?resid=E7FE5DFEA9...&ithint=folder%2cjpg