本文整理汇总了C++中Adafruit_ST7735::drawFastHLine方法的典型用法代码示例。如果您正苦于以下问题:C++ Adafruit_ST7735::drawFastHLine方法的具体用法?C++ Adafruit_ST7735::drawFastHLine怎么用?C++ Adafruit_ST7735::drawFastHLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Adafruit_ST7735
的用法示例。
在下文中一共展示了Adafruit_ST7735::drawFastHLine方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setup_display
void setup_display(void) {
// initialize the LCD display
// tft.init();
// tft.initR(INITR_BLACKTAB); // initialize a S6D02A1S chip, black tab
tft.setRotation(1);
tft.fillScreen(BLACK); //BLACK);
//tft.fillRect(0, pos, 160, 128-pos, BLACK); // erase old string
tft.setCursor(0, 119);
tft.setTextColor(WHITE);
tft.setTextWrap(true);
// tft.print("DD4WH SDR 5.00");
// Show mid screen tune position
tft.drawFastVLine(pos_centre_f, 0,pos+1, RED); //WHITE);
// tft.drawFastHLine(0, pos,79, YELLOW);// WHITE);
//tft.drawFastHLine(81, pos,79, YELLOW);
// draw S-Meter layout
tft.drawFastHLine (pos_x_smeter, pos_y_smeter-1, 9*s_w, WHITE);
tft.drawFastHLine (pos_x_smeter, pos_y_smeter+3, 9*s_w, WHITE);
tft.fillRect(pos_x_smeter, pos_y_smeter-3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter+8*s_w, pos_y_smeter-3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter+2*s_w, pos_y_smeter-3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter+4*s_w, pos_y_smeter-3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter+6*s_w, pos_y_smeter-3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter+7*s_w, pos_y_smeter-4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter+3*s_w, pos_y_smeter-4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter+5*s_w, pos_y_smeter-4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter+s_w, pos_y_smeter-4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter+9*s_w, pos_y_smeter-4, 2, 3, WHITE);
tft.drawFastHLine (pos_x_smeter+9*s_w, pos_y_smeter-1, 3*s_w*2+2, GREEN);
tft.drawFastHLine (pos_x_smeter+9*s_w, pos_y_smeter+3, 3*s_w*2+2, GREEN);
tft.fillRect(pos_x_smeter+11*s_w, pos_y_smeter-4, 2, 3, GREEN);
tft.fillRect(pos_x_smeter+13*s_w, pos_y_smeter-4, 2, 3, GREEN);
tft.fillRect(pos_x_smeter+15*s_w, pos_y_smeter-4, 2, 3, GREEN);
tft.drawFastVLine (pos_x_smeter-1, pos_y_smeter-1, 5, WHITE);
tft.drawFastVLine (pos_x_smeter+15*s_w+2, pos_y_smeter-1, 5, GREEN);
tft.setCursor(pos_x_smeter - 4, pos_y_smeter - 13);
tft.setTextColor(WHITE);
tft.setTextWrap(true);
tft.print("S 1");
tft.setCursor(pos_x_smeter + 28, pos_y_smeter - 13);
tft.print("3");
tft.setCursor(pos_x_smeter + 48, pos_y_smeter - 13);
tft.print("5");
tft.setCursor(pos_x_smeter + 68, pos_y_smeter - 13);
tft.print("7");
tft.setCursor(pos_x_smeter + 88, pos_y_smeter - 13);
tft.print("9");
tft.setCursor(pos_x_smeter + 120, pos_y_smeter - 13);
tft.print("+20dB");
} // end void setupdisplay
示例2: loop
void loop() {
Serial.println("printing though!");
tft.fillScreen(ST7735_BLACK);
// tft.setCursor(0, 0);
tft.setTextColor(ST7735_WHITE);
tft.setTextWrap(true);
// tft.setTextSize(3);
// tft.setCursor(30, 3);
tft.setFont(HERO_10);
tft.drawRightString("OTTAWA", 3);
tft.setFont(HERO_16);
tft.setTextSize(2);
// tft.setCursor(25, 20);
tft.drawRightString("-1 C", 20);
tft.setTextSize(1);
// tft.setCursor(35, 60);
tft.drawRightString("2:35 PM", 60);
tft.drawFastHLine(0, 90, tft.width(), ST7735_CYAN);
tft.setTextWrap(true);
tft.setFont(CENTURY_8);
tft.setTextSize(1);
// tft.setCursor(0, tft.height()-65);
int yPos = tft.drawString("Stay Hungry, Stay Foolish!", 0,tft.height()-65);
tft.setTextColor(ST7735_CYAN);
tft.drawRightString(" - Steve Jobs ", yPos);
tft.setTextColor(ST7735_MAGENTA);
delay(5000);
}
示例3: testfastlines
void testfastlines(uint16_t color1, uint16_t color2) {
tft.fillScreen(ST7735_BLACK);
for (int16_t y=0; y < tft.height(); y+=5) {
tft.drawFastHLine(0, y, tft.width(), color1);
}
for (int16_t x=0; x < tft.width(); x+=5) {
tft.drawFastVLine(x, 0, tft.height(), color2);
}
}
示例4: show_bandwidth
// indicate filter bandwidth on spectrum display
void show_bandwidth(int filtermode) {
tft.drawFastHLine(0, 61, 160, BLACK); // erase old indicator
tft.drawFastHLine(0, 62, 160, BLACK); // erase old indicator
switch (filtermode) {
case LSB_NARROW:
tft.drawFastHLine(72, 61, 6, RED);
tft.drawFastHLine(72, 62, 6, RED);
break;
case LSB_WIDE:
tft.drawFastHLine(61, 61, 20, RED);
tft.drawFastHLine(61, 62, 20, RED);
break;
case USB_NARROW:
tft.drawFastHLine(83, 61, 6, RED);
tft.drawFastHLine(83, 62, 6, RED);
break;
case USB_WIDE:
tft.drawFastHLine(80, 61, 20, RED);
tft.drawFastHLine(80, 62, 20, RED);
break;
}
}
示例5: show_s_meter_layout
void show_s_meter_layout() {
tft.drawFastHLine (pos_x_smeter, pos_y_smeter - 1, 9 * s_w, WHITE);
tft.drawFastHLine (pos_x_smeter, pos_y_smeter + 3, 9 * s_w, WHITE);
tft.fillRect(pos_x_smeter, pos_y_smeter - 3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter + 8 * s_w, pos_y_smeter - 3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter + 2 * s_w, pos_y_smeter - 3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter + 4 * s_w, pos_y_smeter - 3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter + 6 * s_w, pos_y_smeter - 3, 2, 2, WHITE);
tft.fillRect(pos_x_smeter + 7 * s_w, pos_y_smeter - 4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter + 3 * s_w, pos_y_smeter - 4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter + 5 * s_w, pos_y_smeter - 4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter + s_w, pos_y_smeter - 4, 2, 3, WHITE);
tft.fillRect(pos_x_smeter + 9 * s_w, pos_y_smeter - 4, 2, 3, WHITE);
tft.drawFastHLine (pos_x_smeter + 9 * s_w, pos_y_smeter - 1, 3 * s_w * 2 + 2, GREEN);
tft.drawFastHLine (pos_x_smeter + 9 * s_w, pos_y_smeter + 3, 3 * s_w * 2 + 2, GREEN);
tft.fillRect(pos_x_smeter + 11 * s_w, pos_y_smeter - 4, 2, 3, GREEN);
tft.fillRect(pos_x_smeter + 13 * s_w, pos_y_smeter - 4, 2, 3, GREEN);
tft.fillRect(pos_x_smeter + 15 * s_w, pos_y_smeter - 4, 2, 3, GREEN);
tft.drawFastVLine (pos_x_smeter - 1, pos_y_smeter - 1, 5, WHITE);
tft.drawFastVLine (pos_x_smeter + 15 * s_w + 2, pos_y_smeter - 1, 5, GREEN);
tft.setFont();
tft.setCursor(pos_x_smeter - 4, pos_y_smeter - 13);
tft.setTextColor(WHITE);
tft.setTextWrap(true);
tft.print("S 1");
tft.setCursor(pos_x_smeter + 28, pos_y_smeter - 13);
tft.print("3");
tft.setCursor(pos_x_smeter + 48, pos_y_smeter - 13);
tft.print("5");
tft.setCursor(pos_x_smeter + 68, pos_y_smeter - 13);
tft.print("7");
tft.setCursor(pos_x_smeter + 88, pos_y_smeter - 13);
tft.print("9");
tft.setCursor(pos_x_smeter + 120, pos_y_smeter - 13);
tft.print("+20dB");
}
示例6: show_notch
void show_notch(int notchF, int MODE) {
// pos_centre_f is the x position of the Rx centre
// pos is the y position of the spectrum display
// notch display should be at x = pos_centre_f +- notch frequency and y = 20
// LSB:
pos_centre_f+=1; // = pos_centre_f + 1;
// delete old indicator
tft.drawFastVLine(pos_centre_f + 1 + 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastVLine(pos_centre_f -1 + 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastHLine(pos_centre_f -4 + 160/spectrum_span * oldnotchF / 1000, notchpos+notchL, 9, BLACK);
tft.drawFastHLine(pos_centre_f -3 + 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 1, 7, BLACK);
tft.drawFastHLine(pos_centre_f -2 + 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 2, 5, BLACK);
tft.drawFastHLine(pos_centre_f -1 + 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 3, 3, BLACK);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 4, 2, BLACK);
tft.drawFastVLine(pos_centre_f +1 - 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastVLine(pos_centre_f -1 - 160/spectrum_span * oldnotchF / 1000, notchpos, notchL, BLACK);
tft.drawFastHLine(pos_centre_f -4 - 160/spectrum_span * oldnotchF / 1000, notchpos+notchL, 9, BLACK);
tft.drawFastHLine(pos_centre_f -3 - 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 1, 7, BLACK);
tft.drawFastHLine(pos_centre_f -2 - 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 2, 5, BLACK);
tft.drawFastHLine(pos_centre_f -1 - 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 3, 3, BLACK);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * oldnotchF / 1000, notchpos+notchL + 4, 2, BLACK);
// Show mid screen tune position
tft.drawFastVLine(pos_centre_f - 1, 0,pos+1, RED); //WHITE);
if (notchF >= 400 || notchF <= -400) {
// draw new indicator according to mode
switch (MODE) {
case 2: //modeLSB:
tft.drawFastVLine(pos_centre_f + 1 - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f -1 - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 - 160/spectrum_span * notchF / -1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / -1000, notchpos+notchL + 4, 2, notchColour);
break;
case 1: //modeUSB:
tft.drawFastVLine(pos_centre_f +1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f -1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 + 160/spectrum_span * notchF / 1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos+notchL + 4, 2, notchColour);
break;
case 0: // modeAM:
tft.drawFastVLine(pos_centre_f + 1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 + 160/spectrum_span * notchF / 1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos+notchL + 4, 2, notchColour);
tft.drawFastVLine(pos_centre_f + 1 - 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 1 - 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 - 160/spectrum_span * notchF / 1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 - 160/spectrum_span * notchF / 1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 - 160/spectrum_span * notchF / 1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 - 160/spectrum_span * notchF / 1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / 1000, notchpos+notchL + 4, 2, notchColour);
break;
case 3: //modeDSB:
case 4: //modeStereoAM:
if (notchF <=-400) {
tft.drawFastVLine(pos_centre_f + 1 - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 1 - 160/spectrum_span * notchF / -1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 - 160/spectrum_span * notchF / -1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 - 160/spectrum_span * notchF / -1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f - 160/spectrum_span * notchF / -1000, notchpos+notchL + 4, 2, notchColour);
}
if (notchF >=400) {
tft.drawFastVLine(pos_centre_f + 1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastVLine(pos_centre_f - 1 + 160/spectrum_span * notchF / 1000, notchpos, notchL, notchColour);
tft.drawFastHLine(pos_centre_f -4 + 160/spectrum_span * notchF / 1000, notchpos+notchL, 9, notchColour);
tft.drawFastHLine(pos_centre_f -3 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 1, 7, notchColour);
tft.drawFastHLine(pos_centre_f -2 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 2, 5, notchColour);
tft.drawFastHLine(pos_centre_f -1 + 160/spectrum_span * notchF / 1000, notchpos+notchL + 3, 3, notchColour);
tft.drawFastVLine(pos_centre_f + 160/spectrum_span * notchF / 1000, notchpos+notchL + 4, 2, notchColour);
}
break;
}
}
oldnotchF = notchF;
pos_centre_f-=1; // = pos_centre_f - 1;
} // end void show_notch
示例7: show_bandwidth
void show_bandwidth (int M, long int FU, long int FL) {
tft.drawFastHLine(0,pos+1,160, BLACK); // erase old indicator
tft.drawFastHLine(0,pos+2,160, BLACK); // erase old indicator
tft.drawFastHLine(0,pos+3,160, BLACK); // erase old indicator
tft.drawFastHLine(0,pos,160, BLACK); // erase old indicator
bwhelp = FU /100;
int leU = bwhelp*16/spectrum_span;
bwhelp = FL /100;
int leL = bwhelp*16/spectrum_span;
float kHz = (FU + FL) / 1000.0;
switch (M) {
case 0: //AM
tft.fillRect(4, pos_y_frequency-3, 32, 8, BLACK); // erase old string
tft.setTextColor(GREEN);
tft.setCursor(4, pos_y_frequency-3);
tft.print("AM");
break;
case 3: //DSB
tft.fillRect(4, pos_y_frequency-3, 32, 8, BLACK); // erase old string
tft.setTextColor(GREEN);
tft.setCursor(4, pos_y_frequency-3);
tft.print("DSB");
break;
case 4: //StereoAM
tft.fillRect(4, pos_y_frequency-3, 32, 8, BLACK); // erase old string
tft.setTextColor(GREEN);
tft.setCursor(4, pos_y_frequency-3);
tft.print("SteAM");
break;
case 2: //LSB
tft.fillRect(4, pos_y_frequency-3, 32, 8, BLACK); // erase old string
tft.setTextColor(GREEN);
tft.setCursor(4, pos_y_frequency-3);
tft.print("LSB");
break;
case 1: //USB
tft.fillRect(4, pos_y_frequency-3, 32, 8, BLACK); // erase old string
tft.setTextColor(GREEN);
tft.setCursor(4, pos_y_frequency-3);
tft.print("USB");
break;
} // end switch
//print bandwidth !
tft.fillRect(4, pos_y_frequency+7, 32, 8, BLACK); // erase old string
tft.setCursor(4, pos_y_frequency+7);
sprintf(string,"%02.1fk",kHz);
tft.print(string);
tft.setTextColor(WHITE); // set text color to white for other print routines not to get confused ;-)
// draw upper sideband indicator
tft.drawFastHLine(pos_centre_f, pos+1, leU, RED);
tft.drawFastHLine(pos_centre_f, pos+2, leU, RED);
tft.drawFastHLine(pos_centre_f, pos+3, leU, RED);
tft.drawFastHLine(pos_centre_f, pos, leU, RED);
// draw lower sideband indicator
left = pos_centre_f - leL;
tft.drawFastHLine(left+1, pos+1, leL, RED);
tft.drawFastHLine(left+1, pos+2, leL, RED);
tft.drawFastHLine(left+1,pos+3, leL, RED);
tft.drawFastHLine(left+1,pos, leL, RED);
tft.fillRect(pos_centre_f + 160/spectrum_span * 5, pos, 2, 3, YELLOW); // erase old string
tft.fillRect(pos_centre_f + 160/spectrum_span * 10, pos, 2, 4, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 5, pos, 2, 3, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 10, pos, 2, 4, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 15, pos, 2, 3, YELLOW); // erase old string
tft.fillRect(pos_centre_f + 160/spectrum_span * 15, pos, 2, 3, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 20, pos, 2, 4, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 25, pos, 2, 3, YELLOW); // erase old string
tft.fillRect(pos_centre_f - 160/spectrum_span * 30, pos, 2, 4, YELLOW); // erase old string
}
示例8: show_spectrum
void show_spectrum(float line_gain, float LPFcoeff) {
static int startx=0, endx;
endx=startx+16;
int scale=3;
float avg = 0.0;
// Draw spectrum display
for (int16_t x=startx; x < endx; x+=1) {
if ((x > 1) && (x < 159))
// moving window - weighted average of 5 points of the spectrum to smooth spectrum in the frequency domain
// weights: x: 50% , x-1/x+1: 36%, x+2/x-2: 14%
avg = myFFT.output[(x)*16/10]*0.5 + myFFT.output[(x-1)*16/10]*0.18 + myFFT.output[(x-2)*16/10]*0.07 + myFFT.output[(x+1)*16/10]*0.18 + myFFT.output[(x+2)*16/10]*0.07;
else
avg = myFFT.output[(x)*16/10];
// pixelnew[x] = LPFcoeff * 2 * sqrt (abs(myFFT.output[(x)*16/10])*scale) + (1 - LPFcoeff) * pixelold[x];
// low pass filtering of the spectrum pixels to smooth/slow down spectrum in the time domain
// experimental LPF for spectrum: ynew = LPCoeff * x + (1-LPCoeff) * yprevious; here: A = 0.3 to 0.5 seems to be a good idea
pixelnew[x] = LPFcoeff * 2 * sqrt (abs(avg)*scale) + (1 - LPFcoeff) * pixelold[x];
/* for (int16_t i=0; x < 5; x+=1) {
pixelnew[x+i] = 2 * sqrt (abs(myFFT.output[(x+i)*16/10])*scale);
if (pixelnew[x+i] > pos-1) pixelnew[x+i] = pos-1;
}
*/
// int bar=2 * sqrt (abs(myFFT.output[x*16/10])*scale);
// if (bar >pos-1) bar=pos-1;
if(x != pos_centre_f) {
// common way: draw bars
// tft.drawFastVLine(x, pos-1-bar,bar, BLUE); // GREEN);
// tft.drawFastVLine(x, 0, pos-1-bar, WHITE); //BLACK);
// alternate way: draw pixels
// only plot pixel, if at a new position
if (pixelold[x] != pixelnew[x]) {
tft.drawPixel(x, pos-1-pixelold[x], BLACK); // delete old pixel
tft.drawPixel(x, pos-1-pixelnew[x], WHITE); // write new pixel
pixelold[x] = pixelnew[x]; }
/* if (pixelnew[x] > 5 * (pixelnew[x+1] + pixelnew[x-1])) {
tft.drawFastVLine(x, pos-1-pixelnew[x], pixelnew[x], BLUE);
tft.drawFastVLine(x, 0, pos-1- pixelnew[x], BLACK);
}
*/ }
}
// Calculate S units. 50uV = S9
//if (0) {
if (Smetertimer.check()==1) {
uv = myFFT.output[159]+myFFT.output[160]+myFFT.output[161]+myFFT.output[162]+myFFT.output[158]+myFFT.output[157]+myFFT.output[156]; // measure signal strength of carrier of AM Transmission at exact frequency
// low pass filtering for Smeter values
uv = 0.1 * uv + 0.9 * uvold;
if (uv == 0) dbm = -130;
else {
dbm = 20*log10(uv)-83.5-25.7-1.5*line_gain;} //dbm standardized to 15.26Hz Receiver Bandwidth
// constant 83.5dB determined empirically by measuring a carrier with a Perseus SDR
// and comparing the output of the Teensy FFT
// 25.7dB is INA163 gain in frontend
//dbm measurement on the Perseus standardized to RBW of 15.26Hz
// float vol = analogRead(15);
// vol = vol / 1023.0;
// now calculate S-value from dbm
s = 9.0 + ((dbm + 73.0) / 6.0);
if (s <0.0) s=0.0;
if ( s > 9.0)
{
dbuv = dbm + 73.0;
s = 9.0;
}
else dbuv = 0.0;
// Print S units
//s=roundf(s);
/* tft.fillRect(0,105, 50, 7,ST7735_BLACK);
tft.fillRect(0,105, 160, 7,ST7735_BLACK);
tft.setCursor(100,105);
// sprintf(string,"%04.0f FFT",uv);
// sprintf(string,"%04.0f dbm",dbm);
sprintf(string,"%02.0f",s);
tft.print(string);
tft.setCursor(0,105);
// sprintf(string,"%04.0f FFT",uv);
sprintf(string,"%04.0f dbm",dbm);
tft.print(string);
*/
tft.drawFastHLine(pos_x_smeter, pos_y_smeter, s*s_w+1, BLUE);
tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter, (9*s_w+1)-s*s_w+1, BLACK);
tft.drawFastHLine(pos_x_smeter, pos_y_smeter+1, s*s_w+1, WHITE);
tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+1, (9*s_w+1)-s*s_w+1, BLACK);
tft.drawFastHLine(pos_x_smeter, pos_y_smeter+2, s*s_w+1, BLUE);
tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+2, (9*s_w+1)-s*s_w+1, BLACK);
// tft.drawFastHLine(pos_x_smeter, pos_y_smeter+3, s*s_w+1, BLUE);
// tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+3, (9*s_w+1)-s*s_w+1, BLACK);
if(dbuv>30) dbuv=30;
//.........这里部分代码省略.........
示例9: show_Smeter
void show_Smeter(void) {
float s_sample = 0; // Raw signal strength (max per 1ms)
// Collect S-meter data
if (Smeter.available()) s_sample = Smeter.read(); // Highest sample within 1 millisecond
// Calculate S units. 50uV = S9
uv = (s_sample - 0.005) * 10000; // microvolts, roughly calibrated
if (uv < 0.1) uv = 0.1; // protect for negative uv
uv = 0.3 * uv + 0.7 * uvold; // low pass filtering for Smeter values
dbuv = 20.0 * log10(uv);
s = 1.0 + (14.0 + dbuv) / 6.0;
#ifdef DEBUG_SMETER
if (five_sec.check() == 1)
{
Serial.print("s_sample = ");
Serial.print(s_sample);
Serial.print(" uv = ");
Serial.print(uv);
Serial.print(" s =");
Serial.print(s);
Serial.print(" dbuv = ");
Serial.print(dbuv);
Serial.println("");
}
#endif
if (s < 0.0) s = 0.0;
if (s > 9.0)
{
dbuv = dbuv - 34.0;
s = 9.0;
}
else dbuv = 0;
uvold = uv;
tft.drawFastHLine(pos_x_smeter, pos_y_smeter, s * s_w + 1, YELLOW);
tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter, (9 * s_w + 1) - s * s_w + 1, BLACK);
tft.drawFastHLine(pos_x_smeter, pos_y_smeter + 1, s * s_w + 1, YELLOW);
tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter + 1, (9 * s_w + 1) - s * s_w + 1, BLACK);
tft.drawFastHLine(pos_x_smeter, pos_y_smeter + 2, s * s_w + 1, YELLOW);
tft.drawFastHLine(pos_x_smeter + s * s_w + 1, pos_y_smeter + 2, (9 * s_w + 1) - s * s_w + 1, BLACK);
// tft.drawFastHLine(pos_x_smeter, pos_y_smeter+3, s*s_w+1, BLUE);
// tft.drawFastHLine(pos_x_smeter+s*s_w+1, pos_y_smeter+3, (9*s_w+1)-s*s_w+1, BLACK);
if (dbuv > 30) dbuv = 30;
tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter, (dbuv / 5)*s_w + 1, RED);
tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK);
tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter + 1, (dbuv / 5)*s_w + 1, RED);
tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter + 1, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK);
tft.drawFastHLine(pos_x_smeter + 9 * s_w + 1, pos_y_smeter + 2, (dbuv / 5)*s_w + 1, RED);
tft.drawFastHLine(pos_x_smeter + 9 * s_w + (dbuv / 5)*s_w + 1, pos_y_smeter + 2, (6 * s_w + 1) - (dbuv / 5)*s_w, BLACK);
}