Hoje decidi melhorar e aprimorar um pouco a aplicação que efectuava o tratamento dos dados recolhidos  guardados no ficheiro txt, de modo a tornar a aplicação um pouco mais complexa e com mais funcionalidades:

O código criado é o seguinte:

#include <stdio .h>
#include <stdlib .h>
 
#define N 100
 
float temperatura[N];
int num_linhas = 0, i;
 
void lerficheiro()
{
    FILE *entrada;
 
    entrada=fopen("log.txt","r");
 
    if(entrada==NULL)
    {
        printf("Erro na abertura do ficheiro de entrada\n");
        system("pause");
    }
    else
    {
        while(fscanf(entrada, "Temperatura =    %f\n", &amp; temperatura[i]) != EOF)
        {
            printf("Temperatura =   %f \n", temperatura[i]);
            num_linhas = num_linhas + 1;
 
            i++;
        }
 
        printf("\n\n");
        //printf("Numero de Linhas = %d\n", num_linhas);
    }
}
 
int main()
{
    int escolha;
 
    printf("\t\t\t\t***MENU***");
    printf("\n\n");
    printf("1 - Ler Ficheiro de Dados:\n");
    printf("2 - Calcular a Média das Temperaturas:\n");
    printf("3 - Verificar Temperatura Maxima:\n");
    printf("4 - Verificar Temperatura Minima:\n");
    printf("5 - SAIR\n");
    printf("\n");
    printf("Opcao:");
    scanf("%d", &amp;escolha);
 
    switch(escolha)
    {
        case 1:
        {
            printf("\n\n1- Escolheu Ler o Ficheiro de Dados:\n\n");
 
            lerficheiro();
 
            break;
 
        }
 
        case 2:
        {
            printf("\n\n2 - Escolheu Calcular a Media das Temperaturas:\n\n");
 
            lerficheiro();
 
            float soma_temp = 0, temp_media = 0;
            int j;
 
            for(j = 0; j < num_linhas; j++)
            {
                soma_temp = soma_temp + temperatura[j];
                temp_media = soma_temp / num_linhas;
            }
 
            printf("Media = %f", temp_media);
 
            break;
        }
 
        case 3:
        {
            float temp_max = 0;
            int j;
 
            lerficheiro();
 
            printf("\n\n3 - Verificar Temperatura Maxima:\n\n");
 
            for(j = 0; j < num_linhas; j++)
            {
                if (temperatura[j] > temp_max)
                {
                    temp_max = temperatura[j];
                }
            }
 
            printf("Temperatura Maxima = %f", temp_max);
 
            break;
        }
 
        case 4:
        {
            float temp_min;
            int j;
 
            lerficheiro();
 
            printf("\n\n3 - Verificar Temperatura Minima:\n\n");
 
            for(j = 0; j < num_linhas; j++)
            {
                temp_min = temperatura[0];
 
                if (temperatura[j] < temp_min)
                {
                    temp_min = temperatura[j];
                }
            }
 
            printf("Temperatura Minima = %f", temp_min);
 
            break;
        }
 
        case 5:
        {
            printf("Escolheu SAIR:");
            exit(0);
        }
 
    }while(escolha != 5);
}

Calculo da Média das Temperaturas:

Verificação da Temperatura Máxima:

Verificação da Temperatura Mínima :

O código que criei ainda está um pouco desorganizado pois ainda não me encaixo muito bem com a passagem de parâmetros para as funções. Tenho a plena consciência que a minha aplicação ainda pode ser muito melhorada, mas caso alguém tenha dicas ou ideias dos melhoramentos que fosso efectuar estarei disposto a ouvir e implementar.

Share

One Response to “Projecto Robótica – Arduino + Temperature Sensor LM335A – Leitura, Gravação de Dados e Estatísticas V_1.01”

  1. Olá,

    sugiro algumas optimizações e reduções no código. Vê o código abaixo 😉

    Atenção ao cálculo da média. O algoritmo estava a calcular a média em todas as iterações.
    Quando se calcula um máximo ou mínimo podemos obter o primeiro valor do array e começar a iteração pelo segundo elemento do array (j = 1).

    case 2:
    {
    printf(“\n\n2 – Escolheu Calcular a Media das Temperaturas:\n\n”);

    lerficheiro();

    float soma_temp = 0, temp_media = 0;

    for(int j = 0; j < num_linhas; j++)
    {
    soma_temp += temperatura[j];
    }

    temp_media = soma_temp / num_linhas;

    printf("Media = %f", temp_media);

    break;
    }

    case 3:
    {
    float temp_max;

    lerficheiro();

    printf("\n\n3 – Verificar Temperatura Maxima:\n\n");

    temp_max = temperatura[0];

    for(int j = 1; j temp_max)
    {
    temp_max = temperatura[j];
    }
    }

    printf(“Temperatura Maxima = %f”, temp_max);

    break;
    }
    case 4:
    {
    float temp_min;

    lerficheiro();

    printf(“\n\n3 – Verificar Temperatura Minima:\n\n”);

    temp_min = temperatura[0];
    for(int j = 1; j < num_linhas; j++)
    {
    if (temperatura[j] < temp_min)
    {
    temp_min = temperatura[j];
    }
    }

    printf("Temperatura Minima = %f", temp_min);

    break;
    }

Leave a Reply