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

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

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

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

    12: Vamos testar nosso conhecimento | 02

    2020-07-01 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);
    }

    2020-07-02 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.