site novo / Fóruns / Fase 5 / 12: Vamos testar nosso conhecimento. / 12: Vamos testar nosso conhecimento | 02

  • Autor
    Posts
    • 03/12/2019 às 00:00 #40003305589

      Seja o primeiro a fazer uma pergunta sobre esta questão.

        01/07/2020 às 00:00 #40003305752

        Na atividade 2 da aula 12…eu usei a formula
        area=((distancia x distancia)/100), para converter em metros, pois as medidas do sensor que é dada em centimetros
        mas está dando um resultado muito louco, tipo: medi a area da minha sala que tem 9 m² e deu 900 metros
        não entendi…sabe me dizer oque está errado?

        Abaixo, o meu codigo:

        long int tempo;
        long int tempo2;
        float distancia;
        float distancia2;
        float area;
        int press=0;
        void main(){
        InicializaLCD4bits();
        setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
        set_timer0(0);

        while(TRUE){

        if(!input(start)){
        delay_ms(250);
        press++;

        if(press==1){

        medeLado_1();
        if(press==2){
        medeLado_2();
        delay_ms(1000);

        }else if(press>=3){
        press=0;
        calcula();
        }
        }
        }
        }

        void medeLado_1(){
        output_high(gatilho);
        delay_us(10);
        output_low(gatilho);
        while(!input(eco));
        set_timer0(0);
        while(input(eco));
        tempo=get_timer0();
        FuncaoComando4bits(LimpaLCD);
        delay_ms(10);
        distancia=((tempo*0.6666)/58);
        FuncaoComando4bits(Linha_1);
        FuncaoTexto4bits(“Medida lado 1″);
        FuncaoComando4bits(Linha_2);
        printf(FuncaoTexto4bits,”DIST=%5.2f m”, distancia);
        delay_ms(2000);
        }

        void medeLado_2(){
        output_high(gatilho);
        delay_us(10);
        output_low(gatilho);
        while(!input(eco));
        set_timer0(0);
        while(input(eco));
        tempo2=get_timer0();
        FuncaoComando4bits(LimpaLCD);
        delay_ms(10);
        distancia2=((tempo2*0.6666)/58);

        FuncaoComando4bits(Linha_1);
        FuncaoTexto4bits(“Medida lado 2″);
        FuncaoComando4bits(Linha_2);
        printf(FuncaoTexto4bits,”DIST=%5.2f m”, distancia2);

        delay_ms(2000);
        }
        void calcula(){
        FuncaoComando4bits(LimpaLCD);
        delay_ms(10);
        area=((distancia*distancia2)/100);
        FuncaoComando4bits(linha_1);
        Funcaotexto4bits(“A Area e igual a”);
        FuncaoComando4bits(Linha_2);
        printf(FuncaoTexto4bits,”%3.2f metros”,area);
        delay_ms(2000);
        }

          02/07/2020 às 00:00 #40003305753

          Fala João!

          Recebi a pasta do seu projeto por e-mail e percebi que diverge do encaminhado aqui no fórum de ajuda. Ao compilar e gravar no kit constatei que o código agora funciona corretamente.

          As mudanças que você mesmo fez foi apenas nos valores dos cálculos. Permita-me apresentar aqui:

          1° Calculo de distancia:
          Assim apresentando o valor em centímetros -> distancia2=((tempo2*0.6666)/58);
          Assim apresentando o valor em metro -> distancia=((tempo*0.6666)/5882);

          2° Calculo da área
          Assim apresentando o valor em centímetros -> area=((distancia*distancia2)/100);
          Assim apresentando o valor em metro -> area=distancia*distancia2;

          Como a atividade solicita que seja apresentado os valores em metro quadrado nada melhor que já coletar em metro, parabéns, você pode até criar um carácter especial para o simbolo ² deixaria mais elegante a apresentação.

          Vou apresentar uma sugestão para cálculos dentro do printf o calculo da área você poderia ter poupado espaço para seu código e dispensando a função calcula aplicando a multiplicação das duas variáveis dentro do printf.
          Exemplo:

                  LCD_comando(Linha_1);
          	printf(LCD_texto, "  Area Quadrada   ");
          	LCD_comando(Linha_2);
          	printf(LCD_texto, "   %5.2f m2", (distanciax*distanciay));
                  

          Optando por essa forma simplifica o código. Mas ressalto isso é só mais um recurso da linguagem C, e cada programador pode fazer do jeito que optar e necessitar no projeto.

        • Você precisa estar Conectado(a) para Responder a este Tópico.