Keyboard Shortcuts
ctrl + shift + ? :
Show all keyboard shortcuts
ctrl + g :
Navigate to a group
ctrl + shift + f :
Find
ctrl + / :
Quick actions
esc to dismiss
Likes
- BITX20
- Messages
Search
Re: Changing IDE colors
John P
On Fri, Jul 28, 2017 at 09:41 am, <ckotan@...> wrote:
Does anyone have an OldEyesTheme.txt to share?After making the changes to the font type, size and anti-aliasing that I mentioned in the other thread (Old Eyes), I personally found that the only thing I needed to change in the theme.txt file was the color for the /* . . .?*/ comments, which I just made the same as the // type comments. I have no trouble reading things now. But for what it's worth, here are my theme.txt and preferences.txt files: -- John - WA2FZW |
Hey Jack!
I have been coming to this site everyday and reading what's new, and little by little I see your other stuff creeping in. And was wondering if would post a link to your "other stuff" so I can get the full rundown on your for BITX40 DDS VFO, and the antenna analyzer, and so on. I am only getting pieces of it here, and would like to know more about it. I also wondered if you might be planning a book or something free with "Other stuff for the BITX'er". I can't just buy, I have to brew. And it's nice to find a funnel for all the information.
|
Re: Adding switchable USB and LSB to the Bitx40
I doubt you need a relay.
toggle quoted message
Show quoted text
The two caps that get removed for USB operation (C91 and C92) can remain out for LSB operation as well. Those caps are there only to allow the old analog VFO on the main Bitx40 to oscillate at 5 mhz. Removing those caps allows the Si5351 on the Raduino to provide a 19mhz VFO signal to the Bitx40 for USB operation, works just fine without the caps for the Raduino to supply 5mhz when operating LSB. Most of us get by without a trimmer cap in the BFO to "clarify" the audio. I suggest you evaluate the rig first, hack in that trimmer cap if you don't like how the audio sounds. The trimmer in the BFO should affect receive audio and transmit audio in exactly the same manner. The trimmer determines the frequency difference between the BFO carrier and the passband of the crystal filter, which determines the range of audio frequencies that get received or transmitted. The front end protection diodes are a good idea on currently shipped boards if you will ever have the Bitx40 hooked up to an antenna while a nearby 100 watt rig is transmitting. Without the protection diodes, all that would blow is the 2n3904 at Q13, which costs a few pennies. (Though some might find the soldering job difficult on such a small part.) . There have been no changes to what gets shipped from hfsigs (hardware or firmware) since the Raduino was introduced in Dec 2016. Jerry, KE7ER On Fri, Jul 28, 2017 at 09:54 am, David wrote:
I have received the kit just recently and I understand there are a few modes I can do, for example, adding two caps to the voltage regulator on the rardunio to prevent clicks, and one to improve mic clarity (perhaps a trimmer cap) as well as removing two caps to enable USB operation for digital modes. What I was considering was adding in a small solid state relay close to the board to enable me to easily switch from lsb to usb operation - adding or removing the caps using a dpdt relay. The relay would be controlled by a switch to the ardunio that would then toggle the relay and make the changes to the frequency calculation. Thoughts? |
Re: LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
I made 2 functions and call them from the the usb / lsb case button (in bold) It compiles and i can tune lsb but usb does not seem to work. However, if i change th - to a plus in the if_offset - Usb seems to be there. I #ifdef IF_Offset ?uint32_t vco = bfo - (vfo * SI5351_FREQ_MULT); ?si5351.set_freq(vco, SI5351_CLK0); // WAS 0 ?tbfo = "LSB"; ?si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA);? #endif I tried the other frequencies but they thru of the cal. Joe ve1bwv buttonState3 = digitalRead(buttonPin3); ? if (buttonState3 != lastButtonState3) { ? ? if (buttonState3 == HIGH) { ? ? ? buttonPushCounter3++; ? ? ? switch (buttonPushCounter3) { ? ? ? ? case 1: ? ? ? ? ? Serial.println("USB"); ? ? ? ? ? tft.setFont(); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(DARKGREY, GREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? delay(100); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(WHITE, DARKGREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? delay(100); ? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK); ? ? ? ? ? tft.setFont(&FreeSans9pt7b); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.setCursor(270, 145); ? ? ? ? ? tft.setTextColor(WHITE, BLACK); ? ? ? ? ? tft.println("USB"); ? ? ? ? ? void usbjoe(); ? ? ? ? ?? ? ? ? ? ? break; ? ? ? ? case 2: ? ? ? ? ? Serial.println("CW"); ? ? ? ? ? tft.setFont(); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(DARKGREY, GREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? delay(100); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(WHITE, DARKGREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK); ? ? ? ? ? tft.setFont(&FreeSans9pt7b); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.setCursor(270, 145); ? ? ? ? ? tft.setTextColor(WHITE, BLACK); ? ? ? ? ? tft.println("CW"); ? ? ? ? ? break; ? ? ? ? case 3: ? ? ? ? ? Serial.println("LSB"); ? ? ? ? ? tft.setFont(); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(DARKGREY, GREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? delay(100); ? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY); ? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY); ? ? ? ? ? tft.setCursor(142, 229); ? ? ? ? ? tft.setTextColor(WHITE, DARKGREY); ? ? ? ? ? tft.print("SSB/CW"); ? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK); ? ? ? ? ? tft.setFont(&FreeSans9pt7b); ? ? ? ? ? tft.setTextSize(1); ? ? ? ? ? tft.setCursor(270, 145); ? ? ? ? ? tft.setTextColor(WHITE, BLACK); ? ? ? ? ? tft.println("LSB"); ? ? ? ? ? ?void lsbjoe(); ? ? ? ? ? buttonPushCounter3 = 0; ? ? ? ? ? // void lsbjoe(); ? ? ? ? ? break; ? ? ? ? ?? ? ? ? ? default: ? ? ? ? ? // if nothing else matches, do the default ? ? ? ? ? // default is optional ? ? ? ? ? break; void lsbjoe(){ uint32_t vco = bfo - (vfo * SI5351_FREQ_MULT); si5351.set_freq(vco, SI5351_CLK0);? ? tbfo = "LSB"; ? volatile uint32_t LSB = 1199850000ULL; ? bfo = LSB; ? si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA); //you can set this to 2MA, 4MA, 6MA or 8MA WAS CLK0 ? return; } void usbjoe(){ uint32_t vco = bfo + (vfo * SI5351_FREQ_MULT); si5351.set_freq(vco, SI5351_CLK0); // WAS 0 ? ? tbfo = "USB"; ? bfo = USB; ? volatile uint32_t USB = 1200150000ULL; ? si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA); //you can set this to 2MA, 4MA, 6MA or 8MA? ? return; } On Fri, Jul 28, 2017 at 12:45 AM, Jerry Gaffke via Groups.Io <jgaffke@...> wrote: Looks like PD8W was written to drive the BFO with CLK0 from the Si5351 instead of using the Bitx40 analog BFO. |
Adding switchable USB and LSB to the Bitx40
David
I have received the kit just recently and I understand there are a few modes I can do, for example, adding two caps to the voltage regulator on the rardunio to prevent clicks, and one to improve mic clarity (perhaps a trimmer cap) as well as removing two caps to enable USB operation for digital modes. What I was considering was adding in a small solid state relay close to the board to enable me to easily switch from lsb to usb operation - adding or removing the caps using a dpdt relay. The relay would be controlled by a switch to the ardunio that would then toggle the relay and make the changes to the frequency calculation. Thoughts?
|
BITX QSO Night, Sunday, July 30, 7pm Local Time, 7277 kHz in North America, 7177 kHz elsewhere
BITX QSO Night, Sunday, July 30, 7pm Local Time, 7277 kHz in North America, 7177 kHz elsewhere
Join us as we make contacts from BITX40 to BITX40 on 7.277 MHz in 40 meters! To participate, call CQ BITX at 7pm sharp, your local time, on Sunday. Call off and on for about 15 minutes. It is helpful if you call CQ BITX with your name and location.? Repeat your call a number of times if conditions are weak. This is a worldwide event at 7pm in each time zone.? You may participate in any time zone, regardless of your location, so you may wish to call in at 6pm, 7pm and 8pm, your local time, to contact hams in adjacent time zones. Report your QSO's, discuss propagation, noise, signal reports, audio reports, antenna type, etc. in this thread. This is an undirected, scheduled event.? The BITX QSO Night relies on you to call CQ BITX to initiate contacts with other stations, so warm up that final and transmit a few calls at 7pm on Sunday.? Talk to you then! |
Re: Front End Protection Diodes?
Dale Brooks KG7SSB
If you are installing 1n4148's across the antenna and ground you are just limiting the peaks, coming in on the antenna, to approx. .560 volts plus and minus.? If you use a germanium diode set you will limit the signals to .3 volts But you may get into trouble with strong signals limiting at this small voltage deviation causing distortion when the signal is clipping. Just a guess have not tested.? On Thu, Jul 27, 2017 at 10:58 PM, Lawrence Galea <9h1avlaw@...> wrote:
|
Re: Front End Protection Diodes?
That's the term we have been using for ages. It means that one diode is placed with the cathode connected to one side of the circuit and the other connected the other way round so that they clip both sides of an AC voltage. (A DC voltage will also be clipped by the forward biased diode) Taking the input of a receiver, one diode would have its cathode connected to the antenna input with the anode connected to earth. The other diode would have its anode connected to the antenna input and its cathode connected to earth. Guess that different terms are used in different parts of the world. Regards. On Thu, Jul 27, 2017 at 9:53 PM, Dexter N Muir <dexy@...> wrote: Back to back? I think not! That gives avalanche/breakdown voltage, and that can be up to kV depending on device. Try Head to tail - and across the input. +/-0.6V max, turn-on (forward-bias) voltage of silicon junction. 0.3V or so for germanium. If you're worried about capacitance, point-contact. This, of course is for RX ONLY! Tx into that will blow either the diodes or the Final! Not quite sure how it fits in the BITX scheme, probably in amongst the antenna relay circuitry. |
Re: Front End Protection Diodes?
Dale Brooks KG7SSB
I have been trying to reduce the 2nd and 3rd harmonics leaving the BITX40v3 for days and I just added the 100pf capacitor across L7 LPF coil and I will say it has solved all of my problems with higher than ideal harmonics. It is mentioned in the WAX articles along with the opposing diodes on the base of Q13. `My results on the spectrum analyzer was dramatic reducing all spurious signals well below 50 dbm. I have added the diodes as well as the100pf cap and recommend it for all BITX users.? On Thu, Jul 27, 2017 at 2:10 PM, Jerry Gaffke via Groups.Io <jgaffke@...> wrote: 1n4148's seem to work fine. |
Re: LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
Looks like PD8W was written to drive the BFO with CLK0 from the Si5351 instead of using the Bitx40 analog BFO.
toggle quoted message
Show quoted text
Though that is only activated if this line turns it on: ? ??#ifdef IF_Offset My guess is that this never worked. The PD8W code initializes the possible BFO frequencies in hundredths of a hz with these lines: volatile uint32_t LSB = 1199850000ULL;
volatile uint32_t USB = 1200150000ULL;
On Thu, Jul 27, 2017 at 07:44 pm, Jerry Gaffke wrote:The mistake I see is that the crystal filter is not centered on 12.000000mhz, it's more like 11.997000. The value for LSB given above is correct if the VFO is operating down around 5mhz, the BFO is 1500 hz above the crystal filter center. But the value for USB should be more like 11.995500 mhz, at 1500hz below the crystal filter center. If the VFO is operating up at 19mhz, then we flip them so the BFO for USB is 11.9985 and for LSB is 11.9955 mhz. If confused, read post ? ? /g/BITX20/message/24724 Note that I made the discussion easier to follow in post 24724 by assuming the filter is centered on 12.000mhz,? but it is actually centered on something like 11.997000 mhz. The filter uses the series resonant mode of the quartz crystals, and that series resonant mode is a few khz lower in frequency than the parallel resonant mode marked on the the crystal as 12.000 mhz. The analog bfo uses the crystal in the 12.000 mhz parallel resonant mode, that frequency is brought down a little bit by adding capacitance.? The Bitx40+Raduino as shipped does not have the Si5351's CLK0 driving the BFO, that would require a hardware mod. ?As shipped, only CLK2 of the Si5351 is used, to drive the VFO. Jerry, KE7ER I don't know anything about this PD8W code. |
Re: LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
Jerry, Ok, thanks for some suggestions. I have a good frequency counter which I use to monitor the actual vfo clock ?, also have hf rigsand websdr to listen with. On Thu, Jul 27, 2017 at 11:44 PM, Jerry Gaffke via Groups.Io <jgaffke@...> wrote: I don't know anything about this PD8W code. |
Re: LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
I don't know anything about this PD8W code.
toggle quoted message
Show quoted text
However, somewhere in the PD8W code it says: ? ??volatile uint32_t USB = 1200150000ULL; That code you borrowed from Allard is treating the variable USB as a boolean, so I assume Allard's version of the USB variable should have a value of either zero (false) or 1 (true): if (USB) // if we are in UPPER side band mode ? ? si5351.set_freq((IF + Dial_freq) * 100ULL, SI5351_CLK2); ? else // if we are in LOWER side band mode ? ? si5351.set_freq((IF - Dial_freq) * 100ULL, SI5351_CLK2);//12-7 = 5 The two programs use the variable USB in entirely different ways. Actually any non zero value for USB gets treated in the C language as "true" in the above code. So I would think that snippet of Allard's code would put you always into USB mode if you found the right spot to insert it into the PD8W code. ?(Assuming you don't fix how Allard's code is trying to test an integer value in hz to see if it is true or not.) Maybe you could try making up your own variable name, perhaps USBJOE Initialize that variable to 0 for normal use as an LSB transceiver, set it to a 1 when the mode switch tells it to switch to USB mode. Then have Allard's code test for USBJOE. But I have no idea where Allard's code should be inserted into that PD8W code. perhaps somebody else could help you there. Do you have a cheap general coverage shortwave receiver? When in LSB mode with the Bitx40 tuned to 7.000 mhz you should hear the VFO at 12-7= 5.000 mhz. When you successfully flip to USB mode you should hear the VFO at 12+7=19.000 mhz. That might be easier than tuning around looking for SSB signals. You may need to put the antenna of the shortwave receiver near the Bitx40 board (or Raduino) to hear the VFO. Jerry? ? On Thu, Jul 27, 2017 at 07:14 pm, Joe wrote:
I have been trying various combinations. The one I have decided to work on is from?Allard PE1NWL. He provided the suggested code below: |
Re: LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
Jerry,
Thanks for your reply.? I have been trying various combinations. The one I have decided to work on is from?Allard PE1NWL. He provided the suggested code below: if (USB) // if we are in UPPER side band mode ? ? si5351.set_freq((IF + Dial_freq) * 100ULL, SI5351_CLK2); ? else // if we are in LOWER side band mode ? ? si5351.set_freq((IF - Dial_freq) * 100ULL, SI5351_CLK2);//12-7 = 5 In other words you just flip the VFO freq to the other side of the IF. The IF is (approx) 12 MHz. so for LSB: VFOfreq = 12-7= 5MHz and for USB: VFOfreq = 12+7= 19Mhz Method uses only 1 clock ?------------------------------------------------------- Adopting it to the PD8W code: My changes: if (USB) // if we are in UPPER side band mode ? ? si5351.set_freq((bfo + vfo) * 100ULL, SI5351_CLK0);// 12+7 =19 Using clock0 on si5351 ? else // if we are in LOWER side band mode ? ? si5351.set_freq((bfo - vfo) * 100ULL, SI5351_CLK0);// 12-7 =5?Using clock0 on si5351 Tried adding the code to various locations but did not produce the USB. The displays shows USB when I press the Mode button ( buttonpin3 case1 and case3 ?to ?choose usb or lsb on the display -- this works. The radio receives well and is fully tune-able ?- in LSB PD8W CODE: BELOW ?
#include <Adafruit_GFX.h>
#include <gfxfont.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSerifBold12pt7b.h>
#include <Fonts/FreeSans9pt7b.h>
#include <MCUFRIEND_kbv.h>
#include <Wire.h>
#include <Rotary.h>
//#include <si5351.h>
#include <si5351.h> // https://github.com/etherkit/Si5351Arduino/releases/tag/v2.0.1
?
#define ?ROT_L1_PIN 49
#define ?ROT_R1_PIN 48
#define ?LED_R_PIN 45
#define ?LED_G_PIN 44
#define ?LED_B_PIN 47
#define ROT_SW1_PIN 46
#define ?ROT_LEFT ?1
#define ?ROT_RIGHT 2
#define ?ROT_STAY ?3
#define ROT_MIN ? ? ? ?700000UL ? ? ? ? ? ? ? // Lower frequency limit
#define ROT_MAX ? ? ? ?5000000000UL ? ?//
#define CALLSIGN "PD8W"
#define BITX40 ? "BITX40 V3c"
?
int ROT_d = 10;
int mode = 0;
int oldMode = -1;
?
Si5351 si5351;
Rotary r = Rotary(ROT_L1_PIN, ROT_R1_PIN);
volatile uint32_t LSB = 1199850000ULL;
volatile uint32_t USB = 1200150000ULL;
//volatile uint32_t LSB = 1199700000ULL; //for low side vfo
//volatile uint32_t USB = 1199850000ULL;
?
volatile uint32_t bfo = LSB; //start in lsb
//In this sketch the start frequency will be 7.100000 Mhz
volatile uint32_t vfo = 710000000ULL / SI5351_FREQ_MULT; //start freq - change to suit ?----test
//volatile uint32_t vfo = 709980000ULL / SI5351_FREQ_MULT; //start freq - change to suit
boolean changed_f = 0;
String tbfo = "";
long lastMilis = 0; ? ? ? // to track the last sampled time
long val1a, val1b;
long dirRot1 = ROT_STAY;
long valRot1 = vfo;
long oldVal1 = -1;
//------------------------------- Set Optional Features here --------------------------------------
//Remove comment (//) from the option you want to use. Pick only one
#define IF_Offset //Output is the display plus or minus the bfo frequency
//#define Direct_conversion //What you see on display is what you get
//#define FreqX4 ?//output is four times the display frequency
//--------------------------------------------------------------------------------------------------
?
MCUFRIEND_kbv tft;
?
const int ?buttonPin = 52; ? ?// the pin that the pushbutton is attached to
const int ?buttonPin2 = 53;
const int ?buttonPin3 = 51;
const int ?buttonPin4 = 50;
const int ?buttonPin5 = 43;
?
int buttonPushCounter = 0; ? // counter for the number of button presses
int buttonPushCounter2 = 0; ? // counter for the number of button presses
int buttonPushCounter3 = 0; ? // counter for the number of button presses
int buttonPushCounter4 = 0; ? // counter for the number of button presses
int buttonPushCounter5 = 0; ? // counter for the number of button presses
?
?
int buttonState = 0; ? ? ? ? // current state of the button
int buttonState2 = 0; ? ? ? ? // current state of the button
int buttonState3 = 0; ? ? ? ? // current state of the button
int buttonState4 = 0; ? ? ? ? // current state of the button
int buttonState5 = 0; ? ? ? ? // current state of the button
?
?
int lastButtonState = 0; ? ? // previous state of the button
int lastButtonState2 = 0; ? ? // previous state of the button
int lastButtonState3 = 0; ? ? // previous state of the button
int lastButtonState4 = 0; ? ? // previous state of the button
int lastButtonState5 = 0; ? ? // previous state of the button
?
// Assign human-readable names to some common 16-bit color values:
#define BLACK ? 0x0000
#define BLUE ? ?0x0353
#define OBLUE ? 0x001F
#define RED ? ? 0xF800
#define GREEN ? 0x07E0
#define CYAN ? ?0x07FF
#define MAGENTA 0xF81F
#define YELLOW ?0xFFE0
#define WHITE ? 0xFFFF
#define GREY ? ?0x7BEF
#define DARKGREY 0x18E3
?
uint16_t g_identifier;
?
void setup(void) {
? Serial.begin(9600);
? pinMode(LED_R_PIN, OUTPUT);
? pinMode(LED_G_PIN, OUTPUT);
? pinMode(LED_B_PIN, OUTPUT);
? Wire.begin();
?
? si5351.set_correction(140); //** was 1000. There is a calibration sketch in File/Examples/si5351Arduino-Jason
? //where you can determine the correction by using the serial monitor.
?
? //initialize the Si5351
?// si5351.init(SI5351_CRYSTAL_LOAD_8PF, 0); //If you're using a 27Mhz crystal, put in 27000000 instead of 0
? // 0 is the default crystal frequency of 25Mhz.
?si5351.init(SI5351_CRYSTAL_LOAD_8PF, 25000000L, 0);
?si5351.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);// set CLK0
?
? ?// Set CLK0 to output the starting "vfo" frequency as set above by vfo = ?
?
??
?
#ifdef IF_Offset
?uint32_t vco = bfo - (vfo * SI5351_FREQ_MULT);//LSB
??
? si5351.set_freq(vco, SI5351_CLK2); // WAS 0
? //volatile uint32_t vfoT = (vfo * SI5351_FREQ_MULT) + bfo;
?
? tbfo = "LSB";
??
? // Set CLK0 to output bfo frequency
? si5351.set_freq( bfo, SI5351_CLK0); //?
? si5351.drive_strength(SI5351_CLK2, SI5351_DRIVE_2MA); //was 4ma you can set this to 2MA, 4MA, 6MA or 8MA WAS CLK0
? si5351.drive_strength(SI5351_CLK0,SI5351_DRIVE_8MA); //was 8ma
?
#endif
?
?
? int i = 0;
? pinMode(ROT_L1_PIN, INPUT);
? pinMode(ROT_R1_PIN, INPUT);
? pinMode(ROT_SW1_PIN, INPUT);
??
? digitalWrite(ROT_L1_PIN, HIGH); //pull-up enable
? digitalWrite(ROT_R1_PIN, HIGH); //pull-up enable
?
? ?uint32_t when = millis();
? // ? ?while (!Serial) ; ? //hangs a Leonardo until you connect a Serial
? if (!Serial) delay(5000); ? ? ? ? ? //allow some time for Leonardo
? Serial.println("Serial took " + String((millis() - when)) + "ms to start");
? static uint16_t identifier;
? // ? ?tft.reset(); ? ? ? ? ? ? ? ? //we can't read ID on 9341 until begin()
? g_identifier = tft.readID(); //
? Serial.print("ID = 0x");
? Serial.println(g_identifier, HEX);
? if (g_identifier == 0x00D3 || g_identifier == 0xD3D3) g_identifier = 0x9481; // write-only shield
? if (g_identifier == 0xFFFF) g_identifier = 0x9341; // serial
? // ? ?g_identifier = 0x9329; ? ? ? ? ? ? ? ? ? ? ? ? ? ? // force ID
? tft.begin(g_identifier);
?
#if defined(MCUFRIEND_KBV_H_)
? uint16_t scrollbuf[320]; ? ?// my biggest screen is 320x480
#define READGRAM(x, y, buf, w, h) ?tft.readGRAM(x, y, buf, w, h)
#else
? uint16_t scrollbuf[320]; ? ?// Adafruit only does 240x320
? // Adafruit can read a block by one pixel at a time
? int16_t ?READGRAM(int16_t x, int16_t y, uint16_t *block, int16_t w, int16_t h)
? {
? ? uint16_t *p;
? ? for (int row = 0; row < h; row++) {
? ? ? p = block + row * w;
? ? ? for (int col = 0; col < w; col++) {
? ? ? ? *p++ = tft.readPixel(x + col, y + row);
? ? ? }
? ? }
? }
#endif
? uint8_t aspect;
? uint16_t pixel;
? char *colorname[] = {" VE1BWV"};
? uint16_t colormask[] = { 0x001F, 0x7BEF, ?};
? uint16_t dx, rgb, n, s, wid, ht;
? tft.setRotation(3); // was 1 now 3 = turns display upside down or rightside up----------------------------------------------
? tft.fillScreen(BLACK);
? tft.drawRect(74, 58, 71, 13, GREY);
? tft.setTextSize(1);
? tft.setCursor(77, 61);
? tft.setTextColor(GREY, BLACK);
? tft.println("WB-Software");
? tft.drawRect(74, 70, 180, 100, GREY);
? tft.fillRect(75, 70, 69, 1, BLACK);
? tft.setFont();
? tft.setCursor(91, 85);
? tft.setTextColor(CYAN, BLACK);
? tft.println("Powered and developed by");
? tft.setFont(&FreeSansBold12pt7b);
? tft.setTextSize(1);
? tft.setCursor(130, 128);
? tft.setTextColor(WHITE, BLACK);
? tft.println("PD8W ");
? tft.setFont();
? tft.setTextSize(1);
? tft.setCursor(118, 145);
? tft.setTextColor(YELLOW, BLACK);
? tft.println("www.pd8w.com (c)");
? tft.drawRect(183, 169, 71, 13, GREY);
? tft.fillRect(183, 169, 70, 1, BLACK);
? tft.setTextSize(1);
? tft.setCursor(186, 171);
? tft.setTextColor(GREY, BLACK);
? tft.println("version 1.0");
? delay(5000);
? tft.fillScreen(BLACK);
? tft.setFont();
? aspect = (0 + 0) & 3;
? tft.setRotation(aspect + 3);// was 1 ?turns display upside down or rightside up----------------------
? wid = tft.width();
? ht = tft.height();
?
? dx = wid / 32;
? for (n = 0; n < 32; n++) {
? ? rgb = n * 8;
? ? rgb = tft.color565(rgb, rgb, rgb);
? ? tft.fillRect(n * dx, 10, dx, 44, rgb & colormask[aspect]);
? }
? tft.setTextSize(2);
? tft.setTextColor(colormask[aspect], BLACK);
? tft.setCursor(0, 24);
? tft.print(colorname[aspect]);
? tft.setTextColor(WHITE);
? tft.print(" BITX40");
? tft.setTextSize(1);
? tft.println(" TRANSCEIVER");
? tft.setCursor(285, 25);
? tft.println("21:45");
#if defined(MCUFRIEND_KBV_H_)
?// extern const uint8_t penguin[]; // picture of a penquin top right of screen ------
? tft.setAddrWindow(240, 5, 279, 59);
// ?tft.pushColors(penguin, 1600, 1); // picture of a penquin top right of screen ------
#endif
? tft.setFont();
? tft.setTextSize(1);
? tft.setTextColor(GREY, BLACK);
? tft.setCursor(265, 64);
? tft.println("- 86 dBM");
? tft.setFont(&FreeSans9pt7b);
? tft.setTextSize(1);
? tft.setCursor(20, 125);
? tft.setTextColor(RED, BLACK);
? tft.println("VFO");
? tft.setTextSize(2);
? tft.setFont(&FreeSans9pt7b);
? tft.setTextSize(1);
? tft.setCursor(29, 145);
? tft.setTextColor(CYAN, BLACK);
? tft.println("A");
? tft.setTextSize(2);
? tft.setFont(&FreeSansBold12pt7b);
? tft.setFont();
? tft.setTextSize(1);
? tft.setCursor(150, 155);
? tft.setTextColor(GREY, BLACK);
? tft.print("AGC-S");
? tft.setCursor(215, 155);
? tft.println("100 Hz");
? tft.setFont(&FreeSans9pt7b);
? tft.setTextSize(1);
? tft.setCursor(270, 145);
? tft.setTextColor(WHITE, BLACK);
? tft.println("LSB");
? tft.fillRect(20, 60, 24, 15, GREEN);
? tft.drawRect(50, 60, 24, 15, RED);
? tft.fillRect(80, 60, 28, 15, GREY);
? tft.drawRect(108, 60, 31, 15, GREY);
? tft.setFont(&FreeSans9pt7b);
? tft.setTextColor(colormask[aspect], BLACK);
? tft.setCursor(20, 71);
? tft.setFont();
? tft.setTextColor(BLACK);
? tft.println(" RX ");
? tft.setCursor(50, 64);
? tft.setTextColor(RED);
? tft.println(" TX ");
? tft.setCursor(81, 64);
? tft.setTextColor(BLACK);
? tft.println(" BW ");
? tft.setCursor(107, 63);
? tft.setTextColor(GREY);
? tft.println(" 3.0k ");
? tft.drawLine(155, 72, 160, 60, WHITE);
? tft.drawLine(176, 60, 181, 72, WHITE);
? tft.fillRect(161, 60, 15, 1, WHITE);
? tft.fillRect(148, 72, 42, 1, WHITE);
? tft.fillRect(168, 68, 1, 4, WHITE);
? tft.setCursor(39, 180);
? tft.print("S");
? tft.setCursor(59, 180);
? tft.print("1");
? tft.setCursor(84, 180);
? tft.print("3");
? tft.setCursor(110, 180);
? tft.print("5");
? tft.setCursor(136, 180);
? tft.print("7");
? tft.setCursor(162, 180);
? tft.print("9");
? tft.setTextColor(RED);
? tft.setCursor(186, 180);
? tft.print("+20");
? tft.setCursor(218, 180);
? tft.print("+40");
? tft.setCursor(250, 180);
? tft.print("+60dB");
? tft.fillRect(60, 189, 2, 3, WHITE);
? tft.fillRect(73, 189, 2, 3, WHITE);
? tft.fillRect(86, 189, 2, 3, WHITE);
? tft.fillRect(99, 189, 2, 3, WHITE);
? tft.fillRect(112, 189, 2, 3, WHITE);
? tft.fillRect(125, 189, 2, 3, WHITE);
? tft.fillRect(138, 189, 2, 3, WHITE);
? tft.fillRect(151, 189, 2, 3, WHITE);
? tft.fillRect(164, 189, 2, 3, WHITE);
? tft.fillRect(196, 189, 2, 3, RED);
? tft.fillRect(228, 189, 2, 3, RED);
? tft.fillRect(260, 189, 2, 3, RED);
? for (s = 50; s < 167; s++) {
? ? tft.fillRect(s, 192, 1, 1, WHITE);
? }
? for (s = 167; s < 271; s++) {
? ? tft.fillRect(s, 191, 1, 2, RED);
? }
? for (s = 50; s < 270; s = s + 3) {
? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? tft.fillRect(s, 203, 3, 1, WHITE);
? }
? for (i = 0; i < 1; i++) {
? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? for (s = 52; s <= 165; s = s + 3) {
? ? ? tft.fillRect(s, 193, 2, 10, BLUE);
? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? delay(2);
? ? }
? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? for (s = 165; s <= 270; s = s + 3) {
? ? ? tft.fillRect(s, 193, 2, 10, RED);
? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? delay(2);
? ? }
? ? for (s = 270; s >= 168; s = s - 3) {
? ? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? ? tft.fillRect(s + 2, 193, 1, 10, BLACK);
? ? ? tft.drawRect(s - 2, 193, 2, 10, RED);
? ? ? delay(2);
? ? }
? ? tft.fillRect(166, 193, 2, 10, GREY);
? ? tft.fillRect(165, 193, 1, 10, BLACK);
? ? for (s = 164; s >= 52; s = s - 3) {
? ? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? ? tft.fillRect(s + 2, 193, 1, 10, BLACK);
? ? ? tft.drawRect(s - 2, 193, 2, 10, BLUE);
? ? ? delay(2);
? ? }
? }
? for (s = 50; s < 164; s = s + 3) {
? ? tft.fillRect(s, 193, 2, 10, BLUE);
? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? }
? for (s = 164; s < 181; s = s + 3) {
? ? tft.fillRect(s, 193, 2, 10, RED);
? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? }
? tft.fillRect(50, 193, 2, 10, WHITE);
? tft.setCursor(30, 206);
? tft.setTextColor(GREY, BLACK);
? tft.print("Po 0");
? tft.setCursor(110, 206);
? tft.print("25");
? tft.setCursor(162, 206);
? tft.print("50");
? tft.setCursor(255, 206);
? tft.print("100%");
? tft.setCursor(0, 231);
? tft.setTextColor(YELLOW, BLACK);
? tft.setTextSize(1);
? tft.print("Version 1.0 - WB-Software (c) 2016");
? tft.print(" GPU:");
? tft.print(tft.readID(), HEX);
? tft.print("@");
? tft.print(0.000001 * F_CPU);
? tft.println("MHz");
? delay(2000);
? tft.fillRect(0, 230, 320, 10, BLACK);
? tft.fillRect(2, 225, 60, 15, DARKGREY);
? tft.drawRect(2, 225, 60, 15, GREY);
? tft.setCursor(16, 229);
? tft.setTextColor(WHITE, DARKGREY);
? tft.print("METER");
? tft.fillRect(66, 225, 60, 15, DARKGREY);
? tft.drawRect(66, 225, 60, 15, GREY);
? tft.setCursor(75, 229);
? tft.setTextColor(WHITE, DARKGREY);
? tft.print("VFO/MEM");
? tft.fillRect(130, 225, 60, 15, DARKGREY);
? tft.drawRect(130, 225, 60, 15, GREY);
? tft.setCursor(142, 229);
? tft.setTextColor(WHITE, DARKGREY);
? tft.print("SSB/CW");
? tft.fillRect(194, 225, 60, 15, DARKGREY);
? tft.drawRect(194, 225, 60, 15, GREY);
? tft.setCursor(200, 229);
? tft.setTextColor(WHITE, DARKGREY);
? tft.print("TRANSMIT");
? tft.fillRect(258, 225, 60, 15, DARKGREY);
? tft.drawRect(258, 225, 60, 15, GREY);
? tft.setCursor(271, 229);
? tft.setTextColor(WHITE, DARKGREY);
? tft.print("FILTER");
}
?
void loop(void) {
? digitalWrite(LED_R_PIN, HIGH);
? digitalWrite(LED_G_PIN, HIGH);
? digitalWrite(LED_B_PIN, LOW);
? buttonState = digitalRead(buttonPin);
? if (buttonState != lastButtonState) {
? ? if (buttonState == HIGH) {
? ? ? buttonPushCounter++;
? ? ? switch (buttonPushCounter) {
? ? ? ? case 1:
? ? ? ? ? Serial.println("4.0k");
? ? ? ? ? tft.fillRect(108, 62, 28, 10, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? tft.setCursor(107, 63);
? ? ? ? ? tft.setTextColor(GREY);
? ? ? ? ? tft.println(" 4.0k ");
? ? ? ? ? tft.drawLine(152, 72, 157, 60, WHITE);
? ? ? ? ? tft.drawLine(181, 60, 186, 72, WHITE);
? ? ? ? ? tft.drawLine(155, 72, 160, 60, BLACK);
? ? ? ? ? tft.drawLine(176, 60, 181, 72, BLACK);
? ? ? ? ? tft.drawLine(158, 72, 163, 60, BLACK);
? ? ? ? ? tft.drawLine(173, 60, 178, 72, BLACK);
? ? ? ? ? tft.fillRect(157, 60, 25, 1, WHITE);
? ? ? ? ? tft.fillRect(148, 72, 42, 1, WHITE);
? ? ? ? ? tft.fillRect(168, 68, 1, 4, WHITE);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, GREY);
? ? ? ? ? delay(500);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, BLACK);
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? Serial.println("1.8k");
? ? ? ? ? tft.fillRect(108, 62, 28, 10, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? tft.setCursor(107, 63);
? ? ? ? ? tft.setTextColor(GREY);
? ? ? ? ? tft.println(" 1.8k ");
? ? ? ? ? tft.drawLine(160, 72, 165, 60, WHITE);
? ? ? ? ? tft.drawLine(171, 60, 176, 72, WHITE);
? ? ? ? ? tft.fillRect(157, 60, 25, 1, BLACK);
? ? ? ? ? tft.drawLine(152, 72, 157, 60, BLACK);
? ? ? ? ? tft.drawLine(181, 60, 186, 72, BLACK);
? ? ? ? ? tft.drawLine(155, 72, 160, 60, BLACK);
? ? ? ? ? tft.drawLine(176, 60, 181, 72, BLACK);
? ? ? ? ? tft.drawLine(158, 72, 163, 60, BLACK);
? ? ? ? ? tft.drawLine(173, 60, 178, 72, BLACK);
? ? ? ? ? tft.fillRect(165, 60, 6, 1, WHITE);
? ? ? ? ? tft.fillRect(148, 72, 42, 1, WHITE);
? ? ? ? ? tft.fillRect(168, 68, 1, 4, WHITE);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, GREY);
? ? ? ? ? delay(500);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, BLACK);
? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? Serial.println("2.4k");
? ? ? ? ? tft.fillRect(108, 62, 28, 10, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? tft.setCursor(107, 63);
? ? ? ? ? tft.setTextColor(GREY);
? ? ? ? ? tft.println(" 2.4k ");
? ? ? ? ? tft.drawLine(158, 72, 163, 60, WHITE);
? ? ? ? ? tft.drawLine(173, 60, 178, 72, WHITE);
? ? ? ? ? tft.drawLine(160, 72, 165, 60, BLACK);
? ? ? ? ? tft.drawLine(171, 60, 176, 72, BLACK);
? ? ? ? ? tft.fillRect(157, 60, 25, 1, BLACK);
? ? ? ? ? tft.drawLine(152, 72, 157, 60, BLACK);
? ? ? ? ? tft.drawLine(181, 60, 186, 72, BLACK);
? ? ? ? ? tft.drawLine(155, 72, 160, 60, BLACK);
? ? ? ? ? tft.drawLine(176, 60, 181, 72, BLACK);
? ? ? ? ? tft.fillRect(163, 60, 10, 1, WHITE);
? ? ? ? ? tft.fillRect(148, 72, 42, 1, WHITE);
? ? ? ? ? tft.fillRect(168, 68, 1, 4, WHITE);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, GREY);
? ? ? ? ? delay(500);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, BLACK);
? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? Serial.println("3.0k");
? ? ? ? ? tft.fillRect(108, 62, 28, 10, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(258, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(258, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(271, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("FILTER");
? ? ? ? ? tft.setCursor(107, 63);
? ? ? ? ? tft.setTextColor(GREY);
? ? ? ? ? tft.println(" 3.0k ");
? ? ? ? ? tft.drawLine(155, 72, 160, 60, WHITE);
? ? ? ? ? tft.drawLine(176, 60, 181, 72, WHITE);
? ? ? ? ? tft.drawLine(158, 72, 163, 60, BLACK);
? ? ? ? ? tft.drawLine(173, 60, 178, 72, BLACK);
? ? ? ? ? tft.drawLine(160, 72, 165, 60, BLACK);
? ? ? ? ? tft.drawLine(171, 60, 176, 72, BLACK);
? ? ? ? ? tft.fillRect(157, 60, 25, 1, BLACK);
? ? ? ? ? tft.drawLine(152, 72, 157, 60, BLACK);
? ? ? ? ? tft.drawLine(181, 60, 186, 72, BLACK);
? ? ? ? ? tft.fillRect(161, 60, 15, 1, WHITE);
? ? ? ? ? tft.fillRect(148, 72, 42, 1, WHITE);
? ? ? ? ? tft.fillRect(168, 68, 1, 4, WHITE);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, GREY);
? ? ? ? ? delay(500);
? ? ? ? ? tft.fillRect(80, 78, 60, 2, BLACK);
? ? ? ? ? buttonPushCounter = 0;
? ? ? ? ? break;
? ? ? }
? ? } else {
? ? ? // if the current state is LOW then the button
? ? ? // wend from on to off:
? ? }
? ? // Delay a little bit to avoid bouncing
? ? delay(50);
? }
?
? buttonState2 = digitalRead(buttonPin2);
? if (buttonState2 != lastButtonState2) {
? ? if (buttonState2 == HIGH) {
? ? ? buttonPushCounter2++;
? ? ? switch (buttonPushCounter2) {
? ? ? ? case 1:
? ? ? ? ? Serial.print("TX: button ");
? ? ? ? ? Serial.println(buttonPushCounter2);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(200, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("TRANSMIT");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(194, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(200, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("TRANSMIT");
? ? ? ? ? tft.fillRect(50, 60, 24, 15, RED);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(50, 64);
? ? ? ? ? tft.setTextColor(WHITE);
? ? ? ? ? tft.println(" TX ");
? ? ? ? ? tft.fillRect(20, 60, 24, 15, BLACK);
? ? ? ? ? tft.drawRect(20, 60, 24, 15, GREEN);
? ? ? ? ? tft.setTextColor(GREEN);
? ? ? ? ? tft.setCursor(20, 64);
? ? ? ? ? tft.println(" RX ");
? ? ? ? ? tft.fillRect(18, 78, 100, 10, BLACK);
? ? ? ? ? tft.setCursor(20, 80);
? ? ? ? ? tft.setTextColor(RED);
? ? ? ? ? tft.println("Transmitting");
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? Serial.println("RX");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(200, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("TRANSMIT");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(194, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(194, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(200, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("TRANSMIT");
? ? ? ? ? tft.fillRect(20, 60, 24, 15, BLACK);
? ? ? ? ? tft.fillRect(20, 60, 24, 15, GREEN);
? ? ? ? ? tft.fillRect(50, 60, 24, 15, BLACK);
? ? ? ? ? tft.drawRect(50, 60, 24, 15, RED);
? ? ? ? ? tft.setTextColor(RED);
? ? ? ? ? tft.setCursor(50, 64);
? ? ? ? ? tft.println(" TX ");
? ? ? ? ? tft.setCursor(20, 64);
? ? ? ? ? tft.setTextColor(BLACK);
? ? ? ? ? tft.println(" RX ");
? ? ? ? ? tft.fillRect(18, 78, 100, 10, BLACK);
? ? ? ? ? tft.setCursor(20, 80);
? ? ? ? ? tft.setTextColor(GREEN);
? ? ? ? ? tft.println("Receiving");
? ? ? ? ? delay(1000);
? ? ? ? ? tft.fillRect(18, 78, 100, 10, BLACK);
? ? ? ? ? buttonPushCounter2 = 0;
? ? ? ? ? break;
? ? ? }
? ? } else {
? ? ? // if the current state is LOW then the button
? ? ? // wend from on to off:
? ? }
? ? // Delay a little bit to avoid bouncing
? ? delay(50);
? }
?
? buttonState3 = digitalRead(buttonPin3);
? if (buttonState3 != lastButtonState3) {
? ? if (buttonState3 == HIGH) {
? ? ? buttonPushCounter3++;
? ? ? switch (buttonPushCounter3) {
? ? ? ? case 1:
? ? ? ? ? Serial.println("USB");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(270, 145);
? ? ? ? ? tft.setTextColor(WHITE, BLACK);
? ? ? ? ? tft.println("USB");
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? Serial.println("CW");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(270, 145);
? ? ? ? ? tft.setTextColor(WHITE, BLACK);
? ? ? ? ? tft.println("CW");
? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? Serial.println("LSB");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(130, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(130, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(142, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("SSB/CW");
? ? ? ? ? tft.fillRect(269, 130, 44, 18, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(270, 145);
? ? ? ? ? tft.setTextColor(WHITE, BLACK);
? ? ? ? ? tft.println("LSB");
? ? ? ? ? buttonPushCounter3 = 0;
? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? // if nothing else matches, do the default
? ? ? ? ? // default is optional
? ? ? ? ? break;
? ? ? }
? ? } else {
? ? ? // if the current state is LOW then the button
? ? ? // wend from on to off:
? ? }
? ? // Delay a little bit to avoid bouncing
? ? delay(50);
?
? }
?
? buttonState4 = digitalRead(buttonPin4);
? if (buttonState4 != lastButtonState4) {
? ? if (buttonState4 == HIGH) {
? ? ? buttonPushCounter4++;
? ? ? switch (buttonPushCounter4) {
? ? ? ? case 1:
? ? ? ? ? Serial.println("VFO B");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(20, 108, 40, 20, BLACK);
? ? ? ? ? tft.fillRect(20, 128, 40, 25, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(20, 125);
? ? ? ? ? tft.setTextColor(RED, BLACK);
? ? ? ? ? tft.println("VFO");
? ? ? ? ? tft.setTextSize(2);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(29, 145);
? ? ? ? ? tft.setTextColor(CYAN, BLACK);
? ? ? ? ? tft.println("B");
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? Serial.println("MEM");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(20, 108, 40, 20, BLACK);
? ? ? ? ? tft.fillRect(20, 128, 40, 25, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(20, 125);
? ? ? ? ? tft.setTextColor(YELLOW, BLACK);
? ? ? ? ? tft.println("MEM");
? ? ? ? ? tft.setTextSize(2);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(29, 145);
? ? ? ? ? tft.setTextColor(WHITE, BLACK);
? ? ? ? ? tft.println("001");
? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? Serial.println("VFO A");
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(66, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(66, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(75, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("VFO/MEM");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(20, 108, 40, 20, BLACK);
? ? ? ? ? tft.fillRect(20, 128, 40, 20, BLACK);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(20, 125);
? ? ? ? ? tft.setTextColor(RED, BLACK);
? ? ? ? ? tft.println("VFO");
? ? ? ? ? tft.setTextSize(2);
? ? ? ? ? tft.setFont(&FreeSans9pt7b);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.setCursor(29, 145);
? ? ? ? ? tft.setTextColor(CYAN, BLACK);
? ? ? ? ? tft.println("A");
? ? ? ? ? buttonPushCounter4 = 0;
? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? // if nothing else matches, do the default
? ? ? ? ? // default is optional
? ? ? ? ? break;
? ? ? }
? ? } else {
? ? ? // if the current state is LOW then the button
? ? ? // wend from on to off:
? ? }
? ? // Delay a little bit to avoid bouncing
? ? delay(50);
?
? }
?
? buttonState5 = digitalRead(buttonPin5);
? if (buttonState5 != lastButtonState5) {
? ? if (buttonState5 == HIGH) {
? ? ? buttonPushCounter5++;
? ? ? int s = 0;
? ? ? int t = 0;
? ? ? int i = 0;
? ? ? switch (buttonPushCounter5) {
? ? ? ? case 1:
? ? ? ? ? Serial.println("SWR");
? ? ? ? ? tft.fillRect(23, 173, 260, 40, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? tft.setCursor(28, 194);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? tft.print("SWR");
? ? ? ? ? for (s = 50; s < 270; s = s + 2) {
? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? tft.fillRect(s, 203, 2, 1, WHITE);
? ? ? ? ? }
? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? tft.setCursor(48, 206);
? ? ? ? ? tft.print("1");
? ? ? ? ? tft.setCursor(70, 206);
? ? ? ? ? tft.print("1.5");
? ? ? ? ? tft.setCursor(105, 206);
? ? ? ? ? tft.print("2");
? ? ? ? ? tft.setCursor(125, 206);
? ? ? ? ? tft.print("2.5");
? ? ? ? ? tft.setCursor(162, 206);
? ? ? ? ? tft.print("3");
? ? ? ? ? tft.drawCircle(260, 208, 3, GREY);
? ? ? ? ? tft.drawCircle(266, 208, 3, GREY);
? ? ? ? ? for (i = 0; i < 2; i++) {
? ? ? ? ? ? for (s = 50; s < 70; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 70; s >= 50; s = s - 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 50; s < 90; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 90; s >= 50; s = s - 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(78, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(108, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(134, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(164, 197, 1, 5, WHITE);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? break;
? ? ? ? case 2:
? ? ? ? ? Serial.println("ALC");
? ? ? ? ? tft.fillRect(23, 173, 260, 40, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.setCursor(28, 194);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.print("ALC");
? ? ? ? ? for (s = 50; s < 270; s = s + 2) {
? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? }
? ? ? ? ? tft.fillRect(50, 203, 116, 2, RED);
? ? ? ? ? for (i = 0; i < 2; i++) {
? ? ? ? ? ? for (s = 50; s < 166; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(5);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 166; s >= 50; s = s - 2) {
?
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? delay(5);
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? ? Serial.println("COMP");
? ? ? ? ? tft.fillRect(23, 173, 260, 40, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.setCursor(23, 194);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.print("COMP");
? ? ? ? ? for (s = 50; s < 270; s = s + 2) {
? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? }
? ? ? ? ? tft.fillRect(50, 192, 9, 12, GREY);
? ? ? ? ? tft.setTextColor(BLACK, GREY);
? ? ? ? ? tft.setCursor(52, 195);
? ? ? ? ? tft.print("0");
? ? ? ? ? tft.fillRect(88, 192, 9, 12, GREY);
? ? ? ? ? tft.setCursor(90, 195);
? ? ? ? ? tft.print("5");
? ? ? ? ? tft.fillRect(130, 192, 13, 12, GREY);
? ? ? ? ? tft.setCursor(130, 195);
? ? ? ? ? tft.print("10");
? ? ? ? ? tft.fillRect(170, 192, 13, 12, GREY);
? ? ? ? ? tft.setCursor(170, 195);
? ? ? ? ? tft.print("15");
? ? ? ? ? tft.fillRect(211, 192, 14, 12, GREY);
? ? ? ? ? tft.setCursor(212, 195);
? ? ? ? ? tft.print("20");
? ? ? ? ? tft.fillRect(256, 192, 13, 12, GREY);
? ? ? ? ? tft.setCursor(257, 195);
? ? ? ? ? tft.print("dB");
? ? ? ? ? for (i = 0; i < 3; i++) {
? ? ? ? ? ? for (s = 60; s <= 86; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(7);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 98; s <= 128; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(7);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 128; s >= 96; s = s - 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? delay(7);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 86; s >= 58; s = s - 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? delay(7);
? ? ? ? ? ? }
? ? ? ? ? ? tft.setCursor(52, 195);
? ? ? ? ? ? tft.print("0");
? ? ? ? ? ? tft.fillRect(88, 192, 9, 12, GREY);
? ? ? ? ? ? tft.setCursor(90, 195);
? ? ? ? ? ? tft.print("5");
? ? ? ? ? ? tft.fillRect(130, 192, 13, 12, GREY);
? ? ? ? ? ? tft.setCursor(130, 195);
? ? ? ? ? ? tft.print("10");
? ? ? ? ? ? tft.fillRect(170, 192, 13, 12, GREY);
? ? ? ? ? ? tft.setCursor(170, 195);
? ? ? ? ? ? tft.print("15");
? ? ? ? ? ? tft.fillRect(211, 192, 14, 12, GREY);
? ? ? ? ? ? tft.setCursor(212, 195);
? ? ? ? ? ? tft.print("20");
? ? ? ? ? ? tft.fillRect(256, 192, 13, 12, GREY);
? ? ? ? ? ? tft.setCursor(257, 195);
? ? ? ? ? ? tft.print("dB");
? ? ? ? ? }
? ? ? ? ? break;
? ? ? ? case 4:
? ? ? ? ? Serial.println("ID");
? ? ? ? ? tft.fillRect(23, 173, 260, 40, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.setCursor(28, 194);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? tft.print("ID");
? ? ? ? ? for (s = 50; s < 270; s = s + 2) {
? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? tft.fillRect(s, 203, 2, 1, WHITE);
? ? ? ? ? }
? ? ? ? ? tft.setCursor(48, 206);
? ? ? ? ? tft.print("0");
? ? ? ? ? tft.setCursor(90, 206);
? ? ? ? ? tft.print("5");
? ? ? ? ? tft.setCursor(130, 206);
? ? ? ? ? tft.print("10");
? ? ? ? ? tft.setCursor(172, 206);
? ? ? ? ? tft.print("20");
? ? ? ? ? tft.setCursor(216, 206);
? ? ? ? ? tft.print("15");
? ? ? ? ? tft.setCursor(260, 206);
? ? ? ? ? tft.print("25A");
? ? ? ? ? tft.fillCircle(58, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(66, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(74, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(82, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(100, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(108, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(116, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(124, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(144, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(152, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(160, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(168, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(187, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(195, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(203, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(211, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(231, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(239, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(247, 209, 1, GREY);
? ? ? ? ? tft.fillCircle(255, 209, 1, GREY);
? ? ? ? ? tft.fillRect(92, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(136, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(178, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(222, 197, 1, 5, WHITE);
? ? ? ? ? tft.fillRect(264, 197, 1, 5, WHITE);
? ? ? ? ? for (i = 0; i < 1; i++) {
? ? ? ? ? ? for (s = 50; s < 170; s = s + 2) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? tft.fillRect(92, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(136, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(178, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(222, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(264, 197, 1, 5, WHITE);
? ? ? ? ? ? }
? ? ? ? ? ? delay(1000);
? ? ? ? ? ? for (s = 170; s >= 50; s = s - 2) {
?
? ? ? ? ? ? ? tft.fillRect(s, 193, 1, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 1, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 1, 193, 1, 10, BLUE);
? ? ? ? ? ? ? delay(15);
? ? ? ? ? ? ? tft.fillRect(50, 193, 1, 10, WHITE);
? ? ? ? ? ? ? tft.fillRect(92, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(136, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(178, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(222, 197, 1, 5, WHITE);
? ? ? ? ? ? ? tft.fillRect(264, 197, 1, 5, WHITE);
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? break;
? ? ? ? case 5:
? ? ? ? ? Serial.println("S/PO");
? ? ? ? ? tft.fillRect(23, 180, 260, 40, BLACK);
? ? ? ? ? tft.setFont();
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.setTextSize(1);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(DARKGREY, GREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.fillRect(2, 225, 60, 15, DARKGREY);
? ? ? ? ? tft.drawRect(2, 225, 60, 15, GREY);
? ? ? ? ? tft.setCursor(16, 229);
? ? ? ? ? tft.setTextColor(WHITE, DARKGREY);
? ? ? ? ? tft.print("METER");
? ? ? ? ? delay(100);
? ? ? ? ? tft.setCursor(39, 180);
? ? ? ? ? tft.print("S");
? ? ? ? ? tft.setCursor(59, 180);
? ? ? ? ? tft.print("1");
? ? ? ? ? tft.setCursor(84, 180);
? ? ? ? ? tft.print("3");
? ? ? ? ? tft.setCursor(110, 180);
? ? ? ? ? tft.print("5");
? ? ? ? ? tft.setCursor(136, 180);
? ? ? ? ? tft.print("7");
? ? ? ? ? tft.setCursor(162, 180);
? ? ? ? ? tft.print("9");
? ? ? ? ? tft.setTextColor(RED);
? ? ? ? ? tft.setCursor(186, 180);
? ? ? ? ? tft.print("+20");
? ? ? ? ? tft.setCursor(218, 180);
? ? ? ? ? tft.print("+40");
? ? ? ? ? tft.setCursor(250, 180);
? ? ? ? ? tft.print("+60dB");
? ? ? ? ? tft.fillRect(60, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(73, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(86, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(99, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(112, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(125, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(138, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(151, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(164, 189, 2, 3, WHITE);
? ? ? ? ? tft.fillRect(196, 189, 2, 3, RED);
? ? ? ? ? tft.fillRect(228, 189, 2, 3, RED);
? ? ? ? ? tft.fillRect(260, 189, 2, 3, RED);
? ? ? ? ? for (s = 50; s < 167; s++) {
? ? ? ? ? ? tft.fillRect(s, 193, 1, 1, WHITE);
? ? ? ? ? }
? ? ? ? ? for (s = 166; s <= 271; s++) {
? ? ? ? ? ? tft.fillRect(s, 192, 1, 2, RED);
? ? ? ? ? }
? ? ? ? ? for (s = 50; s < 270; s = s + 3) {
? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? ? ? ? ? tft.drawRect(s + 2, 200, 1, 10, BLACK);
? ? ? ? ? ? tft.fillRect(s, 203, 3, 1, WHITE);
? ? ? ? ? }
? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? tft.setCursor(30, 206);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.print("Po 0");
? ? ? ? ? tft.setCursor(110, 206);
? ? ? ? ? tft.print("25");
? ? ? ? ? tft.setCursor(162, 206);
? ? ? ? ? tft.print("50");
? ? ? ? ? tft.setCursor(255, 206);
? ? ? ? ? tft.print("100%");
? ? ? ? ? for (i = 0; i < 1; i++) {
? ? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? ? for (s = 52; s <= 165; s = s + 3) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, BLUE);
? ? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(3);
? ? ? ? ? ? }
? ? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? ? for (s = 165; s <= 270; s = s + 3) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, RED);
? ? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? ? delay(3);
? ? ? ? ? ? }
? ? ? ? ? ? for (s = 270; s >= 168; s = s - 3) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 2, 193, 2, 10, RED);
? ? ? ? ? ? ? delay(3);
? ? ? ? ? ? }
? ? ? ? ? ? tft.fillRect(166, 193, 2, 10, GREY);
? ? ? ? ? ? tft.fillRect(165, 193, 1, 10, BLACK);
? ? ? ? ? ? for (s = 164; s >= 52; s = s - 3) {
? ? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, GREY);
? ? ? ? ? ? ? tft.fillRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? ? tft.drawRect(s - 2, 193, 2, 10, BLUE);
? ? ? ? ? ? ? delay(3);
? ? ? ? ? ? }
? ? ? ? ? }
? ? ? ? ? for (s = 50; s < 164; s = s + 3) {
? ? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, BLUE);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? delay(3);
? ? ? ? ? }
? ? ? ? ? for (s = 164; s < 181; s = s + 3) {
? ? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? ? tft.fillRect(s, 193, 2, 10, RED);
? ? ? ? ? ? tft.drawRect(s + 2, 193, 1, 10, BLACK);
? ? ? ? ? ? delay(3);
? ? ? ? ? }
? ? ? ? ? tft.fillRect(50, 193, 2, 10, WHITE);
? ? ? ? ? tft.setCursor(30, 206);
? ? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? ? tft.print("Po 0");
? ? ? ? ? tft.setCursor(110, 206);
? ? ? ? ? tft.print("25");
? ? ? ? ? tft.setCursor(162, 206);
? ? ? ? ? tft.print("50");
? ? ? ? ? tft.setCursor(255, 206);
? ? ? ? ? tft.print("100%");
? ? ? ? ? buttonPushCounter5 = 0;
? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? // if nothing else matches, do the default
? ? ? ? ? // default is optional
? ? ? ? ? break;
? ? ? }
? ? } else {
? ? ? // if the current state is LOW then the button
? ? ? // wend from on to off:
? ? }
? ? // Delay a little bit to avoid bouncing
? ? delay(50);
?}
?
? lastButtonState = buttonState;
? lastButtonState2 = buttonState2;
? lastButtonState3 = buttonState3;
? lastButtonState4 = buttonState4;
? lastButtonState5 = buttonState5;
?
? val1a = digitalRead( ROT_L1_PIN );
? val1b = digitalRead( ROT_R1_PIN );
? delay(1);
?
? // Rotary Encoder 1
? if ( val1a == HIGH && val1b == HIGH ) {
? ? if ( dirRot1 == ROT_LEFT ) {
? ? ? vfo += ROT_d;
? ? ? if (vfo > ROT_MAX) {
? ? ? ? vfo = ROT_MAX;
? ? ? }
? ? } else if ( dirRot1 == ROT_RIGHT ) {
? ? ? vfo -= ROT_d;
? ? ? if (vfo < ROT_MIN) {
? ? ? ? vfo = ROT_MIN;
? ? ? }
? ? }
? ? dirRot1 = ROT_STAY;
? } else {
? ? if ( val1a == LOW ) {
? ? ? dirRot1 = ROT_LEFT;
? ? }
? ? if ( val1b == HIGH ) {
? ? ? dirRot1 = ROT_RIGHT;
? ? }
? }
// MODE CODE -----frequency step code ? -------------------------------------------------------------
? if (oldMode != mode) {
? ? oldMode = mode;
? ? switch (mode) {
? ? ? // ? ? ? ?case 1:
? ? ? // ? ? ? ? ?Serial.println("1 Hz");
? ? ? // ? ? ? ? ?break;
? ? ? case 0:
? ? ? ? Serial.println("100 Hz");
? ? ? ? ROT_d = 100;
? ? ? ? tft.fillRect(195, 154, 50, 10, BLACK);
? ? ? ? tft.fillRect(155, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(129, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(212, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(75, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(230, 102, 20, 10, BLACK);
? ? ? ? tft.fillTriangle(190, 107, 185, 102, 195, 102, WHITE);
? ? ? ? tft.setFont();
? ? ? ? tft.setTextSize(1);
? ? ? ? tft.setCursor(215, 155);
? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? tft.println("100 Hz");
? ? ? ? break;
? ? ? case 1:
? ? ? ? Serial.println("1 ?KHz");
? ? ? ? ROT_d = 1000;
? ? ? ? tft.fillRect(205, 154, 50, 10, BLACK);
? ? ? ? tft.fillRect(184, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(129, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(212, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(64, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(230, 102, 20, 10, BLACK);
? ? ? ? tft.fillTriangle(165, 107, 160, 102, 170, 102, WHITE);
? ? ? ? tft.setFont();
? ? ? ? tft.setTextSize(1);
? ? ? ? tft.setCursor(220, 155);
? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? tft.println("1 KHz");
? ? ? ? break;
? ? ? case 2:
? ? ? ? Serial.println("10 KHz");
? ? ? ? ROT_d = 10000;
? ? ? ? tft.fillRect(205, 154, 50, 10, BLACK);
? ? ? ? tft.fillRect(155, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(212, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(64, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(230, 102, 20, 10, BLACK);
? ? ? ? tft.fillTriangle(139, 107, 134, 102, 144, 102, WHITE);
? ? ? ? tft.setFont();
? ? ? ? tft.setTextSize(1);
? ? ? ? tft.setCursor(215, 155);
? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? tft.println("10 KHz");
? ? ? ? break;
? ? ? case 3:
? ? ? ? Serial.println("1 Hz");
? ? ? ? ROT_d = 1;
? ? ? ? tft.fillRect(205, 154, 50, 10, BLACK);
? ? ? ? tft.fillRect(155, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(129, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(184, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(75, 102, 20, 10, BLACK);
? ? ? ? tft.fillTriangle(242, 107, 237, 102, 247, 102, WHITE);
? ? ? ? tft.setFont();
? ? ? ? tft.setTextSize(1);
? ? ? ? tft.setCursor(225, 155);
? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? tft.println("1 Hz");
? ? ? ? break;
? ? ? case 4:
? ? ? ? Serial.println("10 Hz");
? ? ? ? ROT_d = 10;
? ? ? ? tft.fillRect(205, 154, 50, 10, BLACK);
? ? ? ? tft.fillRect(155, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(129, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(184, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(230, 102, 20, 10, BLACK);
? ? ? ? tft.fillRect(184, 102, 20, 10, BLACK);
? ? ? ? tft.fillTriangle(218, 107, 213, 102, 223, 102, WHITE);
? ? ? ? tft.setFont();
? ? ? ? tft.setTextSize(1);
? ? ? ? tft.setCursor(220, 155);
? ? ? ? tft.setTextColor(GREY, BLACK);
? ? ? ? tft.println("10 Hz");
? ? ? ? break;
? ? }
? ?Serial.print("sw:");
? ?Serial.println(mode);
? }
?
? if (oldVal1 != vfo) {
? ? oldVal1 = vfo;
? ? tft.fillRect(68, 110, 190, 40, BLACK);
? ? tft.fillRect(92, 145, 3, 3, WHITE);
? ? tft.fillRect(176, 145, 3, 3, WHITE);
? ? tft.setTextSize(2);
? ? tft.setFont(&FreeSansBold12pt7b);
? ? tft.setCursor(70, 145);
? ? tft.setTextColor(WHITE, BLACK);
? ? tft.println(oldVal1 + 200);
? ? Serial.println(vfo);
? ?
#ifdef IF_Offset
? ? uint32_t vco = bfo - (vfo * SI5351_FREQ_MULT);// LSB
? ? si5351.set_freq(vco, SI5351_CLK0);
? ? //you can also subtract the bfo to suit your needs
?//si5351.set_freq((vfo * SI5351_FREQ_MULT) + bfo ?, SI5351_PLL_FIXED, SI5351_CLK0); //usb - tried these ?but it did not work
//si5351.set_freq(((vfo * SI5351_FREQ_MULT) + bfo), SI5351_CLK2); //for sum 19Mhz 0 correction?
//si5351.set_freq(((vfo * SI5351_FREQ_MULT) + bfo) -145000 , SI5351_CLK2); //for sum 19Mhz -1450hz correction 145000 -- T E S T --
? ??
? ? // TEST WITH SERIAL OUTPUTS --------------------------------------------T E S T?
? ??
? ? ? ? Serial.print("bfo : "); Serial.println(bfo);
? ? ? ??Serial.print("vfo : "); Serial.println(vfo);
? ? ? ? Serial.print("mult : "); Serial.println(int(SI5351_FREQ_MULT));
? ? ? ??
? ? ? ? Serial.print("vco : "); Serial.println(vco);
// tried adding Allard's suggestion in here but i could not make it work ? ?----------------- ? ? ? ?
?? ? ? if (vfo >= 10000000ULL & tbfo != "USB")
? ? {
? ? ? bfo = USB;
? ? ? tbfo = "USB";
? ? ? si5351.set_freq( bfo, SI5351_CLK2);//
? ? ? Serial.println("We've switched from LSB to USB");
? ? }
? ? else if (vfo < 10000000ULL & tbfo != "LSB")
? ? {
? ? ? bfo = LSB;
? ? ? tbfo = "LSB";
? ? ? si5351.set_freq( bfo, SI5351_CLK2);//
? ? ? Serial.println("We've switched from USB to LSB");
? ? }
#endif
//-------------------------------------------------------------------------------------
?
? ? delay(30);
? }
?
? if ( digitalRead(ROT_SW1_PIN ) ) {
? ? ?
? ? delay(30);
? ? while (digitalRead(ROT_SW1_PIN)) {
? ? ? delay(1);
? ? }
? ? mode++;
? ? mode %= 5;
? }
}
?
----------------------------------------------------------------------------- |
Re: Front End Protection Diodes?
1n4148's seem to work fine.
toggle quoted message
Show quoted text
1n914's likely do as well, the Vishay datasheets look about the same. Could be Vishay ships the exact same part. The 1n914 is older, other manufacturers might spec a lower max forward current or something.? "Back to back" and "front to tail" are both a ambiguous. I suppose you could look at one of the drawings/photos previously posted. ? ?? Jerry On Thu, Jul 27, 2017 at 01:44 pm, Mr Sheesh wrote: I had been wondering if we were talking PIN diodes or what, 4148s |
Re: Front End Protection Diodes?
Yes the diodes are in "Anti-Parallel" not "Anti-Series". Anti-Parallel = parallel but cathodes on opposing sides; I had been wondering if we were talking PIN diodes or what, 4148s I "might" have 2-3 spares of in the junk closet, er room, er barn, OK warehouse really :P ? Mark, KF7YTQ |
Re: Front End Protection Diodes?
Back to back? I think not! That gives avalanche/breakdown voltage, and that can be up to kV depending on device. Try Head to tail - and across the input. +/-0.6V max, turn-on (forward-bias) voltage of silicon junction. 0.3V or so for germanium. If you're worried about capacitance, point-contact. This, of course is for RX ONLY! Tx into that will blow either the diodes or the Final! Not quite sure how it fits in the BITX scheme, probably in amongst the antenna relay circuitry.
|
to navigate to use esc to dismiss