Part 1
The GENERATOR
Dimensions : 100mm X 55mm single layer
The GENERATOR SKETCH
//An original idea of AD7C adapted by F8VOA for for personal use.
//The program may be freely used for personal but not for commercial purposes.
//_______________________Determine and open the "library"________________________________________________________
#include <Adafruit_GFX.h> // Core graphics library https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_ST7735.h> // Hardware-specific library https://github.com/adafruit/Adafruit-ST7735-Library
#include <SPI.h>
#include <AD9850.h> // AD-9850 DDS generator https://github.com/F4GOJ/AD9850
#include <rotary.h> // Use the rotary.h your kind of encoder (different options)
#include <Rotary.h> // https://www.ebay.fr/itm/10-pieces-12-mm-key-switch-rotary-encoder-switch-LW/172336809060?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
#include <EEPROM.h>
//____________________________1.8 SPI TFT 128*160 (KMR-1.8 SPI)screen settings___________________________________
// http://henrysbench.capnfatz.com/henrys-bench/arduino-displays/1-8tft-v1-0-st7736-arduino-tutorial-1-hello-world/#comment-34975
#define TFT_SCLK 13 // Arduino pin D13 ==> pin 9 1.8" TFT Display SCLK.
#define TFT_MOSI 11 // Arduino pin D11 ==> pin 8 1.8" TFT Display MOSI.
#define TFT_CS 10 // Arduino pin D10 ==> pin 10 1.8" TFT Display CS.
#define TFT_RST 9 // Arduino pin D9 ==> pin 6 1.8" TFT Display RST.
#define TFT_DC 8 // Arduino pin D8 ==> pin 7 1.8" TFT Display DC.
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
//______________________Some settings to do before running the program___________________________________________
#define W_CLK 7 // Arduino Pin D7 ==> pin 2 AD9850 W_CLK.
#define FQ_UD 6 // Arduino Pin D6 ==> pin 3 AD9850 FQ_UD.
#define DATA 5 // Arduino Pin D5 ==> pin 4 AD9850 DATA of D7.
#define RESET 4 // Arduino Pin D4 ==> pin 5 AD9850 RST.
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
Rotary r = Rotary(2,3); // Arduino Pin D2 & D3 ==> Rotary encoder( frequency connects to interrupt pins)
int_fast32_t freq_start=100; // Quick start on 100 Hz (100 Hz button on front panel )
int_fast32_t freq_start1=1000; // Quick start on 1KHz (1 KHz button on front panel )
int_fast32_t freq_start2=1000000; // Quick start on 1 MHz (1 MHz button on front panel )
int_fast32_t rx=10000000; // First start-up VFO/Generator frequency .(32 bit number)
int_fast32_t rx2=1; // variable writing the "updated frequency" the memory(32 bit number)
int_fast32_t increment = 1; // First start-up increment frequency in Hz.(32 bit number)
const int dB_relay = A0; // Set A0 as dB_relay control
const int dB_button = A5; // Set A5 as dB_button control (switch between 0 and 10dBm output)
int dB_state = 0; // Set the Old state of the dB_button to 0 (control state)
int dB_state1 = 0; // Set the New state of the dB_button to 0 (control state)
int step_button = 0; // Set the state of the step_button to 0 (step settings on front panel)
int Hz_button = 0; // Set the state of the direct 100Hz button to 0
int KHz_button = 0; // Set the state of the direct 1KHz button to 0
int MHz_button = 0; // Set the state of the direct 1MHz button to 0
String step_freq = "1 Hz"; // String for the step-frequency
byte ones,tens,hundreds,thousands,tenthousands,hundredthousands,millions ; //Placeholders
String freq; // string to hold the frequency
int_fast32_t timepassed = millis(); // int to hold the arduino millis since startup (32 bit number)
int memstatus = 1; // value to notify if memory is current or old. 0=old, 1=current.
int ForceFreq = 0; // Change this to 0 after you upload and run a working sketch to activate the EEPROM memory.
// YOU MUST PUT THIS BACK TO 0 AND UPLOAD THE SKETCH AGAIN AFTER STARTING FREQUENCY IS SET!
//____________________Setup the Pin-modes_______________________________________________________________________
void setup() {
Serial.begin(9600);
pinMode(dB_relay, OUTPUT); // Determine the dB_relay (A0) as switch for the 0dB-mode
digitalWrite(dB_relay, LOW); // Make dB_relay 0-Volt (LOW)
pinMode(A1,INPUT); // 100Hz switch. GND (LOW) when pushed.
digitalWrite(A1,HIGH); // Make pin A1 HIGH (5V)
pinMode(A2,INPUT); // 1KHz switch. GND (LOW) when pushed.
digitalWrite(A2,HIGH); // Make pin A2 HIGH (5V)
pinMode(A3,INPUT); // 1MHz switch. GND (LOW) when pushed.
digitalWrite(A3,HIGH); // Make pin A3 HIGH (5V)
pinMode(A4,INPUT); // Step-switch ( on frequency encoder). GND (LOW) when pushed.
digitalWrite(A4,HIGH); // Make pin A4 HIGH (5V)
pinMode(dB_button,INPUT_PULLUP); // 0dB-switch. GND (LOW) when pushed.
digitalWrite(dB_button,HIGH); // Make dB_button HIGH (5V)
pinMode(FQ_UD, OUTPUT); // Output Arduino Pin D6 ==> AD9850 pin 3 FQ_UD.
pinMode(W_CLK, OUTPUT); // Output Arduino Pin D7 ==> AD9850 pin 2 W_CLK.
pinMode(DATA, OUTPUT); // Output Arduino Pin D5 ==> AD9850 pin 4 DATA of D7.
pinMode(RESET, OUTPUT); // Output Arduino Pin D4 ==> AD9850 pin 5 RST.
pinMode(2, INPUT_PULLUP); // Make pin2 as en INPUT with PULLUP resistor
pinMode(3, INPUT_PULLUP); // Make pin3 as en INPUT with PULLUP resistor
//________First initialization of the tft screen with permanent data_________
tft.initR(INITR_BLACKTAB); // https://forum.arduino.cc/index.php?topic=236304.0
tft.setRotation(1); // Turn the screen over 270°(1=90° , 2=180° , 3=270° )
tft.setTextWrap(false); // Don't stop writng at the end of the screen(cr)
tft.fillScreen(ST7735_BLACK); // Fill up the screen with BLACK COLOR
tft.setCursor(1,1); // Place the cursor on line 1 , position 1
tft.setTextSize(1); // Set the textSize on standard size
tft.setTextColor(ST7735_WHITE); // Set the textColor to WHITE
tft.println(" -F8VOA Signal Generator-");
tft.setCursor(15, tft.height() -20); // Place the cursor on line -20 , position 15
tft.setTextSize(1); // Set the textSize on standard size
tft.drawFastHLine(0, tft.height() - 23, tft.width()-10, ST7735_WHITE); // Draw a white line on line -23 , position 0
tft.setTextColor(ST7735_WHITE); // Set the textColor to WHITE
tft.println("AD9850 1 Hz to 30 Mc ");
tft.print(" Sinewave generator");
tft.setTextColor(ST7735_CYAN); // Set the textColor to CYAN
tft.setCursor(10, 20); // Place the cursor on line 10 , position 20
tft.setTextSize(1); // Set the textSize on standard size
tft.print("Step: ");
tft.setTextSize(2); // Set the textSize on n°2 size
tft.setCursor(60, 15); // Place the cursor on line 15 , position 60
tft.print(step_freq); // Print the Step-frequency
//_______________________________________Interrupt settings___________________________________
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 << PCINT19);
sei();
pulseHigh(RESET); //High clears all registers exept the input register
pulseHigh(W_CLK); //Pulse high the word load clock
pulseHigh(FQ_UD); //this pulse enables serial mode on the AD9850 - Datasheet page 12.
//_______________________________________Read the frequency from the memory______________________
if (ForceFreq == 0) {
freq = String(EEPROM.read(0))+String(EEPROM.read(1))+String(EEPROM.read(2))+String(EEPROM.read(3))+String(EEPROM.read(4))+String(EEPROM.read(5))+String(EEPROM.read(6));
rx = freq.toInt();
}
}
//_______________________________________________________________________________________________
// _________________Interrupt routine to snap rotary-encoder ____________________________________
ISR(PCINT2_vect) {
unsigned char result = r.process();
if (result) {
if (result == DIR_CW){rx=rx+increment;} // If the result is clockwize then frequency = frequency + step
else {rx=rx-increment;}; // If the result is counter clockwize then frequency = frequency - step
if (rx >=35000000){rx=rx2;}; // Top-limitation of the Generator/VFO.(change this for your own use)
if (rx <=9){rx=rx2;}; // Bottem-limitation of the frequency Generator/VFO.(change this for your own use)
}
}
//_________Frequency calculation(Frequentie=<sys clock>*<frequency tuning word>/2^32)_____________
void sendFrequency(double frequency) {
int32_t freq = frequency * 4294967295/125000000; // The AD-9850 clock-oscillator is 125 MHz.
// A small frequency variation is possible( do the math).
for (int b=0; b<4; b++, freq>>=8) {
tfr_byte(freq & 0xFF);
}
tfr_byte(0x000); // The final control-byte (all 0 for 9850 chip).
pulseHigh(FQ_UD); // Done! the frequency is avalable
}
//______________Byte transfer , 1 bit at the time , first LSB via serial DATA ==> AD9850__________
void tfr_byte(byte data)
{
for (int i=0; i<8; i++, data>>=1) {
digitalWrite(DATA, data & 0x01);
pulseHigh(W_CLK); // After every bit send , pulse the CLK on 5V ( high)
}
}
//____________________Print the signal-strength on the screen_______________________________________
void printsign()
{Serial.println(dB_state);Serial.println(dB_state1);
if (dB_state == 0)
{digitalWrite(dB_relay, HIGH);Serial.println(dB_relay);
dB_state1 = dB_state;
tft.fillRect(35,80,100,20,ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.setCursor(35,80);
tft.print( " 0dBm");
}
else
{digitalWrite(dB_relay, LOW);
dB_state1 = dB_state;
tft.fillRect(35,80,100,20,ST7735_BLACK);
tft.setTextColor(ST7735_CYAN);
tft.setTextSize(2);
tft.setCursor(35,80);
tft.print( "+10dBm");
}
}
//______________________The frequency step settings________________________________________________
void setincrement(){
if(increment == 1){increment = 10; step_freq = "10 Hz";}
else if (increment == 10){increment = 50; step_freq = "50 Hz";}
else if (increment == 50){increment = 100; step_freq = "100 Hz";}
else if (increment == 100){increment = 500; step_freq="500 Hz"; }
else if (increment == 500){increment = 1000; step_freq="1 Kc"; }
else if (increment == 1000){increment = 2500; step_freq="2.5 Kc"; }
else if (increment == 2500){increment = 5000; step_freq="5 Kc"; }
else if (increment == 5000){increment = 10000; step_freq="10 Kc";}
else if (increment == 10000){increment = 100000; step_freq="100 Kc";}
else if (increment == 100000){increment = 1000000; step_freq="1 Mc";}
else{increment = 1; step_freq = "1 Hz";}
//____________________Print the frequency-step on the screen_______________________________________
tft.fillRect(0, 15, 160, 20, ST7735_BLACK);
tft.setTextColor(ST7735_CYAN);
tft.setCursor(10, 20);
tft.setTextSize(1);
tft.print("Step");
tft.setTextSize(2);
tft.setCursor(60, 15);
tft.print(step_freq);
delay(250); // Adjust this delay to speed up/slow down the button menu scroll speed.
};
//___________________Print the generator frequency on the screen___________________________________
void showFreq(){
millions = int(rx/1000000);
hundredthousands = ((rx/100000)%10);
tenthousands = ((rx/10000)%10);
thousands = ((rx/1000)%10);
hundreds = ((rx/100)%10);
tens = ((rx/10)%10);
ones = ((rx/1)%10);
if (millions > 0) { // Frequency in the x.xxx.xxx range
tft.fillRect(0, 40, 160, 35, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(2);
tft.setCursor(5, 50);
tft.print(millions);
tft.print(",");
tft.setTextColor(ST7735_YELLOW);
tft.print(hundredthousands);
tft.print(tenthousands);
tft.print(thousands);
tft.print(".");
tft.setTextColor(ST7735_CYAN);
tft.print(hundreds);
tft.print(tens);
tft.print(ones);
tft.setTextColor(ST7735_BLUE);
tft.print(" Mc");
}
else if (millions == 0 & hundredthousands > 0){ // Frequency in the xxx.xxx range
tft.fillRect(0, 40, 160, 35, ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.setCursor(5, 50);
tft.print(" ");
tft.print(hundredthousands);
tft.print(tenthousands);
tft.print(thousands);
tft.print(",");
tft.setTextColor(ST7735_CYAN);
tft.print(hundreds);
tft.print(tens);
tft.print(ones);
tft.setTextColor(ST7735_BLUE);
tft.print(" Kc");
}
else if (millions == 0 & hundredthousands == 0 & tenthousands > 0){ // Frequency in the xx.xxx range
tft.fillRect(0, 40, 160, 35, ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.setCursor(5, 50);
tft.print(" ");
tft.print(tenthousands);
tft.print(thousands);
tft.print(",");
tft.setTextColor(ST7735_CYAN);
tft.print(hundreds);
tft.print(tens);
tft.print(ones);
tft.setTextColor(ST7735_BLUE);
tft.print(" Kc");
}
else if (millions == 0 & hundredthousands == 0 & tenthousands == 0 & thousands > 0){ // Frequency in the x.xxx range
tft.fillRect(0, 40, 160, 35, ST7735_BLACK);
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
tft.setCursor(5, 50);
tft.print(" ");
tft.print(thousands);
tft.print(",");
tft.setTextColor(ST7735_CYAN);
tft.print(hundreds);
tft.print(tens);
tft.print(ones);
tft.setTextColor(ST7735_BLUE);
tft.print(" Kc");
}
else { // Frequency in the xxx range
tft.fillRect(0, 40, 160, 35, ST7735_BLACK);
tft.setTextColor(ST7735_CYAN);
tft.setTextSize(2);
tft.setCursor(10, 50);
tft.print(" ");
tft.print(hundreds);
tft.print(tens);
tft.print(ones);
tft.setTextColor(ST7735_BLUE);
tft.print(" Hz");
}
timepassed = millis();
memstatus = 0; // Trigger memory write
};
//_____________Write the frequency to the memory_______________________________________________
void storeMEM(){
EEPROM.write(0,millions);
EEPROM.write(1,hundredthousands);
EEPROM.write(2,tenthousands);
EEPROM.write(3,thousands);
EEPROM.write(4,hundreds);
EEPROM.write(5,tens);
EEPROM.write(6,ones);
memstatus = 1; // Let program know memory has been written
};
// ________________________________Start the loop______________________________________________
void loop() {
{dB_state=digitalRead(dB_button);if (dB_state != dB_state1){printsign();}
{if (rx != rx2){sendFrequency(rx);rx2 = rx; showFreq();}}
// ____________________Set the step.________________________
{step_button =digitalRead(A4); if( step_button == LOW) {setincrement();}}
// ______________Set the start-frequency.___________________
{Hz_button = digitalRead(A1); if( Hz_button == LOW) { rx=freq_start; }}
{KHz_button = digitalRead(A2); if( KHz_button == LOW) { rx=freq_start1;}}
{MHz_button = digitalRead(A3); if( MHz_button == LOW) { rx=freq_start2;}}
// ______________Write to the memory________________________
{if(memstatus == 0){ if(timepassed+2000 < millis()){storeMEM(); }}
}} }
//_________________________End_________________________________________________________
The circuit diagram.
The ATTENUATOR sketch
//Attenuater sketch for the MARCOGEN 0dBm
to -127dBm - design by F8VOA
/*The
program may be freely used for personal and but not for commercial purposes.
1)
TFT-screen =
https://www.ebay.fr/itm/263449145336
2) Rotator =
https://www.ebay.fr/itm/10-pieces-12-mm-key-switch-rotary-encoder-switch-LW/172336809060?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
3) Atmega 328 = https://www.ebay.fr/itm/IC-ATMEGA328P-PU-ATMEGA328P-DIP28-Microcontroller-ATMEL-NEW-DIP-SOCKET/253239946774?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
4) Relay =
https://www.ebay.fr/itm/10Pcs-hk19f-dc12v-shg-dc-12v-coil-dpdt-8pin-pcb-realplay-power-relay-GT/152958373987?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
5) More info on "
http://f8voa.blogspot.com" */
//___________________________________________The
Library________________________________________________________
#include
<Adafruit_GFX.h> //
Core graphics library https://github.com/adafruit/Adafruit-GFX-Library
#include <Adafruit_ST7735.h> // Hardware-specific library
https://github.com/adafruit/Adafruit-ST7735-Library
#include <SPI.h>
#include <rotary.h> //Use the rotary.h your
kind of encoder (different options)
//
https://www.ebay.fr/itm/10-pieces-12-mm-key-switch-rotary-encoder-switch-LW/172336809060?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
//____________________________The 1.8 SPI
TFT 128*160 (KMR-1.8 SPI) definition___________________________________
//
http://henrysbench.capnfatz.com/henrys-bench/arduino-displays/1-8tft-v1-0-st7736-arduino-tutorial-1-hello-world/#comment-34975
#define TFT_SCLK 13
// Arduino pin D13 ==> pin 9
1.8" TFT Display SCLK.
#define TFT_MOSI 11
// Arduino pin D11 ==> pin 8
1.8" TFT Display MOSI.
#define TFT_CS 10 // Arduino pin D10 ==> pin
10 1.8" TFT Display CS.
#define TFT_RST 9 // Arduino pin D9 ==> pin 6
1.8" TFT Display RST.
#define TFT_DC 8 // Arduino pin D8 ==> pin 7
1.8" TFT Display DC.
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
//______________________Some
settings to do before running the
program___________________________________________
#define pulseHigh(pin) {digitalWrite(pin,
HIGH); digitalWrite(pin, LOW); }
Rotary r =
Rotary(2,3); // Arduino Pin D2 & D3 ==>
Rotary encoder( Attenuation connects to interrupt pins)
#define
RL_1dB 4 // Arduino
Pin D4 ==> relay board connection -1dB
#define
RL_2dB 5 // Arduino
Pin D5 ==> relay board connection -2dB
#define
RL_4dB 6 // Arduino
Pin D6 ==> relay board connection -4dB
#define
RL_8dB 7 // Arduino
Pin D7 ==> relay board connection -8dB
#define
RL_16dB A0 // Arduino
pin A0 ==> relay board connection -16dB
#define
RL_32dB A1 // Arduino
pin A1 ==> relay board connection -32dB
#define
RL_64dB A2 // Arduino
pin A2 ==> relay board connection -64dB
int dB1=127; // Start-up with
-127dBm
int dB2=0; // Variable
writing the "updated
attenuation" in the memory(32 bit number)
int
increment=1; //
First start-up attenuation increment with -1dB.(32 bit number)
int dB_button=0; // Set the state of the
dB_button to 0 (dB settings on front panel)
float uW=199; // Start -127dBm =
199.53 aW ( atto Watt )
float mV=100.00; // Start -127dBm = 100nV
RMS ( root-mean-square )
int dBmV=-80; // Start -127dBm =
-80dBmV
int dBuV=-20; // Start -127dBm =
-20dBuV
int S=0; // Start -127dBm = 0 S-value
int
RI=0; //
Start -127dBm = 0 relative intensity
//____________________Setup
the
Pin-modes_______________________________________________________________________
void setup()
{
pinMode(A4,INPUT); // Make A4 as an INPUT
(Quick 0dB-switch)
digitalWrite(A4,HIGH); // Set A4 to 5V (HIGH)
pinMode(RL_1dB, OUTPUT); // Make RL_1dB (pin D4) as an
OUTPUT (-1dB)
digitalWrite(RL_1dB,
LOW); // Set D4 to 0V (LOW)
pinMode(RL_2dB,
OUTPUT); // Make RL_2dB (pin
D5) as an OUTPUT (-2dB)
digitalWrite(RL_2dB,
LOW); // Set D5 to 0V (LOW)
pinMode(RL_4dB,
OUTPUT); // Make RL_4dB (pin
D6) as an OUTPUT (-4dB)
digitalWrite(RL_4dB,
LOW); // Set D6 to 0V (LOW)
pinMode(RL_8dB,
OUTPUT); // Make RL_8dB (pin
D7) as an OUTPUT (-8dB)
digitalWrite(RL_8dB,
LOW); // Set D7 to 0V (LOW)
pinMode(RL_16dB,
OUTPUT); // Make RL_16dB (pin A0) as an OUTPUT
(-16dB)
digitalWrite(RL_16dB, LOW); // Set A0 to 0V (LOW)
pinMode(RL_32dB, OUTPUT); // Make RL_32dB (pin A1) as an
OUTPUT (-32dB)
digitalWrite(RL_32dB, LOW); // Set A1 to 0V (LOW)
pinMode(RL_64dB, OUTPUT); // Make RL_64dB (pin A2) as an
OUTPUT (-64dB)
digitalWrite(RL_64dB, LOW); // Set A2 to 0V (LOW)
pinMode(2,
INPUT_PULLUP); // Make pin D2
as en INPUT with PULLUP resistor
pinMode(3, INPUT_PULLUP);
// Make pin D3 as en INPUT with PULLUP resistor
//________First
initialization of the tft screen with permanent data_________
tft.initR(INITR_BLACKTAB);
// https://forum.arduino.cc/index.php?topic=236304.0
tft.setRotation(1);
// Turn the screen over 270°(1=90° , 2=180° , 3=270° )
tft.setTextWrap(false);
// Don't stop writng at the end of the screen(cr)
tft.fillScreen(ST7735_BLACK);
// Fill up the screen with BLACK COLOR
tft.setCursor(1,1); //
Place the cursor on line 1 , position 1
tft.setTextSize(1);
// Set the textSize on standard size
tft.setTextColor(ST7735_WHITE); // Set the
textColor to WHITE
tft.println(" ---F8VOA RF
Attenuator---");
tft.setTextColor(ST7735_CYAN);
tft.setCursor(10, 20);
tft.setTextSize(1);
tft.print("Unit ");
tft.setTextSize(1);
tft.drawFastHLine(10, tft.height()- 98, tft.width()-130,
ST7735_CYAN);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 20);
tft.print("Signal Level");
tft.setTextSize(1);
tft.drawFastHLine(70, tft.height()- 98, tft.width()-90,
ST7735_GREEN);
tft.setTextColor(ST7735_CYAN);
tft.setTextSize(2);
tft.setCursor(10,35);
tft.print("dBm");
tft.setTextSize(1);
tft.setCursor(10,60);
tft.print("Power");
tft.setCursor(10,70);
tft.print("dBmV");
tft.setCursor(10,80);
tft.print("dBuV");
tft.setCursor(10,90);
tft.print("uV/mV");
tft.setCursor(10,100);
tft.print("S-value ");
tft.setCursor(10,110);
tft.print("Relative");
tft.setCursor(10,120);
tft.print("Intensity");
//_______________________________________Interrupt
settings___________________________________
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 <<
PCINT19);
sei();}
ISR(PCINT2_vect)
{
unsigned char result = r.process();
if (result) {
if (result ==
DIR_CW){dB1=dB1+increment;}
// If the result is clockwize then
Att=Att+step.
else
{dB1=dB1-increment;}; // If the result
is counter clockwize then , de Att=Att-step.
if (dB1 >=127){dB1=127;}; //
Top-limitation of the Attenuator
if (dB1 <=0) {dB1=0;}; //
Bottom-limitation of the Attenuator
}
}
//___________________Print the
attenuation in dBm _________________________________________________
void printItems(){
tft.fillRect(70, 35, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setCursor(70, 35);
tft.setTextSize(2);
tft.print("-");
tft.print(dB1);
//___________________Print the attenuation
in
uW__________________________________________________
tft.fillRect(70, 60, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 60);
tft.print(uW);
if
(dB1 >=121) {tft.print(" aW");}
else if (dB1 >=91) {tft.print("
fW");}
else if
(dB1 >=61) {tft.print(" pW");}
else if (dB1 >=31) {tft.print(" nW");}
else if (dB1 >=1 ) {tft.print(" uW");}
else {tft.print(" mW") ;}
//___________________Print the attenuation
in
dBmV___________________________________________________
tft.fillRect(70, 70, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 70);
tft.print(dBmV);
tft.print(" dBmV");
//___________________Print the attenuation
in
dBuV___________________________________________________
tft.fillRect(70, 80, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
dBuV=dBmV+60;
tft.setCursor(70, 80);
tft.print(dBuV);
tft.print(" dBuV");
//___________________Print the attenuation in
uV/mV___________________________________________________
tft.fillRect(70, 90, 160, 60, ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 90);
tft.print(mV);
if (dB1 >=117) {tft.print(" nV RMS");}
else if (dB1 >=48) {tft.print(" uV RMS");}
else {tft.print(" mV RMS") ;}
//___________________Print de S-waardein
dB__________________________________________________________
tft.fillRect(70, 100, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 100);
if
(dB1==127){(S=0);tft.print(S);}
else if (dB1==121){(S=1);tft.print(S);}
else if (dB1==115){(S=2);tft.print(S);}
else if (dB1==109){(S=3);tft.print(S);}
else if (dB1==103){(S=4);tft.print(S);}
else if (dB1==97) {(S=5);tft.print(S);}
else if (dB1==91) {(S=6);tft.print(S);}
else if (dB1==85) {(S=7);tft.print(S);}
else if (dB1==79) {(S=8);tft.print(S);}
else if (dB1==73) {(S=9);tft.print(S);}
else if (dB1==63) {(S=9);tft.print(S);tft.print("+10dB");}
else if (dB1==53) {(S=9);tft.print(S);tft.print("+20dB");}
else if (dB1==43) {(S=9);tft.print(S);tft.print("+30dB");}
else if (dB1==33) {(S=9);tft.print(S);tft.print("+40dB");}
else {tft.fillRect(70, 100,
160, 60, ST7735_BLACK);}
//___________________Print the attenuation in
dB______________________________________________
tft.fillRect(70, 110, 160, 60,
ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70, 110);
if
(dB1==127){(RI=-54);tft.print(RI);tft.print("dB");}
else if (dB1==121){(RI=-48);tft.print(RI);tft.print("dB");}
else if (dB1==115){(RI=-42);tft.print(RI);tft.print("dB");}
else if (dB1==109){(RI=-36);tft.print(RI);tft.print("dB");}
else if (dB1==103){(RI=-30);tft.print(RI);tft.print("dB");}
else if (dB1==97) {(RI=-24);tft.print(RI);tft.print("dB");}
else if (dB1==91) {(RI=-18);tft.print(RI);tft.print("dB");}
else if (dB1==85) {(RI=-12);tft.print(RI);tft.print("dB");}
else if (dB1==79) {(RI=-6);tft.print(RI);tft.print("dB");}
else if (dB1==73) {(RI=0);tft.print(RI);tft.print("dB");}
else if (dB1==63) {(RI=10);tft.print(RI);tft.print("dB");}
else if (dB1==53) {(RI=20);tft.print(RI);tft.print("dB");}
else if (dB1==43) {(RI=30);tft.print(RI);tft.print("dB");}
else if (dB1==33) {(RI=40);tft.print(RI);tft.print("dB");}
else {tft.fillRect(70, 110,
160, 60, ST7735_BLACK);}
};
// ___________________Start the
loop______________________________________________________________
void loop() {
if (dB1 != dB2){
dB2 = dB1;
printItems();
}
dB_button=digitalRead(A4);
if (dB_button==LOW){
dB1=0; };
if(dB1==0){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=1;dBmV=47;mV=224;}
if(dB1==1){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=794.33;dBmV=46;mV=200;}
if(dB1==2){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=630.96;dBmV=45;mV=178;}
if(dB1==3){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=501.19;dBmV=44;;mV=158;}
if(dB1==4){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=398.11;dBmV=43;mV=141;}
if(dB1==5){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=316.23;dBmV=42;mV=126;}
if(dB1==6){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=251.19;dBmV=41;mV=112;}
if(dB1==7){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
LOW);uW=199.53;dBmV=40;mV=100;}
if(dB1==8){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=158.49;dBmV=39;mV=89.1;}
if(dB1==9){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=125.89;dBmV=38;mV=79.4;}
if(dB1==10){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=100;dBmV=37;mV=70.7;}
if(dB1==11){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=79.43;dBmV=36;mV=63.1;}
if(dB1==12){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=63.1;dBmV=35;mV=56.2;}
if(dB1==13){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=50.12;dBmV=34;mV=50.1;}
if(dB1==14){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=39.81;dBmV=33;mV=44.7;}
if(dB1==15){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=31.62;dBmV=32;mV=39.8;}
if(dB1==16){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=25.12;dBmV=31;mV=35.5;}
if(dB1==17){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=19.95;dBmV=30;mV=31.6;}
if(dB1==18){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
LOW);uW=15.85;dBmV=29;mV=28.2;}
if(dB1==19){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=12.59;dBmV=28;mV=25.1;}
if(dB1==20){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=10;dBmV=27;mV=22.4;}
if(dB1==21){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=7.94;dBmV=26;mV=20.0;}
if(dB1==22){digitalWrite(RL_1dB, LOW);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=6.31;dBmV=25;mV=17.8;}
if(dB1==23){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
LOW);uW=5.01;dBmV=24;mV=15.8;}
if(dB1==24){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=3.98;dBmV=23;mV=14.1;}
if(dB1==25){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=3.16;dBmV=22;mV=12.6;}
if(dB1==26){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=2.51;dBmV=21;mV=11.2;}
if(dB1==27){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
LOW);uW=2;dBmV=20;mV=10;}
if(dB1==28){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=1.58;dBmV=19;mV=8.91;}
if(dB1==29){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=1.26;dBmV=18;mV=7.94;}
if(dB1==30){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, LOW);uW=1;dBmV=17;mV=7.079;}
if(dB1==31){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
LOW);uW=794.33;dBmV=16;mV=6.31;}
if(dB1==32){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=630.96;dBmV=15;mV=5.62;}
if(dB1==33){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=501.19;dBmV=14;mV=5.01;}
if(dB1==34){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=398.11;dBmV=13;mV=4.47;}
if(dB1==35){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=316.23;dBmV=12;mV=3.98;}
if(dB1==36){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=251.19;dBmV=11;mV=3.55;}
if(dB1==37){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
LOW);uW=199.53;dBmV=10;mV=3.16;}
if(dB1==38){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=158.49;dBmV=9;mV=2.82;}
if(dB1==39){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB, LOW);uW=125.89;dBmV=8;mV=2.51;}
if(dB1==40){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=100;dBmV=7;mV=2.24;}
if(dB1==41){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=79.43;dBmV=6;mV=2;}
if(dB1==42){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=63.1;dBmV=5;mV=1.78;}
if(dB1==43){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=50.12;dBmV=4;mV=1.58;}
if(dB1==44){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=39.81;dBmV=3;mV=1.413;}
if(dB1==45){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=31.62;dBmV=2;mV=1.259;}
if(dB1==46){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=25.12;dBmV=1;mV=1.122;}
if(dB1==47){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
LOW);uW=19.95;dBmV=0;mV=1;}
if(dB1==48){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=15.85;dBmV=-1;mV=891;}
if(dB1==49){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=12.59;dBmV=-2;mV=794;}
if(dB1==50){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=10;dBmV=-3;mV=707;}
if(dB1==51){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
LOW);uW=7.94;dBmV=-4;mV=631;}
if(dB1==52){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=6.31;dBmV=-5;mV=562;}
if(dB1==53){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=5.01;dBmV=-6;mV=501;}
if(dB1==54){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=3.98;dBmV=-7;mV=447;}
if(dB1==55){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=3.16;dBmV=-8;mV=398;}
if(dB1==56){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
LOW);uW=2.51;dBmV=-9;mV=355;}
if(dB1==57){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=2;dBmV=-10;mV=316;}
if(dB1==58){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=1.58;dBmV=-11;mV=282;}
if(dB1==59){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=1.26;dBmV=-12;mV=251;}
if(dB1==60){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=1;dBmV=-13;mV=224;}
if(dB1==61){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=794.33;dBmV=-14;mV=200;}
if(dB1==62){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=630.96;dBmV=-15;mV=178;}
if(dB1==63){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, LOW);uW=501.19;dBmV=-16;mV=158;}
if(dB1==64){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=398.11;dBmV=-17;mV=141;}
if(dB1==65){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=316.23;dBmV=-18;mV=126;}
if(dB1==66){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=251.19;dBmV=-19;mV=112;}
if(dB1==67){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=199.53;dBmV=-20;mV=100;}
if(dB1==68){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=158.49;dBmV=-21;mV=89.1;}
if(dB1==69){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=125.89;dBmV=-22;mV=79.4;}
if(dB1==70){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=100;dBmV=-23;mV=70.7;}
if(dB1==71){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=79.43;dBmV=-24;mV=63.1;}
if(dB1==72){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=63.1;dBmV=-25;mV=56.2;}
if(dB1==73){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=50.12;dBmV=-26;mV=50.1;}
if(dB1==74){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=39.81;dBmV=-27;mV=44.7;}
if(dB1==75){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=31.62;dBmV=-28;mV=39.8;}
if(dB1==76){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=25.12;dBmV=-29;mV=35.5;}
if(dB1==77){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=19.95;dBmV=-30;mV=31.6;}
if(dB1==78){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=15.85;dBmV=-31;mV=28.2;}
if(dB1==79){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB, HIGH);uW=12.59;dBmV=-32;mV=25.1;}
if(dB1==80){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=10;dBmV=-33;mV=22.4;}
if(dB1==81){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=7.94;dBmV=-34;mV=20;}
if(dB1==82){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=6.31;dBmV=-35;mV=17.8;}
if(dB1==83){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=5.01;dBmV=-36;mV=15.8;}
if(dB1==84){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=3.98;dBmV=-37;mV=14.1;}
if(dB1==85){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=3.16;dBmV=-38;mV=12.6;}
if(dB1==86){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=2.51;dBmV=-39;mV=11.2;}
if(dB1==87){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=2;dBmV=-40;mV=10;}
if(dB1==88){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=1.58;dBmV=-41;mV=8.91;}
if(dB1==89){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=1.26;dBmV=-42;mV=7.94;}
if(dB1==90){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=1;dBmV=-43;mV=70.7;}
if(dB1==91){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=794.33;dBmV=-44;mV=6.31;}
if(dB1==92){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=630.96;dBmV=-45;mV=5.62;}
if(dB1==93){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=501.19;dBmV=-46;mV=5.01;}
if(dB1==94){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
LOW);digitalWrite(RL_64dB, HIGH);uW=398.11;dBmV=-47;mV=4.47;}
if(dB1==95){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, LOW);digitalWrite(RL_64dB,
HIGH);uW=316.23;dBmV=-48;mV=3.98;}
if(dB1==96){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=251.19;dBmV=-49;mV=3.55;}
if(dB1==97){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=199.53;dBmV=-50;mV=3.16;}
if(dB1==98){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=158.49;dBmV=-51;mV=2.82;}
if(dB1==99){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=125.89;dBmV=-52;mV=2.51;}
if(dB1==100){digitalWrite(RL_1dB, LOW);digitalWrite(RL_2dB,
LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=100;dBmV=-53;mV=2.24;}
if(dB1==101){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=79.43;dBmV=-54;mV=2;}
if(dB1==102){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=63.1;dBmV=-55;mV=1.78;}
if(dB1==103){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, LOW);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB, HIGH);uW=50.12;dBmV=-56;mV=1.58;}
if(dB1==104){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=39.81;dBmV=-57;mV=1.41;}
if(dB1==105){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=31.62;dBmV=-58;mV=1.26;}
if(dB1==106){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=25.12;dBmV=-59;mV=1.12;}
if(dB1==107){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=19.95;dBmV=-60;mV=1;}
if(dB1==108){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=15.85;dBmV=-61;mV=891;}
if(dB1==109){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=12.59;dBmV=-62;mV=794;}
if(dB1==110){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, LOW);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=10;dBmV=-63;mV=707;}
if(dB1==111){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
LOW);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=7.94;dBmV=-64;mV=631;}
if(dB1==112){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=6.31;dBmV=-65;mV=562;}
if(dB1==113){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=5.01;dBmV=-66;mV=501;}
if(dB1==114){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=3.98;dBmV=-67;mV=447;}
if(dB1==115){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=3.16;dBmV=-68;mV=398;}
if(dB1==116){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=2.51;dBmV=-69;mV=355;}
if(dB1==117){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=2;dBmV=-70;mV=316;}
if(dB1==118){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=1.58;dBmV=-71;mV=282;}
if(dB1==119){digitalWrite(RL_1dB,
HIGH);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB,
HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB, HIGH);uW=1.26;dBmV=-72;mV=251;}
if(dB1==120){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
LOW);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=1;dBmV=-73;mV=224;}
if(dB1==121){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
LOW);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=794.33;dBmV=-74;mV=200;}
if(dB1==122){digitalWrite(RL_1dB,
LOW);digitalWrite(RL_2dB, HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=630.96;dBmV=-75;mV=178;}
if(dB1==123){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, LOW);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=501.19;dBmV=-76;mV=158;}
if(dB1==124){digitalWrite(RL_1dB, LOW);digitalWrite(RL_2dB,
LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=398.11;dBmV=-77;mV=141;}
if(dB1==125){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
LOW);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB, HIGH);digitalWrite(RL_16dB,
HIGH);digitalWrite(RL_32dB, HIGH);digitalWrite(RL_64dB,
HIGH);uW=316.23;dBmV=-78;mV=126;}
if(dB1==126){digitalWrite(RL_1dB, LOW);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=251.19;dBmV=-79;mV=112;}
if(dB1==127){digitalWrite(RL_1dB, HIGH);digitalWrite(RL_2dB,
HIGH);digitalWrite(RL_4dB, HIGH);digitalWrite(RL_8dB,
HIGH);digitalWrite(RL_16dB, HIGH);digitalWrite(RL_32dB,
HIGH);digitalWrite(RL_64dB, HIGH);uW=199.53;dBmV=-80;mV=100;}
}
//_________________________End ____________________________________________________The circuit diagram.
The MODULATOR sketch
//Modulator
sketch for the MARCOGEN 0 to 100% AM-modulation - design by F8VOA
/*The program may be freely used for personal and but not
for commercial purposes.
1)
TFT-screen =
https://www.ebay.fr/itm/263449145336
2) Rotator =
https://www.ebay.fr/itm/10-pieces-12-mm-key-switch-rotary-encoder-switch-LW/172336809060?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
3) Atmega 328 =
https://www.ebay.fr/itm/IC-ATMEGA328P-PU-ATMEGA328P-DIP28-Microcontroller-ATMEL-NEW-DIP-SOCKET/253239946774?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
4)
Relay =
https://www.ebay.fr/itm/10Pcs-hk19f-dc12v-shg-dc-12v-coil-dpdt-8pin-pcb-realplay-power-relay-GT/152958373987?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
5) More info on "
http://f8voa.blogspot.com" */
//______________________The
Library________________________________________________________
#include <Adafruit_GFX.h> // Core graphics library https://github.com/adafruit/Adafruit-GFX-Library
#include
<Adafruit_ST7735.h> //
Hardware-specific library https://github.com/adafruit/Adafruit-ST7735-Library
#include
<SPI.h>
#include
<rotary.h> //
Use the rotary.h your kind of encoder (different options)
#include
<Rotary.h> //
https://www.ebay.fr/itm/10-pieces-12-mm-key-switch-rotary-encoder-switch-LW/172336809060?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649
//_____________The
1.8 SPI TFT 128*160 (KMR-1.8 SPI) definition___________________________________
//
http://henrysbench.capnfatz.com/henrys-bench/arduino-displays/1-8tft-v1-0-st7736-arduino-tutorial-1-hello-world/#comment-34975
#define TFT_SCLK 13 // Arduino pin D13 ==> pin
9 1.8" TFT Display SCLK.
#define TFT_MOSI 11 // Arduino pin D11 ==> pin
8 1.8" TFT Display MOSI.
#define TFT_CS 10 // Arduino pin D10 ==> pin
10 1.8" TFT Display CS.
#define TFT_RST 9 // Arduino pin D9 ==> pin 6
1.8" TFT Display RST.
#define TFT_DC 8 // Arduino pin D8 ==> pin 7
1.8" TFT Display DC.
Adafruit_ST7735 tft =
Adafruit_ST7735(TFT_CS, TFT_DC,
TFT_RST);
//________Some
settings to do before running the
program___________________________________________
#define
pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
Rotary r = Rotary(2,3);
#define RL_10 4 // Arduino Pin D4 ==>
relay board connection 10% modulation
#define RL_20 5 // Arduino Pin D5 ==>
relay board connection 20% modulation
#define RL_40 6 // Arduino Pin D6 ==>
relay board connection 40% modulation
#define RL_80 7 // Arduino Pin D7 ==>
relay board connection 80% modulation
const int RL_ON = A0; // Set A0 as dB_relay control
const
int RL_switch = A1; // Set
A5 as dB_button control (switch between 0 and 10dBm output)
int
dB_state = 0; // Set
the Old state of the dB_button to 0 (control state)
int
dB_state1 = 0; // Set
the New state of the dB_button to 0 (control state)
int
mod1=100; //
Start-up with 100% modulation
int
mod2=0; //
Variable writing the "updated
modulation" in the memory(32 bit number)
int increment=10; // First start-up
modulation increment with -1dB.(32 bit number)
int Quick_button=0; // Set the state of the
Quick_button to 0 (dB settings on front panel)
float
mV=199.5; // Start
with 199.5 mV modulation
//____________________Setup the
Pin-modes______________________________________________
void setup() {
pinMode(RL_ON,
OUTPUT); // Determine the
RL_ON (A0) as modulation relay
digitalWrite(RL_ON, LOW);
// Make RL_ON 0-Volt (LOW)
pinMode(RL_switch,INPUT_PULLUP);
// Modulation-switch (A1). GND (LOW) when pushed.
digitalWrite(RL_switch,HIGH);
// Make RL_switch (A1) HIGH (5V)
pinMode(A1,INPUT); // Make A1 as an INPUT
(switch modulation ON/OFF)
digitalWrite(A1,HIGH);
// Set A1 to 5V (HIGH)
pinMode(A4,INPUT);
// Make A4 as an INPUT (Quick
100% mod-switch)
digitalWrite(A4,HIGH); // Set A4 to 5V (HIGH)
pinMode(RL_10,
OUTPUT); // Make RL_10 (pin
D4) as an OUTPUT (10% modulation)
digitalWrite(RL_10,
LOW); // Set D4 to 0V (LOW)
pinMode(RL_20,
OUTPUT); // Make RL_20 (pin
D5) as an OUTPUT (20% modulation)
digitalWrite(RL_20,
LOW); // Set D5 to 0V (LOW)
pinMode(RL_40,
OUTPUT); // Make RL_40 (pin
D6) as an OUTPUT (40% modulation)
digitalWrite(RL_40,
LOW); // Set D6 to 0V (LOW)
pinMode(RL_80,
OUTPUT); // Make RL_80 (pin
D7) as an OUTPUT (80% modulation)
digitalWrite(RL_80,
LOW); // Set D7 to 0V (LOW)
pinMode(2, INPUT_PULLUP); // Make pin D2 as en INPUT with
PULLUP resistor
pinMode(3, INPUT_PULLUP); // Make pin D3 as en INPUT with
PULLUP resistor
//________First
initialization of the tft screen with permanent data_________
tft.initR(INITR_BLACKTAB);
// https://forum.arduino.cc/index.php?topic=236304.0
tft.setRotation(1);
// Turn the screen over 270°(1=90° , 2=180° , 3=270° )
tft.setTextWrap(false);
// Don't stop writng at the end of the screen(cr)
tft.fillScreen(ST7735_BLACK);
// Fill up the screen with BLACK COLOR
tft.setCursor(1,1);
// Place the cursor on line 1 , position 1
tft.setTextSize(1);
// Set the textSize on standard size
tft.setTextColor(ST7735_WHITE); //
Set the textColor to WHITE
tft.println("
---F8VOA AM Modulator---");
tft.drawFastHLine(1, tft.height()- 112,
tft.width()-2, ST7735_WHITE);
tft.setTextColor(ST7735_CYAN);
tft.setCursor(10, 20);
tft.setTextSize(1);
tft.print("Unit ");
tft.drawFastHLine(10, tft.height()- 98,
tft.width()-130, ST7735_CYAN);
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(70,
20);
tft.print("Signal Level");
tft.drawFastHLine(70, tft.height()- 98,
tft.width()-90, ST7735_GREEN);
tft.setTextColor(ST7735_CYAN);
tft.setTextSize(2);
tft.setCursor(10,35);
tft.print("Level");
tft.setTextSize(2);
tft.setCursor(10,60);
tft.print("AM MODULATON");
tft.drawFastHLine(1, tft.height()- 5,
tft.width()-2, ST7735_WHITE);
//____________________________________Interrupt
settings___________________________________
PCICR |= (1 << PCIE2);
PCMSK2 |= (1 << PCINT18) | (1 <<
PCINT19);
sei();}
ISR(PCINT2_vect)
{
unsigned char result = r.process();
if (result) {
if (result ==
DIR_CW){mod1=mod1+increment;}
else {mod1=mod1-increment;};
if (mod1 >=100){mod1=100;};
if (mod1 <=0) {mod1=0;};
} }
void printsign()
{ if (dB_state == 0){digitalWrite(RL_ON,
HIGH);dB_state1 = dB_state;
tft.fillRect(65,90,100,20,ST7735_BLACK);
tft.setTextColor(ST7735_BLUE);
tft.setTextSize(2);
tft.setCursor(65,90);
tft.print(
" ON");
}
else{digitalWrite(RL_ON, LOW);dB_state1 = dB_state;
tft.fillRect(65,90,100,20,ST7735_BLACK);
tft.setTextColor(ST7735_CYAN);
tft.setTextSize(2);
tft.setCursor(65,90);
tft.print( "OFF");
tft.drawFastHLine(1, tft.height()- 5,
tft.width()-2, ST7735_WHITE);
}
tft.fillRect(85,35,100,20,ST7735_BLACK);
tft.setTextColor(ST7735_GREEN);
tft.setCursor(85, 35);
tft.setTextSize(2);
tft.print(mod1);
tft.print("%");
}
//
___________________Start the loop________________________________________________
void
loop() {
{dB_state=digitalRead(RL_switch);
if
(dB_state != dB_state1){printsign(); }
Quick_button=digitalRead(A4);
if (Quick_button==LOW){mod1=
100; };
if (mod1 !=
mod2){mod2 = mod1; printsign(); }
if(mod1==0){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
LOW);digitalWrite(RL_40, LOW);digitalWrite(RL_80, LOW);}
if(mod1==10){digitalWrite(RL_10, HIGH);digitalWrite(RL_20,
LOW);digitalWrite(RL_40, LOW);digitalWrite(RL_80, LOW);}
if(mod1==20){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
HIGH);digitalWrite(RL_40, LOW);digitalWrite(RL_80, LOW);}
if(mod1==30){digitalWrite(RL_10, HIGH);digitalWrite(RL_20,
HIGH);digitalWrite(RL_40, LOW);digitalWrite(RL_80, LOW);}
if(mod1==40){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
LOW);digitalWrite(RL_40, HIGH);digitalWrite(RL_80, LOW);}
if(mod1==50){digitalWrite(RL_10, HIGH);digitalWrite(RL_20, LOW);digitalWrite(RL_40,
HIGH);digitalWrite(RL_80, LOW);}
if(mod1==60){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
HIGH);digitalWrite(RL_40, HIGH);digitalWrite(RL_80, LOW);}
if(mod1==70){digitalWrite(RL_10, HIGH);digitalWrite(RL_20, HIGH);digitalWrite(RL_40,
HIGH);digitalWrite(RL_80, LOW);}
if(mod1==80){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
LOW);digitalWrite(RL_40, LOW);digitalWrite(RL_80, HIGH);}
if(mod1==90){digitalWrite(RL_10, HIGH);digitalWrite(RL_20,
LOW);digitalWrite(RL_40, LOW);digitalWrite(RL_80, HIGH);}
if(mod1==100){digitalWrite(RL_10, LOW);digitalWrite(RL_20,
HIGH);digitalWrite(RL_40, LOW);digitalWrite(RL_80, HIGH);}
}}
//_________________________End
of the program___________________________________
Part 4
The SWITCH-board
Deze reactie is verwijderd door de auteur.
BeantwoordenVerwijderentest geslaagd, Egbert.
BeantwoordenVerwijdereninterested
BeantwoordenVerwijderen