AJUDA!!! CALCULO DE HARMONICAS

Olá!

Estou tentando escrever um código para calcular as contribuições harmônicas em um sinal, porém, estou tendo alguns erros.

Alguém poderia me ajudar?

Desde já agradeço.

ESTE É O CÓDIGO

#include <TimerOne.h>

//Constantes
#define pinoserial A0 //pino que le os valores da entrada serial
#define numeroamostras 148 //numero de amostras em 1 período
#define harmonica 11 //numero de harmonicas desejadas
#define frequencia 60 //frequencia da onda fundamental
#define frequenciaamostra 8880 //frequencia de amostragem
#define tempoamostra (1 / frequenciaamostra) //tempo entre cada amostra em segundos

//Variaveis
float vetoramostra [numeroamostras]; //tamanho do vetor que ira armazenar as amostras
float angulo;
float vetorreal[harmonica + 1]; //vetor que armazena os valores reais da harmonica
float vetorimaginario[harmonica + 1]; //vetor que armazena os valores imaginarios da harmonica
float vetorharmonica [harmonica + 1];
float valorRMS;
float valorRMSfinal;
float rms1harmonica;
float harmonicatotal;
float ajuste;
float coleta;

void setup() {

Timer1.initialize(23700);
Timer1.attachInterrupt(teste);
Serial.begin (9600); //Inicia a comunicaco Serial
ajuste = 1; //calibração
}

void teste(){

//zerando variaveis
int i = 0;
valorRMS = 0;
valorRMSfinal = 0;
rms1harmonica = 0;
harmonicatotal = 0;
memset(&vetorreal, 0, sizeof(vetorreal)); //zera todos os valores do array
memset(&vetorimaginario, 0, sizeof(vetorimaginario)); //zera todos os valores do array
memset(&vetorharmonica, 0, sizeof(vetorharmonica)); //zera todos os valores do array

//Coleta de amostras
if(i < numeroamostras) { //loop para ir passando as “gavetas” do vetor e armazenando os valores ate completa-lo
coleta = analogRead (pinoserial);
vetoramostra = map (coleta, 0, 1023, -30, 30); //guarda no vetoramostra os valores lidos no pino serial, em decimais

  • i++;*
  • }*

}

void loop() { //Parte do programa que ira ficar repetindo

//INICIO DO CALCULO DAS HARMONICAS

  • for (int i = 0; i < harmonica; i++) { //loor para ir passando as gavetas do vetor que armazenará os valores das harmonicas*

  • //Calculo do angulo*
    _ angulo = harmonica * (2 * PI * frequencia) * i * tempoamostra; //calculo do angulo de cada harmonica_

  • //Calcula a contribuicao harmonica*

  • for (int j = 0; j < numeroamostras - 1; j++) { //loop para ir passando os valores armazenados no vetoramostra*
    vetorreal = vetorreal + vetoramostra[j] * cos(angulo); //calcula parte real da harmonica, salva no vetor, soma o valor calculado anteriormente, com o novo calculado até acabar o loop
    vetorimaginario = vetorimaginario + vetoramostra [j] * sin (angulo); //calcula parte imaginaria da harmonica, salva no vetor, soma o valor calculado anteriormente, com o novo calculado até acabar o loop

* // VALOR RMS 1*
* if (i == 0) { // aproveitamento do primeiro loop para calcular o valor RMS*
_ valorRMS = valorRMS + pow (vetoramostra , 2);
* }
}
//Calcula do modulo das harmonicas*

* if (i == 0) {
vetorharmonica [0] = (1 / numeroamostras) * sqrt ((pow (vetorreal , 2)) + (pow (vetorimaginario , 2))); //calculo do valor CC
}
else*

* {
vetorharmonica = 2 * (1 / numeroamostras) * sqrt ((pow (vetorreal , 2)) + (pow (vetorimaginario , 2))); //calculo do modulo das harmonicas
}
}*_

//Conclusao do calculo do valor RMS
* valorRMSfinal = sqrt (valorRMS / numeroamostras);*
* //Calculo de THD*
* rms1harmonica = (vetorharmonica[1] / (sqrt(2)));*
* harmonicatotal = sqrt (pow (valorRMSfinal, 2) / (pow(rms1harmonica, 2) - 1));*
* Serial.print(harmonicatotal);*
}

Sem especificares quais são os problemas, ninguém te vai ajudar.