Keyboard Shortcuts
Likes
Search
LOOKING FOR HELP ADDING USB TO EXISTING BITX40 ARDUINO SKETCH
HI,
I would like to use the BITX FOR JT-65 ?- This needs USB mode. ? |
You will need to tell us what you are doing before we can tell you that you are doing it wrong.
toggle quoted message
Show quoted text
Could move the VFO from the Raduino standard of 12.0mhz-7.0mhz = 5mhz up to 12.0+7.0mhz = 19mhz This method is implemented in Allard's sketch, could just steal from him. Or you could move the 12mhz BFO down in frequency by about 3khz somehow, either by messing with the analog BFO or?perhaps by driving the BFO with CLK0 from the Si5351. ?Jerry, KE7ER On Wed, Jul 26, 2017 at 08:29 pm, Joe wrote: The part that has me stumped and after several weeks of effort, I still cannot make the code switch to USB. |
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;
? }
}
?
----------------------------------------------------------------------------- |
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: |
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. |
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. |
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. |