Keyboard Shortcuts
Likes
- BITX20
- Messages
Search
Re: BITX40 TFT DISPLAY CODE - Coding A Control Button - Looking for Assistance to figure out why a Step Tuning button does not work
Jack, Thanks for talking time off your busy schedule to look at this code. I ?liked the the PD8W display, ?but it now appears more obvious the code is poorly structured and therefore a nightmare for someone like me trying to work out the issues. I ?looked at you suggested changes and they make sense - and reduce code Unfortunately it induced other errors which I could not get around. Hmmm, I ?am thinking if Jack is finding it difficult to read then I am in big trouble ..... I believe, its probably best to work with your code, which is supported and as you made clear, ?more organized / ?logical. I have your board completed and just waiting for a mini_360 vr, the chokes and the 78L08. My progress: I have loaded your code and the display comes on .? V: is hovering around 4.5 - so it appears alive I also plugged the tft into a regular atmega2560 for testing / playing.. I am using an 2.8tft. 0x1289 Compared to the picture in your manual, I see this: ?mesg appears halfway up the screen and the bottom of the meter is about ?1/2 inches from the bottom of the screen. Any suggestions where the issue be? Thanks Joe VE1BWV On Sat, Jun 17, 2017 at 11:18 PM, Jack Purdum via Groups.Io <econjack@...> wrote:
|
||
Re: W8TEE TFT/VFO DDS adapter
¿ªÔÆÌåÓýWell your code uploads, so I got all the Libs.? I could try loading Adafruit again with what every is today's version? The Rinky Dink Demo works, but when I try to download their manual, my computer says there are errors and can't read their PDFs? I can't blame the seller, their documentation pointed to Rinky
Dink, and I got 2 examples working. I would like to find an example in MCUFriends that will work with MEGA.? I bought the Mega Compatible displays figuring they would be the easiest to experiment with.? I am not trying to build a Raduino now, just want to try a TFT and see if I can understand its library functions.? This display uses the Right hand side double connector.?? There is a picture of the pinouts I found. DB0-DB15 and control pins. Mike, WA6ISP On 6/18/2017 7:25 AM, Jack Purdum via
Groups.Io wrote:
|
||
Re: W8TEE TFT/VFO DDS adapter
Jack Purdum
If I plug a mcufriend display into a standard MEGA 2560 board and run my software, you should see the screen fill with the startup display for the BITX40 software. If you don't see that display, my best bet is that you don't have the right drivers in place. A second possibility is that you don't have the latest Adafruit_GFX library installed. (The mcufriend library inherits from the Adafruit library.) Now, I have seen some mcufriend displays that do use the "end pins" on a standard Mega 2560 board (note the I/O pins on the left edge of the display).? ![]() My code is not set up to use those displays. If you have one of those displays, you have to go through each I/O pin the display uses and "pair it up" with the matching I/O pin I use in my code. Personally, I think it's easier to buy a new display. Jack, W8TEE From: Michael Hagen <motdog@...> To: [email protected] Sent: Sunday, June 18, 2017 9:57 AM Subject: Re: [BITX20] W8TEE TFT/VFO DDS adapter I am looking for a file in MCUfriend?
A header or C file?
Is there a #define somewhere to use Mega 2560 Pins.
Yes, I have it plugged directly to a Mega, so I would need that
option?
I tried changing ID in Jacks new code.? Still nothing.? Default
0xD3D3.
Thanks, I don't know where to look?
Mike,WA6ISP
On 6/18/2017 4:34 AM, Laurent CHABERT
wrote:
De : [email protected]
<[email protected]> de la part de Vince Vielhaber
<vev@...>
Envoy¨¦ : dimanche 18 juin 2017 05:00 ? : [email protected] Objet : Re: [BITX20] W8TEE TFT/VFO DDS adapter ?
Did you try changing that line of code in the MCUFriend driver that Jack mentioned the other day?? That one's using the mega pins as opposed to the standard pins. Vince. On 06/17/2017 01:09 PM, Michael Hagen wrote: > Yes Rinky Dink works but I can't get any MCU Friend to work.? I spent > most of the day playing with it. > > My TFT is directly plugged into a Mega 2560.? Its pinouts fit like a > shield over the top of the 2560. > > Any hints to give me?? I don't know why? Rinky Dink works. > > I have run the ID program in MCUFriend, no ID.? I know that the package > says HX8357B for Driver? > > Mike, WA6ISP > > > On 6/16/2017 4:58 PM, Vince Vielhaber wrote: >> If the UTFT library works (the one from Rinky Dink) then the >> MCUFriend_kbv library should once you find the right parameters. UTFT >> is slow and a memory pig. >> >> Vince. >> >> >> >> On 06/16/2017 07:40 PM, Michael Hagen wrote: >>> Bought 2 of these displays.? Less than $8.? No Touch Screen. 36 Pins, >>> not 40. >>> Uses 9481 Controller, package says Driver: HX8357B? >>> >>> Work fine but not so far with your recommended library (Friend?). >>> A library at Rinkey Dink Electronics works? >>> >>> Parallel transfer, not serial. >>> I did not look at whether you used serial or parallel? >>> >>> Mike, WA6ISP >>> >>> >>> >>> >> > > > > -- ?? Michigan VHF Corp.?? ?? ?????????????????????????? |
||
Re: W8TEE TFT/VFO DDS adapter
¿ªÔÆÌåÓýI am looking for a file in MCUfriend? A header or C file? Is there a #define somewhere to use Mega 2560 Pins. Yes, I have it plugged directly to a Mega, so I would need that option?
I tried changing ID in Jacks new code.? Still nothing.? Default 0xD3D3.
Thanks, I don't know where to look? Mike,WA6ISP On 6/18/2017 4:34 AM, Laurent CHABERT
wrote:
|
||
Arduino & Si5351 FOR: VFO + BFO + IF-SHIFT 8khz-160MHZ looking for sketch
#bitx20help
#w8tee
Hello,
For a personnal transceiver using a bidirectionnal TX/RX superheterodyne architecture with a simgle FI (20, 28, or 54 MHZ SSB ladder filter) made with severals modules availlables on eBay, alls these module are connectorised by SMA connector in order to test easely, and te expereiment differents boards for each modules: SI5351 Board ( Adafruit or SV1AFN) LNA HF 2N5109 Amplifier, (SV1AFN) (2N5109 2N3866 RF Amplifier PCB) 2N5109 Post mixer Amplifier, (SV1AFN) (2N5109 2N3866 RF Amplifier PCB) SMA connectorised Diode Mixer, (RMS-11 5-1900MHz rf up and down) Home made 20, 28 and 54MHZ ladder SSB quartz Filter (Fondamental AT cut) FI amplifier board with 2XAD603 and 80dB AGC range (NEW AD603 80dB VCA voltage controlled gain amplifier module) Microphone amplifier for DSB post mixer amplification, Microphone amplifier used for DSB? generation BF amplifier for loudspeaker (TDA2822M Mono Mini Amplifier Board Module) I am looking for? ready made project with a SI5351 Generator providing: OL, BFO, and the top would be the IF-SHIFT with a second incremental encoder WHO CAN CODE THIS!! please help! ok course the SI5351 code should be able to have good Phase noise up to 160MHZ in order to be able to run on the 145MHZ Band, and then be user? for transverters. ?and push button choice should be availlable for OL + FI or OL - FI for this project we should use a 4*20 LCD or az TFT in order to see a t the same time: Rx frequency OL Frequency IF-SHIFT value The BFO fr¨¦quency should be able to be changed by the menu very easely in order to test severals Ladders filters at diff¨¦rents frequency I did use some sketch with very bad signal above 112.5MHz !! the SI5351 Registers should be? properly writen -Please send me somme links Regards, F4AER (French HAM) |
||
Re: W8TEE TFT/VFO DDS adapter
¿ªÔÆÌåÓý
De : [email protected] <[email protected]> de la part de Vince Vielhaber <vev@...>
Envoy¨¦ : dimanche 18 juin 2017 05:00 ? : [email protected] Objet : Re: [BITX20] W8TEE TFT/VFO DDS adapter ?
Did you try changing that line of code in the MCUFriend driver that Jack mentioned the other day?? That one's using the mega pins as opposed to the standard pins. Vince. On 06/17/2017 01:09 PM, Michael Hagen wrote: > Yes Rinky Dink works but I can't get any MCU Friend to work.? I spent > most of the day playing with it. > > My TFT is directly plugged into a Mega 2560.? Its pinouts fit like a > shield over the top of the 2560. > > Any hints to give me?? I don't know why? Rinky Dink works. > > I have run the ID program in MCUFriend, no ID.? I know that the package > says HX8357B for Driver? > > Mike, WA6ISP > > > On 6/16/2017 4:58 PM, Vince Vielhaber wrote: >> If the UTFT library works (the one from Rinky Dink) then the >> MCUFriend_kbv library should once you find the right parameters. UTFT >> is slow and a memory pig. >> >> Vince. >> >> >> >> On 06/16/2017 07:40 PM, Michael Hagen wrote: >>> Bought 2 of these displays.? Less than $8.? No Touch Screen. 36 Pins, >>> not 40. >>> Uses 9481 Controller, package says Driver: HX8357B? >>> >>> Work fine but not so far with your recommended library (Friend?). >>> A library at Rinkey Dink Electronics works? >>> >>> Parallel transfer, not serial. >>> I did not look at whether you used serial or parallel? >>> >>> Mike, WA6ISP >>> >>> >>> >>> >> > > > > -- ?? Michigan VHF Corp.?? ?? ?????????????????????????? |
||
Re: gluing toroids to board
we use a quick-setting glue akin to superglue. - f On Sun, Jun 18, 2017 at 11:57 AM, <davidzdeb@...> wrote: So while I was handling my board the other night, I lost my grip and knocked my hand into one of the toroids.? It came unglued from the board, but the wiring remained intact.? I was thinking of using hot glue to stick it back on but I thought I should check if there is a preferred way of adhering components to the board. ? |
||
gluing toroids to board
So while I was handling my board the other night, I lost my grip and knocked my hand into one of the toroids.? It came unglued from the board, but the wiring remained intact.? I was thinking of using hot glue to stick it back on but I thought I should check if there is a preferred way of adhering components to the board. ?
|
||
Re: More on troubleshooting.
Andy,
toggle quoted message
Show quoted text
C42 is the bypass cap and you should not get any RF there. Shake T1 and T2 and see, if there is a short or bad solder then you might get a clue. The tx amp stage R46 may be open - in which case the TX gain will be reduced severely but not affect the RX. If C44 is open then you will have the same problem. Check r45 also. Switch off power when checking these resistors. In my experience slight overheating of these resistors makes them go open. This could have happened during manufacture. Cheers Raj At 18/06/2017, you wrote:
Hi all, |
||
More on troubleshooting.
Hi all,
I put my board back in the Bitx40 and took more measurements. Again I can get the 12 MHz with audio modulation on transmit thru the xtal filter and thru the amp to C51 at 200 mv,? Also get it on all the diodes on the T1 side. ?~250 Mv to 300Mv depending on the diode. But on the T1 side, and C42 it drops to a questionable 100Mv and doesnt amplify, unlike my friends board that tracks straight through. ?It would seem that it's T2, but the receive side is so good I'm puzzled. If it were 10db down as Jerry suggests, wouldn't that affect the receive also? Would one bad diode make this effect? I guess I would have to remove the diodes to check them, as they all measure .470 but are intertwined. Andy |
||
Re: Raduino v1.15 released
M Garza
Me too Marco - KG5PRT? On Jun 17, 2017 10:14 PM, "richard kappler" <richkappler@...> wrote:
|
||
Re: Raduino v1.15 released
richard kappler
I'm in! 73, Richard W2KAP? On Jun 17, 2017 7:58 PM, "Allard PE1NWL" <pe1nwl@...> wrote: On Fri, Jun 16, 2017 at 12:46 pm, PA1LEX wrote: |
||
Re: W8TEE TFT/VFO DDS adapter
Vince Vielhaber
Did you try changing that line of code in the MCUFriend driver that Jack mentioned the other day? That one's using the mega pins as opposed to the standard pins.
toggle quoted message
Show quoted text
Vince. On 06/17/2017 01:09 PM, Michael Hagen wrote:
Yes Rinky Dink works but I can't get any MCU Friend to work. I spent --
Michigan VHF Corp. |
||
Re: has anyone tried this super cheap Mega 2560 PRO MINI
Vince Vielhaber
Looks like they don't do paypal and dealing with China that's the only way I'll do it (read: screwed in the past - ONCE).
toggle quoted message
Show quoted text
Thinking about it, I could use my paypal debit card ... Vince. On 06/17/2017 01:35 PM, Michael Hagen wrote:
I just got 3 of them cheap. They are a little different than the one I --
Michigan VHF Corp. |
||
Re: Raduino v1.15 released
Jack Purdum
Is that really an S meter or a Vu meter? Jack, W8TEE From: "qrper72@..." <qrper72@...> To: [email protected] Sent: Saturday, June 17, 2017 7:33 AM Subject: Re: [BITX20] Raduino v1.15 released Hello Allard, FYI. The simple s-meter of ND6T is FB! ja9mat Hidehiko. |
||
Re: W8TEE TFT/VFO DDS adapter
Jack Purdum
Do you have the latest Adafruit_GFX library installed? The mcufriend library inherits from the Adafruit library. Jack, W8TEE From: Michael Hagen <motdog@...> To: [email protected] Sent: Saturday, June 17, 2017 1:10 PM Subject: Re: [BITX20] W8TEE TFT/VFO DDS adapter Yes Rinky Dink works but I can't get any MCU Friend to work.? I spent most of the day playing with it. My TFT is directly plugged into a Mega 2560.? Its pinouts fit like a shield over the top of the 2560. Any hints to give me?? I don't know why? Rinky Dink works. I have run the ID program in MCUFriend, no ID.? I know that the package says HX8357B for Driver? Mike, WA6ISP On 6/16/2017 4:58 PM, Vince Vielhaber wrote: > If the UTFT library works (the one from Rinky Dink) then the > MCUFriend_kbv library should once you find the right parameters. UTFT > is slow and a memory pig. > > Vince. > > > > On 06/16/2017 07:40 PM, Michael Hagen wrote: >> Bought 2 of these displays.? Less than $8.? No Touch Screen. 36 Pins, >> not 40. >> Uses 9481 Controller, package says Driver: HX8357B? >> >> Work fine but not so far with your recommended library (Friend?). >> A library at Rinkey Dink Electronics works? >> >> Parallel transfer, not serial. >> I did not look at whether you used serial or parallel? >> >> Mike, WA6ISP >> >> >> >> > |
||
Re: BITX40 TFT DISPLAY CODE - Coding A Control Button - Looking for Assistance to figure out why a Step Tuning button does not work
Jack Purdum
Man, that code is really hard to read. Evidently he doesn't believe in functions. Anyway, look at the code where the encode switch is read. If a switch push is sensed, the code does nothing. At least try this: ??if ( digitalRead(ROT_SW1_PIN) ) { Serial.print("in digitalRead(), mode = "); Serial.println(mode); ? ? ????//delay(30); ? ? ????while (digitalRead(ROT_SW1_PIN)) { ? ? ????? delay(1); ? ? ????} ? ????? mode++; ? ? ????mode %= 5; ? ?// What the hell is the purpose of this if you only use 3 increment states??? ? } And take this 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); ? ?// Handle these differences in the function as offsets based on mode ? ? ? ? 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); ? } and turn it into this: void ChangeIncrement(int mode)? { ? ? char msg[9]; ? ? int increment[] = {100, 1000, 10000}; ? ? ? ?// ? ? ? ? ROT_d = increment[mode]; ? ? ? ? itoa(ROT_d, msg, DEC); ? ? ? ? strcat(msg, " Hz); ? ? ? ? Serial.println(msg); ? ? ? ? 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(msg); } and change the big switch/case above with the function call. If special formatting is needed, that can be done in the function. Jack, W8TEE From: Joe <joeman2116@...> To: [email protected] Sent: Saturday, June 17, 2017 4:17 PM Subject: [BITX20] BITX40 TFT DISPLAY CODE - Coding A Control Button - Looking for Assistance to figure out why a Step Tuning button does not work Hi All, While waiting for some parts for another project, I came across some interesting code and have been doing some work on existing code by PD8W. I have tried to contact him for some help but he does not appear to be available. He developed some code to add a 2.8inch tft to the bitx40. ?The display is interesting and uses a rotary with the sg5351 with an atmega2560. I have made Progress: The display works fine. The Vfo dial changes the sg5351 dds When i disconnect the current raduino board and the vfo connector on my bit40, then connect my test unit, I can tune fine, no clicks or noise , reception is great. Problem: - push buttons? The code uses the switch on the rotary or a standard push button to change the range step ?tuning (10khz,1khz,100hz etc etc. It uses pin 46 (atmega 2560) but I tried it on other pins as well. I cant seem to make the button work. If i hold the wire which is connected to the pin, the range starts changing(capacitive effect I guess) ?but If i try a button it does not change the step tuning. I have tried using _pullup command - no change. Also tried 10k pullup resistor (pin to resistor to 5v) - no change. Tried 10k to ground - no change. Tried direct - to pin to button -? Also tried other push buttons to make sure they were good. This should be simple but I am running out of ideas. If any one can provide a solution or some ideas to try, for this one button , it will probably solve the same issues with the remaining buttons . Any help would be much appreciated Joe VE1BWV ?
#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>
?
#define ?ROT_L1_PIN 49// rotary A
#define ?ROT_R1_PIN 48//rotaryA
#define ?LED_R_PIN 45
#define ?LED_G_PIN 44
#define ?LED_B_PIN 47
#define ROT_SW1_PIN 46// ? <<<<<<< this is the step range tuning button >>>>>>>>>>>
#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 bfo = LSB; //start in lsb
//In this sketch the start frequency will be 7.100000 Mhz
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; ? ?// pins that ?pushbuttons are attached ?for tx/rx ? mode/ etc
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); //**mine. 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.set_pll(SI5351_PLL_FIXED, SI5351_PLLA);
? // Set CLK0 to output the starting "vfo" frequency as set above by vfo = ?
?
#ifdef IF_Offset
? uint32_t vco = bfo - (vfo * SI5351_FREQ_MULT);
? si5351.set_freq(vco, SI5351_PLL_FIXED, SI5351_CLK0);
? // seems not used : volatile uint32_t vfoT = (vfo * SI5351_FREQ_MULT) - bfo;
? tbfo = "LSB";
? // Set CLK2 to output bfo frequency
? si5351.set_freq( bfo, 0, SI5351_CLK2);
? si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_2MA); //you can set this to 2MA, 4MA, 6MA or 8MA
? //si5351.drive_strength(SI5351_CLK1,SI5351_DRIVE_2MA); //be careful though - measure into 50ohms
? //si5351.drive_strength(SI5351_CLK2,SI5351_DRIVE_2MA); //
#endif
?
#ifdef Direct_conversion
? si5351.set_freq((vfo * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
#endif
?
#ifdef FreqX4
? si5351.set_freq((vfo * SI5351_FREQ_MULT) * 4, SI5351_PLL_FIXED, SI5351_CLK0);
#endif
?
? int i = 0;
? pinMode(ROT_L1_PIN, INPUT);
? pinMode(ROT_R1_PIN, INPUT);
? digitalWrite(ROT_L1_PIN, HIGH); //pull-up enable
? digitalWrite(ROT_R1_PIN, HIGH); //pull-up enable
?
? pinMode(ROT_SW1_PIN, INPUT); // ?non pull up ?<<<<<<<<<<<<<<<<<<< range step tuning ?button>>>>>>>>>>>>>>>>>
?
? 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[] = {" PD8W"};
? uint16_t colormask[] = { 0x001F, 0x7BEF, ?};
? uint16_t dx, rgb, n, s, wid, ht;
? tft.setRotation(1);
? 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 + 1);
? 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[];
? tft.setAddrWindow(240, 5, 279, 59);
? tft.pushColors(penguin, 1600, 1);
#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;
? ? }
? }
?
? 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);
? ? si5351.set_freq(vco, SI5351_PLL_FIXED, 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);
? ? //
? ? // ? ?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);
? ? if (vfo >= 10000000ULL & tbfo != "USB")
? ? {
? ? ? bfo = USB;
? ? ? tbfo = "USB";
? ? ? si5351.set_freq( bfo, 0, 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, 0, SI5351_CLK2);
? ? ? Serial.println("We've switched from USB to LSB");
? ? }
#endif
?
#ifdef Direct_conversion
? ? si5351.set_freq((vfo * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0);
? ? tbfo = "";
#endif
?
#ifdef FreqX4
? ? si5351.set_freq((vfo * SI5351_FREQ_MULT) * 4, SI5351_PLL_FIXED, SI5351_CLK0);
? ? tbfo = "";
#endif
? ? delay(30);
? }
// DIGITAL STEP TUNING - SW1
? if ( digitalRead(ROT_SW1_PIN) ) {
? ? //delay(30);
? ? while (digitalRead(ROT_SW1_PIN)) {
? ? ? delay(1);
? ? }
? ? mode++;
? ? mode %= 5;
? }
}
?
|
||
Re: has anyone tried this super cheap Mega 2560 PRO MINI
As Larry, W2HHV, notes, the W8TEE VFO does use the 3.3v output.
Therefore the AliExpress (or other) Pro Mini ATMega2560 (without the USB port) cannot be directly substituted for the unit recommended by Jack. I believe the "Embedded" unit is the same, and probably will work. I have some of these units and will attempt to build with them...but it may be a while as I moved everything aside for painting (sigh). The Pro Mini unit is an interesting item, nonetheless... john AD5YE |