#include #include // Arduino LCD library #include //modificações para o novo sweep #define cs 10 #define dc 8 #define rst 9 #define W_CLK 7 #define FQ_UD 6 #define DATA 5 #define RESET 4 #define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); } volatile unsigned long frequency = 1000000; String ero; String xero = ""; long xeroxero = 0; volatile unsigned long freqini = 6800000; long freqfinal = 7500000; float freqvelha = 0; long passo = 1000; long divi = 10000; long f1; long f2; String sfreqini = "" ; String sfreqfinal = "" ; String spasso = ""; String sf1 = ""; String sf2 = ""; char fini [15]; char f1s [15]; char f2s [15]; char fnal [15]; char fpas [8]; String oqeh = "1"; String hz = "kHz"; int freq; int RECV_PIN = 12; IRrecv irrecv(RECV_PIN); decode_results lido; float valorlido; float prglido; int num = 0; int x0 = 0; int x1 = 0; int y0 = 0; int y1 = 0; float ylido = 0; int npasso = 0; double mult1 = 1; int gs = 0; long frmax = 42000000; long frmin = 10; float Vinc, Vref, SWR, V1, V2; String branco = " "; TFT TFTscreen = TFT(cs, dc, rst); int incr = 1; int incrvelho = 1; int alt; //altura do diplay automatica int larg; // largura do display automatica void setup() { TFTscreen.begin(); TFTscreen.background(0, 0, 0); alt = TFTscreen.height(); larg = TFTscreen.width(); Serial.begin(9600); Serial.println("CLEARDATA"); Serial.println("LABEL,Frequencia,Voltagem"); pinMode(FQ_UD, OUTPUT); pinMode(W_CLK, OUTPUT); pinMode(DATA, OUTPUT); pinMode(RESET, OUTPUT); pulseHigh(FQ_UD); irrecv.enableIRIn(); // Inicializa o receptor IR } void loop() { if (oqeh == "1") { TFTscreen.background(0, 0, 0); TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(2); TFTscreen.text("MENU", 0, 0); TFTscreen.setTextSize(1); TFTscreen.text("Selecione o numero", 50, 5); TFTscreen.stroke(0, 255, 0); TFTscreen.text("1. GERADOR DE SINAIS", 0, 25); TFTscreen.text("2. GERADOR DE AUDIO", 0, 45); TFTscreen.text("3. ANALISADOR DE ANTENAS", 0, 65); TFTscreen.text("4. ANALISADOR DE FILTROS", 0, 85); TFTscreen.text("5. ANAL.FILTROS DE AUDIO", 0, 105); gs = 0; oqeh = " "; } if (irrecv.decode(&lido)) { prglido = (lido.value); if (prglido == 0xED) { oqeh = "1"; TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.stroke(0, 255, 0); TFTscreen.text("GERADOR ", 0, 25); TFTscreen.text(" DE SINAIS ", 0, 60); irrecv.resume(); delay(1000); freqini = 7000000; gersin(); sendFrequency(0); } if (prglido == 0x40ED) { oqeh = "2"; TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.stroke(0, 255, 0); TFTscreen.text("GERADOR ", 0, 25); TFTscreen.text(" DE AUDIO ", 0, 60); //irrecv.resume(); delay(1000); //gs=0; freqini = 1000; gersin(); sendFrequency(0); oqeh = "1"; } if (prglido == 0x20ED) { oqeh = "3"; TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.stroke(0, 255, 0); TFTscreen.text(" ANALISADOR ", 0, 25); TFTscreen.text(" DE ANTENAS ", 0, 60); irrecv.resume(); delay(1000); divi = 100000; anafiaud(3); sendFrequency(0); oqeh = "1"; } if (prglido == 0x60ED) { oqeh = "4"; TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.stroke(0, 255, 0); TFTscreen.text("ANALISADOR ", 0, 25); TFTscreen.text(" DE FILTROS", 0, 60); irrecv.resume(); delay(1000); gs = 0; divi = 100000; anafiaud(2); sendFrequency(0); oqeh = "1"; } if (prglido == 0x10ED) { oqeh = "5"; TFTscreen.background(0, 0, 0); TFTscreen.setTextSize(2); TFTscreen.stroke(0, 255, 0); TFTscreen.text("ANALISADOR ", 0, 25); TFTscreen.text(" DE FILTROS ", 0, 60); TFTscreen.text(" DE AUDUIO", 0, 90); irrecv.resume(); delay(1000); divi = 100; anafiaud(1); sendFrequency(0); oqeh = "1"; } irrecv.resume(); } } void tfr_byte(byte data) { for (int i = 0; i < 8; i++, data >>= 1) { digitalWrite(DATA, data & 0x01); pulseHigh(W_CLK); } } // Send frequency and command word to AD9850 void sendFrequency(double frequency) { int32_t freq = frequency * 4294967295 / (125000000 ); // note 125 MHz clock on 9850 for (int b = 0; b < 4; b++, freq >>= 8) { tfr_byte(freq & 0xFF); } tfr_byte(0); pulseHigh(FQ_UD); } void gersin() { TFTscreen.background(0, 0, 0); TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(2); TFTscreen.text(" FREQUENCIA" , 0 , 10); TFTscreen.stroke(255, 0, 0); TFTscreen.setTextSize(1); TFTscreen.text(" MHz kHz Hz" , 0 , 65); while (gs == 0) { if ((freqini != freqvelha) || (incr != incrvelho)) { sendFrequency(freqini); TFTscreen.setTextSize(2); format(freqini); freqvelha = freqini; incrvelho = incr; delay(50); } if (irrecv.decode(&lido)) { float result = (lido.value); if (result) { delay(50); if (result == 0x57ED) { if (incr <= 6) incr ++ ; } if (result == 0x17ED) { if (incr >= 1) (incr -- ); } double valor = 0; switch (incr) { case 0: valor = 0; break; case 1: valor = 10; break; case 2: valor = 100; break; case 3: valor = 1000; break; case 4: valor = 10000; break; case 5: valor = 100000; break; case 6: valor = 1000000; break; case 7: valor = 10000000; break; } if (result == 0x27ED) { if (freqini <= 50000000) { freqini = (freqini + valor); } } if (freqini > 50000000) { (freqini = 50000000); } if (result == 0x67ED) { if (freqini > valor) { freqini = (freqini - valor); } else { freqini = 0; } } if ((freqini != freqvelha) || (incr != incrvelho)) { TFTscreen.fill(0, 0, 0); TFTscreen.stroke(0, 0, 0); TFTscreen.rect(0, 43, 160, 20); } } Serial.println(freqini); Serial.println(incr); Serial.println(pow(10, incr)); if (result == 0x1BED) { //tecla JUMP gs = 1; } delay(50); irrecv.resume(); } } } void anafiaud(int rere) { TFTscreen.background(0, 0, 0); if (rere == 1) { freqini = 100; freqfinal = 10000; passo = 50; hz = "Hz"; } if ((rere == 2) || (rere == 3)) { freqini = 1000000; freqfinal = 30000000; passo = 50000; hz = "kHz"; } while (gs == 0) { String sfreqfinal = String(freqfinal); String sfreqini = String(freqini); String spasso = String(passo); String sf1 = String(f1); String sf2 = String(f2); if (oqeh != "PARE") { TFTscreen.stroke(0, 255, 0); TFTscreen.setTextSize(1); TFTscreen.text("FREQUENCIA INICIAL :", 0, 0); TFTscreen.stroke(0, 255, 255); TFTscreen.setTextSize(2); //sfreqini=sfreqini+ " kHz"; sfreqini.toCharArray(fini, 15); TFTscreen.text(fini , 0, 11); TFTscreen.stroke(0, 255, 0); TFTscreen.setTextSize(1); TFTscreen.text("FREQUENCIA FINAL :", 0, 32); TFTscreen.stroke(0, 255, 255); TFTscreen.setTextSize(2); sfreqfinal.toCharArray(fnal, 15); TFTscreen.text(fnal , 0, 43); TFTscreen.stroke(0, 255, 0); TFTscreen.setTextSize(1); TFTscreen.text("PASSO :", 0, 65); TFTscreen.stroke(0, 255, 255); TFTscreen.setTextSize(2); spasso.toCharArray(fpas, 15); TFTscreen.text(fpas , 0, 76); TFTscreen.setTextSize(1); TFTscreen.stroke(0, 255, 0); TFTscreen.text("MARCA 1", 0, 98); TFTscreen.stroke(0, 255, 255); sf1.toCharArray(f1s, 15); TFTscreen.text(f1s, 50, 98); TFTscreen.stroke(0, 255, 0); TFTscreen.text("MARCA 2", 0, 112); TFTscreen.stroke(0, 255, 255); sf2.toCharArray(f2s, 15); TFTscreen.text(f2s, 50, 112); } if (irrecv.decode(&lido)) { valorlido = (lido.value); if (valorlido == 0xEED) { oqeh = " "; TFTscreen.background(0, 0, 0); } if (valorlido == 0x490) { oqeh = "F1"; num = 0; numerico(); oqeh = " "; } if (valorlido == 0x4ED) { oqeh = "F2"; num = 0; numerico(); oqeh = " "; } if (valorlido == 0x57ED) { oqeh = "inicio"; num = 0; numerico(); oqeh = " "; } if (valorlido == 0x17ED) { oqeh = "fim"; num = 0; numerico(); oqeh = " "; } if (valorlido == 0x27ED) { oqeh = "passo"; num = 0; numerico(); oqeh = " "; TFTscreen.background(0, 0, 0); } if (valorlido == 0x37ED) { frequency = freqini; TFTscreen.background(0, 0, 0); npasso = 0; x0 = 0; y0 = 0; while (frequency <= freqfinal) { oqeh = "PARE"; TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(1); String sfreqfinal = String(frequency); sfreqfinal.toCharArray(fnal, 15); TFTscreen.text(fnal , 0, 0); sendFrequency(frequency); TFTscreen.stroke(128, 128, 128); TFTscreen.line (0, 0, 0, alt); TFTscreen.line (31, 0, 31, alt); TFTscreen.line (63, 0, 63, alt); TFTscreen.line (95, 0, 95, alt); TFTscreen.line (127, 0, 127, alt); TFTscreen.line (159, 0, 159, alt); TFTscreen.line (0, alt - 1, larg, alt - 1); TFTscreen.line (0, alt - 24, larg, alt - 24); TFTscreen.line (0, alt - 48, larg, alt - 48); TFTscreen.line (0, alt - 72, larg, alt - 72); TFTscreen.line (0, alt - 96, larg, alt - 96); TFTscreen.line (0, alt - 128, larg, alt - 128); TFTscreen.stroke(0, 255, 0); if ((rere == 1) || (rere == 2)) { y1 = map(mult1 * ylido, 0, 1023, 1, alt); } if ((rere == 3)) { y1 = map(ylido, 0, 50, 1, alt); if (y1 > alt) { (y1 = alt); } TFTscreen.stroke(0, 255, 0); if (y1 < 39) { TFTscreen.stroke(0, 255, 255); } } int maxpasso = ((freqfinal - freqini) / passo); npasso++; x1 = map(npasso, 1, maxpasso, 1, 160); TFTscreen.line (x0, alt - y0, x1, alt - y1); x0 = x1; y0 = y1; if (x0 == 31) { int xlabel = ((freqini + ((freqfinal - freqini) / 5)) / divi); String(xlabel).toCharArray(fpas, 8); TFTscreen.text(fpas , 20, alt - 8); } if (x0 == 63) { int xlabel = ((freqini + (2 * (freqfinal - freqini) / 5)) / divi); //int xlabel = ((divi)); String(xlabel).toCharArray(fpas, 8); TFTscreen.text(fpas , 52, alt - 8); } if (x0 == 95) { int xlabel = ((freqini + (3 * (freqfinal - freqini) / 5)) / divi); // int xlabel = ((divi)); String(xlabel).toCharArray(fpas, 8); TFTscreen.text(fpas , 84, alt - 8); } if (x0 == 127) { int xlabel = ((freqini + (4 * (freqfinal - freqini) / 5)) / divi); //int xlabel = ((divi)); String(xlabel).toCharArray(fpas, 8); TFTscreen.text(fpas , 116, alt - 8); } TFTscreen.text(fpas , 146, alt - 8); // } if (frequency == f1) { TFTscreen.stroke(0, 0, 255); TFTscreen.line (x1, 0, x1, alt); } if (frequency == f2) { TFTscreen.stroke(0, 0, 255); TFTscreen.line (x1, 0, x1, alt); } delay(5); if ((rere == 1) || (rere == 2)) { mult1 = 1; V1 = (analogRead(2)); ylido = V1; V1 = (V1 * 5.0) / 1024.0; V2 = analogRead(3); if (rere == 1) { ylido = V2; } V2 = (V2 * 5.0) / 1024.0; Serial.print("DATA, , , ,"); Serial.print(frequency); Serial.print(","); Serial.print(V1); Serial.print(","); Serial.println(""); } if (rere == 3) { Vinc = analogRead(4); Vinc = abs(Vinc); Vref = analogRead(5); if (Vref >= Vinc) { Vref = (Vinc - 0.01); } SWR = (Vinc + Vref) / (Vinc - Vref); if (SWR < 1) { SWR = 4 ; } ylido = 10 * SWR; mult1 = 1; Serial.print("DATA, , , ,"); Serial.print(frequency); Serial.print(","); Serial.print(Vinc); Serial.print(","); Serial.print(Vref); Serial.print(","); Serial.println(SWR); Serial.println(""); } TFTscreen.stroke(0, 0, 0); TFTscreen.text(fnal , 0, 0); frequency = (frequency + passo); } } if (valorlido == 0x1BED) { //tecla JUMP gs = 1; oqeh = "1"; } irrecv.resume(); } } } void numerico() { TFTscreen.background(0, 0, 0); while (num == 0) { if (irrecv.decode(&lido)) { valorlido = (lido.value); if (valorlido == 0xED) { ero = "1"; xero = xero + ero; delay (500); } if (valorlido == 0x40ED) { ero = "2"; xero = xero + ero; delay (500); } if (valorlido == 0x20ED) { ero = "3"; xero = xero + ero; delay (500); } if (valorlido == 0x60ED) { ero = "4"; xero = xero + ero; delay (500); } if (valorlido == 0x10ED) { ero = "5"; xero = xero + ero; delay (500); } if (valorlido == 0x50ED) { ero = "6"; xero = xero + ero; delay (500); } if (valorlido == 0x30ED) { ero = "7"; xero = xero + ero; delay (500); } if (valorlido == 0x70ED) { ero = "8"; xero = xero + ero; delay (500); } if (valorlido == 0x8ED) { ero = "9"; xero = xero + ero; delay (500); } if (valorlido == 0x48ED) { ero = "0"; xero = xero + ero; delay (500); } TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("FREQUENCIA ", 0, 0); oqeh.toCharArray(fini, 15); TFTscreen.text(fini , 5, 22); // TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.text(" EM ", 0, 44); if (oqeh == "passo") { String pass = "Hz"; pass.toCharArray(fini, 15); TFTscreen.text(fini, 75, 44); } else { hz.toCharArray(fini, 15); TFTscreen.text(fini, 75, 44); } TFTscreen.stroke(0, 255, 0); //verde xero.toCharArray(fnal, 25); TFTscreen.text(fnal , 0, 70); if (valorlido == 0xEED) { if (hz == "kHz") { xero = (xero + "000"); } xeroxero = xero.toInt(); if (hz == "kHz") { if (xeroxero > 50000001) { (xeroxero = 50000000); } if (xeroxero < 10) { (xeroxero = 10); } } if (oqeh == "passo") { passo = xeroxero; if (hz == "kHz") { passo = (xeroxero / 1000); if (passo > 50001) { (passo = 50000); } if (passo < 1) { (passo = 1); } } TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("PASSO EM Hz", 0, 0); TFTscreen.stroke(0, 255, 0); //verde String spasso = String(passo); spasso.toCharArray(fpas, 15); TFTscreen.text(fpas , 0, 20); delay (3000); } if (oqeh == "F1") { f1 = xeroxero; TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("FREQUENCIA", 0, 0); TFTscreen.text("MARCA 1", 0, 22); TFTscreen.stroke(0, 255, 0); //verde String sf1 = String(f1); sf1.toCharArray(fini, 15); TFTscreen.text(fini , 0, 48); delay (3000); } if (oqeh == "F2") { f2 = xeroxero; TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("FREQUENCIA", 0, 0); TFTscreen.text("MARCA 2", 0, 22); TFTscreen.stroke(0, 255, 0); //verde String sf2 = String(f2); sf2.toCharArray(fini, 15); TFTscreen.text(fini , 0, 48); delay (3000); } if (oqeh == "inicio") { freqini = xeroxero; TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("FREQUENCIA", 0, 0); TFTscreen.text("INICIAL Hz ", 0, 22); TFTscreen.stroke(0, 255, 0); //verde String sfreqini = String(freqini); sfreqini.toCharArray(fini, 15); TFTscreen.text(fini , 0, 48); delay (3000); } if (oqeh == "fim") { freqfinal = xeroxero; TFTscreen.background(0, 0, 0); TFTscreen.stroke(0, 255, 255);//azul claro TFTscreen.setTextSize(2); TFTscreen.text("FREQUENCIA", 0, 0); TFTscreen.text("FINAL Hz ", 0, 22); TFTscreen.stroke(0, 255, 0); //verde String sfreqfinal = String(freqfinal); sfreqfinal.toCharArray(fnal, 15); TFTscreen.text(fnal , 0, 48); delay (3000); } xero = ""; ero = ""; xeroxero = 0; num = 1; TFTscreen.background(0, 0, 0); } irrecv.resume(); } } } void format(unsigned long value) { unsigned long j = 10000000; for (int i = 0; i <= 7; i++) { int digit = (value / j) % 10; incr == (7 - i) ? TFTscreen.stroke(0, 255, 255) : TFTscreen.stroke(0, 255, 0); String sfreqini = String(digit); sfreqini.toCharArray(fnal, 15); TFTscreen.text(fnal , 17 * i + 10, 43); if ( (i == 4) || (i == 1)) { TFTscreen.stroke(255, 255, 0); TFTscreen.text("." , (17 * i + 17), 43); } j /= 10; } delay(30); }