Calculo no Arduino

1,353 views
Skip to first unread message

Eduardo Almeida Cariani

unread,
Sep 1, 2011, 2:08:12 PM9/1/11
to ArduInRio
Bom pessoal, estou com duvida na hora de fazer cálculos no arduino... Parece que a programação anula tudo que está depois do ponto (.) já que o arduino não aceita usar virgula (,)

Exemplo estou usando valor de pi = 3.1416 e para conferir eu peço para ver o valor no Serial.print() e lá só fala que pi = 3. Na programação uso praticamente todos os números tem casa decimais.

Tem algum outro jeito para fazer os cálculos em que eu possa usar as casas decimais... Estou precisando disso para terminar o projeto para participar da MNR (Mostra Nacional de Robótica).

Outra coisa rápida, alguém conhece e/ou sabe usar o kit e a programação do bioloid (O Raphael está usando esse kit e está com duvida sobre ele, ele e a equipe dele irão participar da OBR agora esse mês)

Abs
--
Eduardo de Almeida Cariani - Estudante

Desireé Santos

unread,
Sep 1, 2011, 2:16:05 PM9/1/11
to ardu...@googlegroups.com

Qual o tipo da variável que vc declarou para pi ? 
Usou float ou double ?

Em 1 de setembro de 2011 15:08, Eduardo Almeida Cariani <dudu.s...@gmail.com> escreveu:
usando valor de pi



--
Desiree Santos

Eduardo Almeida Cariani

unread,
Sep 1, 2011, 2:20:21 PM9/1/11
to ardu...@googlegroups.com
mandar a programação que é melhor para ver...
RC_ArduInRio_Cronometro_CalculoG_Final3_0.pde

Eduardo Almeida Cariani

unread,
Sep 1, 2011, 2:32:02 PM9/1/11
to ardu...@googlegroups.com
Agora dei uma pesquisada aqui no google e no site do arduino... Refiz 2 programações minhas aqui ai estava falando do float e coloquei ele nessas novas programações, só que vou testar hoje na escola...

Mas caso alguém saiba como me ajudar sobre esses cálculos... Agradeceria muito

Carlos Eduardo "Mascote" Garcia de Carvalho

unread,
Sep 1, 2011, 2:32:48 PM9/1/11
to ardu...@googlegroups.com
É problema de tipagem de variável.

Se você faz uma divisão e armazena ou faz um cast para inteiro ele só irá pegar a parte inteira do valor (truncar).

Tente fazer 

  Serial.print((String)(TempoCronometro/1000L)); // aqui acho que voce deve converter para STRING, nao?
  Serial.print(".");
  Serial.print((String)(TempoCronometro%1000L)); // aqui tambem rs


---
Carlos Eduardo "Mascote" Garcia de Carvalho
"Reconhece-o em todos os teus caminhos, e ele endireitará as tuas veredas." Provérbios 3.6
(21) 8125-1737
Skype: carloseduardo.gc


2011/9/1 Eduardo Almeida Cariani <dudu.s...@gmail.com>

Eduardo Almeida Cariani

unread,
Sep 1, 2011, 2:40:23 PM9/1/11
to ardu...@googlegroups.com
Mas nessa parte do cronometro, não tem como deixar em uma coisa só... tipo em vez de dividir por 1000 para ver os segundos e depois ver o resto de 1000 para ver os milisegundos... Não tem como fazer em uma unica coisa mas sendo dividia por virgula automaticamente?

Carlos Eduardo "Mascote" Garcia de Carvalho

unread,
Sep 1, 2011, 2:52:45 PM9/1/11
to ardu...@googlegroups.com
Sim, usando float ou double.
Uma coisa. se você fizer

int a = 3 ;
int b = 2;
float c = a / b;
Não testei, mas se não me engano isso retornará 1.
Mas se fizer:
float c = a. / b;

ou
float a = 3.0;
int b = 2;
float c = a / b;

Nos dois últimos casos irá retornar 1.5 (talvez possa retornar 1.4999999999 isso é um outro problema)

Eduardo Almeida Cariani

unread,
Sep 1, 2011, 8:30:46 PM9/1/11
to ardu...@googlegroups.com
Terminei aqui a programação, também fui dando um ajustes e agora está funcionando como quero.... Muito Obrigado
Reply all
Reply to author
Forward
0 new messages