Error al usar libreria para LCD 12864

Hola a todos:

Tengo un problema.

Estoy tratando de programar un LCD 128 x 64.

Los pases que realice son los siguientes:

1.- Bajé la librería LCD: Arduino Playground - HomePage
2.- La descomprimí en el directorio Libraries del Arduino IDE
3.- Trato de hacer un simple ejemplo de inicialización del LCD.

include <LCDA12864.h>

void setup(){
LCDA.Initialise();
}

void loop(){

}

Y obtengo este error:

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
sketch_jan10a.ino: In function 'void setup()':
sketch_jan10a:4: error: 'LCDA' was not declared in this scope

4.- Viendo la liberia h si hay extern LCD12864 LCDA;

Que es lo que estoy haciendo mal?

Diria que te falta instanciar un objeto tipo LCDA para poder trabajar con el.Antes del setup debes crear una variable,como:

 LCDA mipantalla;

void setup() {
  mipantalla.Initialise();
}

Ojo ,esto te lo digo sin conocer esta libreria ,basandome en las demas que he usado normalmente funciona asi.Tambien es posible que al inicializar la variable en el setup necesite que le pases algun parametro (entre los parentesis) como por ejemplo los pines donde se va a conectar ,etc.Mira si con la libreria vienen ejemplos y abrelos con el IDE para ver como funciona.

¿Seguro que está descomprimida en el lugar correcto?

...arduino\libraries\LCD12864\LCD12864.h

Revisa no hayas creado una carpeta extra.

El error es doble
lo de jose por un lado y esto otro tambien

# include <LCDA12864.h>

sin espacio entre # e include
debiera ser asi

#include <LCDA12864.h>

Gracias a todos por sus respuestas. Verifico cada punto y les comento. Un abrazo.

Hola de nuevo:

Revise sus comentarios, corrigoendo el código, sin embargo sigo con los mimso problemas.

El código:

#include <LCDA12864.h>

LCDA mipant;

void setup(){
mipant.Initialise();
}

void loop(){
}

El error:
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
sketch_jan11a:3: error: 'LCDA' does not name a type
sketch_jan11a.ino: In function 'void setup()':
sketch_jan11a:6: error: 'mipant' was not declared in this scope

Usando el ejmeplo del juego de pong de la página de la libreria, también hay errores Pong.pde

Errores:

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp: In member function 'void LCD12864::selectCS1()':
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:74: error: 'digitalWrite' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp: In member function 'void LCD12864::Initialise()':
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:82: error: 'B00000001' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:83: error: 'B00000010' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:84: error: 'B00000100' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:85: error: 'B00001000' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:86: error: 'B00010000' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:87: error: 'B00100000' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:88: error: 'B01000000' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:89: error: 'B10000000' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:92: error: 'OUTPUT' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:92: error: 'pinMode' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp: In member function 'void LCD12864::DrawBrLine(uint8_t, uint8_t, uint8_t, uint8_t)':
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:304: error: 'abs' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp: In member function 'void LCD12864::setPins(uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t)':
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:487: error: 'digitalWrite' was not declared in this scope
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp: In member function 'void LCD12864::delayns()':
G:\arduino-1.0.6\libraries\LCD12864\LCD12864.cpp:507: error: 'delayMicroseconds' was not declared in this scope

Haciendo el intento con otra librería ( Universal 8bit Graphics Library), también obtengo errores:

Codigo de ejmplo: HelloWorld.pde

También hay errores similares:

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK"
HelloWorld.pde: In function 'void draw()':
HelloWorld:104: error: 'u8g' was not declared in this scope
HelloWorld.pde: In function 'void setup()':
HelloWorld:118: error: 'u8g' was not declared in this scope
HelloWorld.pde: In function 'void loop()':
HelloWorld:128: error: 'u8g' was not declared in this scope

Ambas librerias se encuentran en el directorio libaries de Arduino:

LCD: G:\arduino-1.0.6\libraries\LCD12864

Universal Graphics 8 Bit: G:\arduino-1.0.6\libraries\U8glib

Con los ejemplos normales que viene el ide de arduino no tengo ningun problema al compilar. Al percer es como si no encontrara las librerias en sus respectivos direcotorios, sin embargo como pueden ver, estan colocados los .h, .c y .cpp en donde deben cada uno de ellos.

Agradezco sus sugerencias y tiempo.

Saludos.

8ugl.JPG

LCD.JPG

pongLCD.pde (4.01 KB)

HelloWorld.pde (8.23 KB)

He mirado por encima en el playground y veo que lo tenias bien al principio,es decir al contrario
que la mayoria de librerias esta no hace falta instanciarla y al incluir la libreria se instancia una variable
Llamada LCDA,por lo tanto vuelve a lo que tenias al principio y perdona por liarte.Has mirado si viene algun ejemplo con la libreria?Desde el ide archivo-> ejemplos -> LCDA12864 o busca la ruta con el explorador a ver si hay una carpeta con ejemplos.

Hola jose muchas gracias por tomarte el tiempo de leer mi duda.

Pues nada, que con la librería LCDA12864 no he tenido éxito, sigo con los mismos problemas.

Ya he leido muchos artículos de como instalar las librerías en Arduino IDE, haciendo exactamente los pasos que se mencionan, no consigo compilar. Estoy probando el ejemplo de juego de pong que trae esa librería, pero sin suerte.

Con la que ya tuve éxito, pero solo al compilar fue con la U8glib, ya que en los comentarios de los ejemplos te indica que descomentes una línea de código en la que se especifica el constructor de acuerdo al LCD que estas usando.

Sin embargo me gustaría saber como es que puedo resolver el problema de la librería LCDA; Si pudieras descargarla e incluirla en tu instalación de arduino ide, para verificar si te ocurre lo mismo que a mi, sería genial.

Un abrazo.

luca15mx:
Hola jose muchas gracias por tomarte el tiempo de leer mi duda.

Pues nada, que con la librería LCDA12864 no he tenido éxito, sigo con los mismos problemas.

Ya he leido muchos artículos de como instalar las librerías en Arduino IDE, haciendo exactamente los pasos que se mencionan, no consigo compilar. Estoy probando el ejemplo de juego de pong que trae esa librería, pero sin suerte.

Con la que ya tuve éxito, pero solo al compilar fue con la U8glib, ya que en los comentarios de los ejemplos te indica que descomentes una línea de código en la que se especifica el constructor de acuerdo al LCD que estas usando.

Sin embargo me gustaría saber como es que puedo resolver el problema de la librería LCDA; Si pudieras descargarla e incluirla en tu instalación de arduino ide, para verificar si te ocurre lo mismo que a mi, sería genial.

Un abrazo.

He probado a compilar el pong y me da un monton de fallos ,te se debe haber pasado algo en cuanto a la manera de proceder para que funcione y ademas la libreria no tiene ningun ejemplo para ver como funciona.En el fichero .cpp hay varias funciones comentadas (entre / y /) que parecen configuraciones de pins ,no se si van por ahi los tiros,de todas formas poco mas puedo ayudarte pues no tengo esa pantalla y la libreria es bastante compleja asi que tendras que 'peinar' la web (osea buscar y rebusar en google....) o a ver si algun compañero del foro ya se ha peleado con esta pantalla.

Te agradezco mucho tu dedicación a mis dudas jose en cuanto tenga éxito o haya algún avance positivo les haré saber. :wink:

Saludos.

BUeno pero hay un problema de lectura Sres.
Dice claramente la página

12864 Graphics LCD library

12864 is an unofficial Arduino library that supports 12864 Graphic LCDs that use the ST7920

por otro lado U8glib soporta ST7920

intenta con esa que yo la he usado sin problemas.

y luego dice un comentario

To get a ST7920 display working all you need is 2 pins.

#define lcdCs U8G_PIN_NONE
#define lcdSck 4
#define lcdMosi 3
#define lcdRst U8G_PIN_NONE
#include <U8glib.h>
U8GLIB_ST7920_128X64_4X u8g(lcdSck, lcdMosi, lcdCs, lcdRst);

After that, PSB to ground, RS to Vcc, Vcc to +5V, Vss to ground, and you're all set.

For backlighting, BLK to ground and BLA gets a 390 ohm to Vcc (or PWM).

Hola.
Si te aparecen en el ide los ejemplos de la librería es que está bien instalada.
Acabo de probar a instalar la librería u8glib y he compilado un par de ejemplos sin problemas. En ambos, eso sí, hay que descomentar una de las líneas de definición (la que corresponda a tu modelo de lcd) o bien definir la tuya propia.
Si te da error a pesar de todo, tal vez tenga que ver con tu versión de IDE.

... Y acabo de probar la librería y ejemplo del primer post.
Primero cambié el

include <LCDA12864.h> por

include <LCD12864.h> (sobra la A)

Y me daba un error de compilación.

A continuación he modificado el archivo LCD12864.h y he cambiado

#include <avr/pgmspace.h>
#include <inttypes.h>

por

#include <Arduino.h>

Así me ha compilado sin problemas.