Skip to content

Instantly share code, notes, and snippets.

@varlen
Created December 12, 2016 13:42
Show Gist options
  • Save varlen/54e5e78b11208375eb2a83dbc5fd5000 to your computer and use it in GitHub Desktop.
Save varlen/54e5e78b11208375eb2a83dbc5fd5000 to your computer and use it in GitHub Desktop.
Disciplina Antenas 2016-2
int analogPin1 = 1; // 1a. entrada analógica
int analogPin2 = 2; // 2a. entrada analógica
int primeira_vez = 1;
int i = 1; // contador do while que vai calcular a média dos valores de entrada
int k1 = 0; // contador do número de picos que serão encontrados
int sinal_original_um[99];
int sinal_original_dois[99];
int time1[99];
int time2[99];
int contador_de_medidas;
float pi = 3.1415;
float valor_temporario_de_pico_sinal_um = 0;
float valor_temporario_de_pico_sinal_dois = 0;
float Media_do_sinal_um = 0;
float Media_do_sinal_dois = 0;
float Media_valdois = 0;
float soma_sinal_um = 0;
float soma_sinal_dois = 0;
float sinal_um_sem_media =0;
float tempo_primeiro_pico;
float tempo_segundo_pico;
float periodo;
float frequencia;
#include <math.h>
void setup()
{
time1[0]=272;
sinal_original_um[0]=347;
time2[0]=392;
sinal_original_dois[0]=484;
time1[1]=512;
sinal_original_um[1]=421;
time2[1]=632;
sinal_original_dois[1]=482;
time1[2]=752;
sinal_original_um[2]=499;
time2[2]=872;
sinal_original_dois[2]=483;
time1[3]=992;
sinal_original_um[3]=580;
time2[3]=1112;
sinal_original_dois[3]=485;
time1[4]=1232;
sinal_original_um[4]=657;
time2[4]=1352;
sinal_original_dois[4]=489;
time1[5]=1472;
sinal_original_um[5]=730;
time2[5]=1592;
sinal_original_dois[5]=495;
time1[6]=1712;
sinal_original_um[6]=794;
time2[6]=1832;
sinal_original_dois[6]=501;
time1[7]=1952;
sinal_original_um[7]=848;
time2[7]=2072;
sinal_original_dois[7]=510;
time1[8]=2192;
sinal_original_um[8]=887;
time2[8]=2312;
sinal_original_dois[8]=518;
time1[9]=2432;
sinal_original_um[9]=906;
time2[9]=2552;
sinal_original_dois[9]=528;
time1[10]=2672;
sinal_original_um[10]=908;
time2[10]=2792;
sinal_original_dois[10]=536;
time1[11]=2912;
sinal_original_um[11]=895;
time2[11]=3032;
sinal_original_dois[11]=545;
time1[12]=3152;
sinal_original_um[12]=864;
time2[12]=3272;
sinal_original_dois[12]=552;
time1[13]=3392;
sinal_original_um[13]=814;
time2[13]=3512;
sinal_original_dois[13]=558;
time1[14]=3632;
sinal_original_um[14]=754;
time2[14]=3752;
sinal_original_dois[14]=563;
time1[15]=3872;
sinal_original_um[15]=684;
time2[15]=3992;
sinal_original_dois[15]=566;
time1[16]=4112;
sinal_original_um[16]=607;
time2[16]=4232;
sinal_original_dois[16]=566;
time1[17]=4352;
sinal_original_um[17]=529;
time2[17]=4472;
sinal_original_dois[17]=565;
time1[18]=4592;
sinal_original_um[18]=450;
time2[18]=4712;
sinal_original_dois[18]=562;
time1[19]=4832;
sinal_original_um[19]=374;
time2[19]=4952;
sinal_original_dois[19]=558;
time1[20]=5072;
sinal_original_um[20]=305;
time2[20]=5192;
sinal_original_dois[20]=551;
time1[21]=5312;
sinal_original_um[21]=246;
time2[21]=5432;
sinal_original_dois[21]=544;
time1[22]=5552;
sinal_original_um[22]=197;
time2[22]=5672;
sinal_original_dois[22]=535;
time1[23]=5792;
sinal_original_um[23]=164;
time2[23]=5912;
sinal_original_dois[23]=527;
time1[24]=6032;
sinal_original_um[24]=148;
time2[24]=6152;
sinal_original_dois[24]=518;
time1[25]=6272;
sinal_original_um[25]=152;
time2[25]=6392;
sinal_original_dois[25]=509;
time1[26]=6512;
sinal_original_um[26]=176;
time2[26]=6632;
sinal_original_dois[26]=501;
time1[27]=6752;
sinal_original_um[27]=217;
time2[27]=6872;
sinal_original_dois[27]=494;
time1[28]=6992;
sinal_original_um[28]=271;
time2[28]=7112;
sinal_original_dois[28]=489;
time1[29]=7232;
sinal_original_um[29]=335;
time2[29]=7352;
sinal_original_dois[29]=485;
time1[30]=7472;
sinal_original_um[30]=408;
time2[30]=7592;
sinal_original_dois[30]=483;
time1[31]=7712;
sinal_original_um[31]=486;
time2[31]=7832;
sinal_original_dois[31]=483;
time1[32]=7952;
sinal_original_um[32]=566;
time2[32]=8072;
sinal_original_dois[32]=485;
time1[33]=8200;
sinal_original_um[33]=645;
time2[33]=8320;
sinal_original_dois[33]=489;
time1[34]=8440;
sinal_original_um[34]=721;
time2[34]=8560;
sinal_original_dois[34]=494;
time1[35]=8680;
sinal_original_um[35]=788;
time2[35]=8800;
sinal_original_dois[35]=501;
time1[36]=8920;
sinal_original_um[36]=843;
time2[36]=9040;
sinal_original_dois[36]=509;
time1[37]=9160;
sinal_original_um[37]=884;
time2[37]=9280;
sinal_original_dois[37]=518;
time1[38]=9400;
sinal_original_um[38]=906;
time2[38]=9520;
sinal_original_dois[38]=527;
time1[39]=9640;
sinal_original_um[39]=911;
time2[39]=9760;
sinal_original_dois[39]=536;
time1[40]=9880;
sinal_original_um[40]=900;
time2[40]=10000;
sinal_original_dois[40]=544;
time1[41]=10120;
sinal_original_um[41]=870;
time2[41]=10248;
sinal_original_dois[41]=552;
time1[42]=10368;
sinal_original_um[42]=821;
time2[42]=10488;
sinal_original_dois[42]=558;
time1[43]=10608;
sinal_original_um[43]=761;
time2[43]=10728;
sinal_original_dois[43]=563;
time1[44]=10848;
sinal_original_um[44]=692;
time2[44]=10968;
sinal_original_dois[44]=566;
time1[45]=11088;
sinal_original_um[45]=616;
time2[45]=11208;
sinal_original_dois[45]=567;
time1[46]=11328;
sinal_original_um[46]=537;
time2[46]=11448;
sinal_original_dois[46]=566;
time1[47]=11568;
sinal_original_um[47]=458;
time2[47]=11688;
sinal_original_dois[47]=563;
time1[48]=11808;
sinal_original_um[48]=382;
time2[48]=11928;
sinal_original_dois[48]=559;
time1[49]=12048;
sinal_original_um[49]=312;
time2[49]=12168;
sinal_original_dois[49]=553;
time1[50]=12296;
sinal_original_um[50]=251;
time2[50]=12416;
sinal_original_dois[50]=545;
time1[51]=12536;
sinal_original_um[51]=200;
time2[51]=12656;
sinal_original_dois[51]=537;
time1[52]=12776;
sinal_original_um[52]=165;
time2[52]=12896;
sinal_original_dois[52]=527;
time1[53]=13016;
sinal_original_um[53]=148;
time2[53]=13136;
sinal_original_dois[53]=518;
time1[54]=13256;
sinal_original_um[54]=151;
time2[54]=13376;
sinal_original_dois[54]=509;
time1[55]=13496;
sinal_original_um[55]=173;
time2[55]=13616;
sinal_original_dois[55]=501;
time1[56]=13736;
sinal_original_um[56]=213;
time2[56]=13856;
sinal_original_dois[56]=494;
time1[57]=13976;
sinal_original_um[57]=266;
time2[57]=14096;
sinal_original_dois[57]=489;
time1[58]=14216;
sinal_original_um[58]=330;
time2[58]=14344;
sinal_original_dois[58]=485;
time1[59]=14464;
sinal_original_um[59]=405;
time2[59]=14584;
sinal_original_dois[59]=482;
time1[60]=14704;
sinal_original_um[60]=483;
time2[60]=14824;
sinal_original_dois[60]=483;
time1[61]=14944;
sinal_original_um[61]=563;
time2[61]=15064;
sinal_original_dois[61]=484;
time1[62]=15184;
sinal_original_um[62]=641;
time2[62]=15304;
sinal_original_dois[62]=488;
time1[63]=15424;
sinal_original_um[63]=715;
time2[63]=15544;
sinal_original_dois[63]=493;
time1[64]=15664;
sinal_original_um[64]=782;
time2[64]=15784;
sinal_original_dois[64]=500;
time1[65]=15904;
sinal_original_um[65]=838;
time2[65]=16024;
sinal_original_dois[65]=508;
time1[66]=16144;
sinal_original_um[66]=881;
time2[66]=16264;
sinal_original_dois[66]=517;
time1[67]=16392;
sinal_original_um[67]=904;
time2[67]=16504;
sinal_original_dois[67]=526;
time1[68]=16624;
sinal_original_um[68]=910;
time2[68]=16744;
sinal_original_dois[68]=535;
time1[69]=16864;
sinal_original_um[69]=900;
time2[69]=16984;
sinal_original_dois[69]=543;
time1[70]=17104;
sinal_original_um[70]=872;
time2[70]=17224;
sinal_original_dois[70]=551;
time1[71]=17344;
sinal_original_um[71]=826;
time2[71]=17464;
sinal_original_dois[71]=557;
time1[72]=17584;
sinal_original_um[72]=768;
time2[72]=17704;
sinal_original_dois[72]=563;
time1[73]=17824;
sinal_original_um[73]=700;
time2[73]=17944;
sinal_original_dois[73]=565;
time1[74]=18064;
sinal_original_um[74]=624;
time2[74]=18184;
sinal_original_dois[74]=566;
time1[75]=18304;
sinal_original_um[75]=546;
time2[75]=18424;
sinal_original_dois[75]=566;
time1[76]=18552;
sinal_original_um[76]=464;
time2[76]=18672;
sinal_original_dois[76]=563;
time1[77]=18792;
sinal_original_um[77]=387;
time2[77]=18912;
sinal_original_dois[77]=559;
time1[78]=19032;
sinal_original_um[78]=317;
time2[78]=19152;
sinal_original_dois[78]=553;
time1[79]=19272;
sinal_original_um[79]=255;
time2[79]=19392;
sinal_original_dois[79]=545;
time1[80]=19512;
sinal_original_um[80]=205;
time2[80]=19632;
sinal_original_dois[80]=537;
time1[81]=19752;
sinal_original_um[81]=168;
time2[81]=19872;
sinal_original_dois[81]=528;
time1[82]=19992;
sinal_original_um[82]=149;
time2[82]=20112;
sinal_original_dois[82]=519;
time1[83]=20232;
sinal_original_um[83]=150;
time2[83]=20352;
sinal_original_dois[83]=510;
time1[84]=20472;
sinal_original_um[84]=170;
time2[84]=20600;
sinal_original_dois[84]=502;
time1[85]=20720;
sinal_original_um[85]=210;
time2[85]=20840;
sinal_original_dois[85]=495;
time1[86]=20960;
sinal_original_um[86]=262;
time2[86]=21080;
sinal_original_dois[86]=489;
time1[87]=21200;
sinal_original_um[87]=325;
time2[87]=21320;
sinal_original_dois[87]=485;
time1[88]=21440;
sinal_original_um[88]=397;
time2[88]=21560;
sinal_original_dois[88]=483;
time1[89]=21680;
sinal_original_um[89]=474;
time2[89]=21800;
sinal_original_dois[89]=483;
time1[90]=21920;
sinal_original_um[90]=555;
time2[90]=22040;
sinal_original_dois[90]=484;
time1[91]=22160;
sinal_original_um[91]=633;
time2[91]=22280;
sinal_original_dois[91]=487;
time1[92]=22400;
sinal_original_um[92]=708;
time2[92]=22520;
sinal_original_dois[92]=493;
time1[93]=22648;
sinal_original_um[93]=778;
time2[93]=22768;
sinal_original_dois[93]=500;
time1[94]=22888;
sinal_original_um[94]=835;
time2[94]=23008;
sinal_original_dois[94]=508;
time1[95]=23128;
sinal_original_um[95]=879;
time2[95]=23248;
sinal_original_dois[95]=516;
time1[96]=23368;
sinal_original_um[96]=903;
time2[96]=23488;
sinal_original_dois[96]=525;
time1[97]=23608;
sinal_original_um[97]=911;
time2[97]=23728;
sinal_original_dois[97]=535;
time1[98]=23848;
sinal_original_um[98]=903;
time2[98]=23968;
sinal_original_dois[98]=543;
Serial.begin(9600); // setup serial
}
void loop()
{
// Colhe 100 amostras de cada uma das entradas
if (primeira_vez == 1) // verifica se é a primeira vez que está passando por aqui
{
// calcula valor de pico e valor médio de cada sinal
// calcula período, frequência do sinal um e diferença de
// tempos entre os dois sinais
i=0;
int derivada_um = 0;
int derivada_dois = 0;
int contador_de_picos_um =0;
int contador_de_picos_dois =0;
int valor_de_pico_sinal_um [10];
int valor_de_pico_sinal_dois [10];
int tempo_do_pico_um [10];
int tempo_do_pico_dois [10];
int Diferenca_de_tempos;
int Diferenca_relativa_de_tempos;
int Direcao_de_chegada;
while (i<=98) {
if (sinal_original_um[i] >= valor_temporario_de_pico_sinal_um) {
valor_temporario_de_pico_sinal_um = sinal_original_um[i];
derivada_um = 1;
}
else{
if (derivada_um == 1){
contador_de_picos_um = contador_de_picos_um +1;
valor_de_pico_sinal_um [contador_de_picos_um] = sinal_original_um[i-1];
tempo_do_pico_um [contador_de_picos_um] = time1[i-1];
derivada_um = -1;
}
}
if (sinal_original_dois[i] >= valor_temporario_de_pico_sinal_dois) {
valor_temporario_de_pico_sinal_dois = sinal_original_dois[i];
derivada_dois = 1;
}
else{
if (derivada_dois == 1){
contador_de_picos_dois = contador_de_picos_dois +1;
valor_de_pico_sinal_dois [contador_de_picos_dois] = sinal_original_dois[i-1];
tempo_do_pico_dois [contador_de_picos_dois] = time2[i-1];
derivada_dois = -1;
}
}
soma_sinal_um = soma_sinal_um + sinal_original_um[i]; // soma todos os valores de todas as amostras do sinal um
soma_sinal_dois = soma_sinal_dois + sinal_original_dois[i]; // soma todos os valores de todas as amostras do sinal dois
i++;
}
periodo = tempo_do_pico_um [2] - tempo_do_pico_um [1];
Serial.print ("periodo = ");
Serial.println (periodo);
frequencia = 1000000.0/periodo; // lembrar que o período está em microsegundos
Serial.print ("frequencia = ");
Serial.println (frequencia);
Diferenca_de_tempos = tempo_do_pico_dois [1] - tempo_do_pico_um [1];
Diferenca_relativa_de_tempos = Diferenca_de_tempos / periodo;
Serial.print ("Diferenca relativa de tempos = ");
Serial.println (Diferenca_relativa_de_tempos);
// Supondo que a distância entre os microfones equivalha a lambda/2 ==> T/2
// que a diferença de tempos haja sido causada apenas pela diferença de percursos
// tomando a reta que contem os microfones como referência de ângulos
Direcao_de_chegada = acos(2*Diferenca_relativa_de_tempos);
Serial.print ("Direcao de chegada do sinal = ");
Serial.print(180*Direcao_de_chegada/pi);
Serial.println (" graus");
//Media_do_sinal_um = soma_sinal_um/100;
//Media_do_sinal_dois = soma_sinal_dois/100;
//Serial.print ("valor de pico do sinal um = ");
//Serial.println (valor_de_pico_sinal_um);
//Serial.print ("Media do sinal um = ");
//Serial.println (Media_do_sinal_um);
//Serial.print ("Amplitude do sinal um = ");
//Serial.println (valor_de_pico_sinal_um - Media_do_sinal_um);
//Serial.println (" ");
//Serial.print ("valor de pico do sinal dois = ");
//Serial.println (valor_de_pico_sinal_dois);
//Serial.print ("Media do sinal dois = ");
//Serial.println (Media_do_sinal_dois);
//Serial.print ("Amplitude do sinal dois = ");
//Serial.println (valor_de_pico_sinal_dois - Media_do_sinal_dois);
primeira_vez = 0; // avisa que já passou pela amostragem
}
}
#!/bin/bash
CONTADOR=0
while read line
do
dados1=`echo $line | sed 's/ / /g' | tr -s " " | cut -d" " -f2`
tempo1=`echo $line | sed 's/ / /g' | tr -s " " | cut -d" " -f3`
dados2=`echo $line | sed 's/ / /g' | tr -s " " | cut -d" " -f4`
tempo2=`echo $line | sed 's/ / /g' | sed 's/
//g' | tr -s " " | cut -d" " -f5`
echo "time1[$CONTADOR]=${tempo1%%\.*};"
echo "sinal_original_um[$CONTADOR]=$dados1;"
echo "time2[$CONTADOR]=${tempo2%%\.*};"
echo "sinal_original_dois[$CONTADOR]=$dados2;"
CONTADOR=$((CONTADOR+1))
done < ./Dados\ para\ 140Hz.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment