miércoles, 8 de enero de 2014

Nueva versión de la librería PWM para arduino

Como resultado directo del bendito descanso laboral del reciente período navideño, he realizado una serie de mejoras en la librería que realicé para efectuar PWM desde los pines 0 a 13 de la placa arduino en las que se utiliza como microprocesador tanto el ATmega168, como el ATmega328 (por ejemplo, las tarjetas arduino Diecimila, UNO o Pro Mini, por ejemplo).

Las mejoras introducidas son las siguientes:
  • Se ha incrementado el número de pines que pueden utilizar PWM, pasando de 14 pines (desde el pin 0 al pin 13) a 20, ya que los pines marcados en la placa arduino como entradas analógicas (A0 a A5) ahora también pueden ser utilizados como salidas.
  • Se ha optimizado/reduciendo el tiempo de ejecución de la rutina interna de generación de PWM que se cuelga de la interrupción por desbordamiento del Timer2.
  • Incorporados tres ejemplos de utilización de la librería.
Indicar igualmente que he cambiado el nombre de la librería, la cual ha pasado a denominarse "PWM4all". Me resulta algo más explicativa, al menos desde mi punto de vista, que la anterior "PWM".
 
Por otra parte, y ya entrado en materia propia de programación de librerías para el entorno arduino, me percaté que el método genérico constructor de la clase se encontraba mal implementado, mientras que el método genérico destructor de la clase no existía. El primero de ellos se utiliza como inicializador de la clase, mientras que el segundo permite la liberación de recursos del sistema.

En este enlace os dejo la librería que he colgado en Github.

Las mejoras futuras que tengo en mente para esta librería pasan por tratar de incorporar nuevas funciones para realizar efectos "fade" de 0 a un valor determinado y entre dos valores, con el consumo mínimo de recursos y de forma paralela, en la medida de lo posible obviamente, a la ejecución del resto del código que se desee ejecutar en arduino.

La finalidad de esta librería, al menos cuando empecé a desarrollarla, no era otra que generar PWM por software para su utilización en control de iluminación led, motivo por el cual considero interesante poder disponer de funciones tipo "fade" directamente implementadas en la propia librería.

Por otra parte, cuando pueda ojearé el datasheet del microprocesador que llevan tanto la arduino leonardo, como la arduino mega para tratar de incorporarlos.

1 comentario:

  1. Gracias de antemano, podrias decirme si se pueden generar fracuencias con decimales.
    Muchas Gracias.

    ResponderEliminar