miércoles, 11 de junio de 2014

Números muy grandes en Arduino

Arduino es una plataforma orientada a conectar dispositivos analógicos o digitales  a los puertos de entrada/salida ,  es decir es un "microcontrolador". Sin embargo no deja de ser un microprocesador. Y es por ello que podemos utilizarlo para casi cualquier tipo de aplicación  capaz de ser ejecutada por un micro.

Y lo cierto es que hay gente muy creativa desarrollando aplicaciones no convencionales para esta plataforma.

Una de estas aplicaciones no convencionales es la librera  BigNumber , una adaptación hecha por Nick Gammon de la libreria GNU bc (linux). Esta librería permite hacer operaciones con números muy grandes, del tipo que estudian los matemáticos en Teoría de Números. 

Al ejecutar alguno de los ejemplos que incluye la librería no deja de sorprender la capacidad del Arduino para ejecutar estos cálculos tan complejos, no olvidemos que es un micro de 8 bits corriendo a 16Mhz, en comparación con los micros de 64 bits corriendo a varios Gigahertz que utilizamos en nuestros computadores.

En la imagen un ejemplo de cálculo de factoriales :



El script calcula los factoriales de los números enteros 1 al 200 . El cálculo no demora mas de 12 segundos !!!

La librería BigNumberMath complementa la anterior con varias funciones nuevas y corrección de otras ya existentes. Debe utilizarse la versión del enlace: version_sin_errores

Un experimento interesante de overclock en el Arduino es cambiar el cristal de 16MHz por otro de 24Mhz:

  • Se modifica el script para establecer una velocidad de comunicación serial de 38400 bauds  ( Serial.begin (38400); ) . 
  • Se carga el script en el Arduino. 
  • Se desconecta la alimentación, cambiamos el cristal. 
  • Conectamos el Arduino de nuevo y utilizamos el monitor serial a una velocidad de conexión de 57600 baud. 
  • Inicializamos el Arduino 
En el caso del script anterior el tiempo de ejecución baja a menos de 9 segundos.

No hay comentarios:

Publicar un comentario