# usar funciones trigonometricas en C con compilador hi-tech C



## delmaks (May 9, 2012)

hola gente del foro, me he propuesto un desafio despues de haber avanzado un poco en aprender a programar un pic, he estado estudiando mucho con respecto al tema, y me gustaria hacer un programa para controlar un pequeño robot que calcule un azimut a partir de un puto de referncia de latitud y longitud y este se dirija en aquella direccion, eso es lo que pretendo hacer pero, tengo dudas como puedo ingresar un formula o realizar un calculo trigonometrico en lenguaje C hoy estoy usando el editor de MPLAB 8.80 y el compilador       HI-TECH C, quiero saber si tengo que hacer alguna libreria para esto o existe algun tipo de sintaxi estandar para realizar los calculos trigonometricos. la verdad que si hay que crear un libreria me beria bastante imposibilitado de hacer este proyecto ya que no entiendo mucho como crear una, si alguien sabe dondo puedo encontrar material para estudia y aprender a hacer una libreria se los agradeceria mucho. gracias ¡CAMBIO!


----------



## Chico3001 (May 10, 2012)

Para mi gusto te estas metiendo en camisa de once varas, especialmente si quieres usar un PIC de la serie 16

Las funciones de punto flotante son las mas pesadas para un microcontrolador, especialmente si es de 8 bits ya que la mayoria de los numeros flotantes son de 24 o 32 bits, asi que corres el riesgo de acabarte ambas memorias.. RAM y ROM

Por otro lado, si aun asi quieres intentarlo entonces te puedo decir que si existen esas librerias, solo usalas con precaucion o considera que esos calculos le pueden tomar varios segundos al micro, igual puedes buscar informacion sobre metodos numericos en programacion, casi todos esos calculos estan basados en aproximaciones de diversos tipos, para algoritmos trigonometricos usualmente se usan binomios de newton o series de Taylor, de eso hay muchisima informacion disponible

http://es.wikipedia.org/wiki/Métodos_numéricos
http://es.wikipedia.org/wiki/Teorema_del_binomio
http://es.wikipedia.org/wiki/Serie_de_Taylor

Te recomiendo desde un inicio que consideres micros mas potentes... PICS serie 18, 24 o 32, o incluso otros micros de 32 bits, como ARM o DSPs


----------



## delmaks (May 10, 2012)

ok, muchas gracias Chico3001 se agradece la respuesta, los consejos y la informacion para aprender mas. 
ok. tu me aconsejas usar micros mas potente, mi pregunta es la siguiente, tengo que usar otro compilador para programar ete tipo de pic o sigo con el mismo, si es asi entonces tendre que empezar a aprender nuevamenete a programar deacuerdo a la sintaxy de compilador ¿verdad?. bueno que me recomiendas tu que haga al respecto


----------



## Chico3001 (May 10, 2012)

La ventaja de la programacion en C es que no necesitas aprender todo desde un principio, solo ciertas partes muy especificas....

Desafortunadamente en PICs no soy experto, asi que no sabria decirte que tanto cambie la programacion, pero para decidir si necesitas moverte a otro micro depende de tus necesidades, si crees que puedes lograr meter las ecuaciones y no hay problema con que el micro se tarde varios segundos entonces quedate con ese micro, en cambio si necesitas velocidad si es forzoso cambiar de micro....


----------



## Eduardo (May 10, 2012)

Si querés hacer un control de movimiento primero tenés que interiorizarte en como trabaja un control y después definir hardware y software. No al revés.

Salvo que uses micros muy potentes, vas a tener un controlador manejando a bajo nivel los motores y otro para decodificación y cálculo que le manda la nueva posición de cada eje "cocinada" al anterior.

Para que te des una idea, un micro debería trabajar de manera similar al LM628 (ver datasheet) por cada eje.
Y dependiendo del tiempo sobrante, usar o no otro micro para decodificación y cálculo de la poligonal.


----------

