– home / Fóruns / Módulo 5 / 12: Vamos testar nosso conhecimento. / 12: Vamos testar nosso conhecimento | 02
- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 3 anos, 9 meses atrás por Jhonatan Serafim.
-
AutorPosts
-
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 #40003305753Fala 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.
-
AutorPosts
- Você precisa estar Conectado(a) para Responder a este Tópico.