– home / Fóruns / Módulo 5 / 12: Vamos testar nosso conhecimento. / 12: Vamos testar nosso conhecimento | 02

  • Autor
    Posts
    • 03/12/2019 até 00:00 #40003305589

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

        19/05/2020 até 00:00 #40003281180

        12: Vamos testar nosso conhecimento | 02

          01/07/2020 até 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 até 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.