avg/pgmspace

Hola:

Estoy empezando a trastear con los Arduinos y de momento mis conociemientos son muy limitados, el caso es que quería hacer un generador de funciones usando el programa que hay en esta página, pues aunque no se adapta del todo a lo que preciso en este momento, creo que tendría los conocimientos suficientes como para poder adaptarlo a lo que necesito.

El caso es que entiendo que el programa llama a la librería pgmspace y no la encuentro, he visto por internet el código de esa librería e incluso un fichero pgmspace.h que bajé y puse junto con el resto de las librerías, el caso es que aunque el software de Arduino considera que el programa está bien, no consigo que salga la señal senoidal de la patilla correspondiente (la 11 en este caso de un Arduino Mega), por lo que he leído un poco más sobre las librerías y veo que a parte del fichero con extensión .h necesito otro con la extensión .cpp que no encuentro por ningún lado (ni la librería entera ni el fichero cpp en cuestión), no se si es una librería con derechos de autor que hay que pagar para poder tenerla, o que simplemente hoy no he tenido la suficiente claridad de ideas para encontrarla, el caso es que si se puede descargar legalmente de algún sitio, agradecería enormemente que alguien me pasara el link

Un saludo y muchas gracias por dedicar un rato de vuestro tiempo a leer todo este rollo.

-- o --
Rodrigo

Hola picodeloro.

Esta librería está empaquetada en avr-libc, y la última versión la tienes disponible en:
http://mirrors.fe.up.pt/pub/nongnu/avr-libc/

en avr-libc-xxxx/include/avr/pgmspace.h

Para que Arduino te la reconozca, tienes que crear una carpeta denominada pgmspace dentro de la carpeta libraries de Arduino
(Arduino-XXXX/libraries/pgmspace) y descomprimir dentro de ella el archivo pgmspace.h descargado anteriormente.

Te aparecerá en el menú del IDE-Arduino: Skecht/Import library/pgmspace

NOTA: No creo que es obligatorio que una librería tenga archivo cpp.

Saludos

Muchísimas gracias por la información.

A media tarde me bajé de una web diferente el pgmspace.h, creé la carpeta pgmspace en libraries y metí el fichero pero no me funcionó el programa :blush: pues eso si que sabía hacerlo, probaré a ver si la librería de ese paquete funciona.

También tengo que mirar otra cosa pues me he puesto a leer con más calma la web donde está el programita del generador de funciones y comentan que es para un Duemilanove y yo se lo he cargado muy alegremente a un Mega pues daba por hecho que debería de funcionar :blush:, tengo un Duemilanove funcionando en otra cosa y probaré mañana a cargarle el programa para ver si es un problema de compatibilidad entre estas dos versiones ???

Lo dicho Inizul, muchas gracias por la información.

-- o --
Rodrigo

Hola,

No necesitas hacer nada para tener pgmspace, ya que viene por defecto dentro de las carpetas Arduino (toda la libreria avr-libc). Tu mismo lo puedes comprobar en \hardware\tools\avr\avr\include\avr (PROGMEM - Arduino Reference)

Deberia funcionarte sin hacer nada, si tienes en tu programa #include <avr/pgmspace.h>
Yo creo que el problema es que estan usando el include en su forma con " (comillas). Cambia las comillas por <>.

Ya nos dirás si te funciona haciendo ésto.

Saludos

Igor R.

Como bien dice Igor R, con Arduino viene dicha librería (si no te ha dado ningún error de compilación es que ya existe), el que no te funcione, como bien has dicho, es por usar la placa distinta, ya que los pines asociados a los contadores no son los mismos en el Duemilanove que en el Mega, así que tendrás que buscar que pin del Duemilanove corresponde en el Mega.

Muchas gracias a todos por la información.

He cargado en un Duemilanove el programita y parece que funciona, por lo menos veo en el osciloscopio la señal cuadrada correspondiente, me falta hacer el filtro de salida pues en la tienda de electrónica en donde compro habitualmente no tienen las bobinas de 4.7mH por lo que tendré que buscarlas por otro sitio :~. Según me sea posible intentaré mirar la forma de que funcione en el Mega, pero bueno, ahora apañaré con el que estoy usando.

Ahora estoy cambiando un poco el programa para que el generador trabaje entre 30 y 200 Hz, que cambie de frecuencia mediante un encoder en vez del potenciómetro y que presente en unos displays de segmentos (con un MAX7221) la frecuencia de salida del generador.

Un saludo y gracias de nuevo

-- o --
Rodrigo