Creando una libreria para pantalla LCD 320x240

Hola.
He conseguido una pantalla POWERTIP PG320240D que utilza el driver de Epson SED1335F que es equivalente al RA8835.Para el cual no tengo librerias.

Despues de mucho buscar he encontrado unas liberias para RA8835_Arduino-Uno, los dos ficheros el .h y el .cpp.
Tambien he encontrado un sketch que estoy intentando adaptar.
Pero al compilar me da el error:

Arduino:1.6.3 (Windows XP), Placa:“Arduino Uno”

C:\Archivos de programa\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino -IC:\Archivos de programa\Arduino\hardware\arduino\avr\variants\standard C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build8836676447496392647.tmp\PantallaTest.ino.cpp -o C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build8836676447496392647.tmp\PantallaTest.ino.cpp.o

PantallaTest.ino.ino:1:28: fatal error: RA8835_arduino.h: No such file or directory

compilation terminated.

Error de compilación

No encuentro el error.

Aqui pongo las partes superiores de los ficheros RA8835_arduino.h , RA8835_arduino.cpp y el ejemplo PantallaTest.ino.

Agradezco de antemano todas las ayudas y sugerencias.

/*
 * RA8835_arduino.h
 *
 *  Created on: 4 Sep 2014
 *      Author: Jianyuan
 */

#ifndef RA8835_ARDUINO_H_
#define RA8835_ARDUINO_H_
#include <Arduino.h>
#include "inttypes.h"
#include "avr/io.h"
#include "avr/pgmspace.h"
#include "util/delay.h"
/*
 * RA8835_lib.c
 *
 *  Created on: 4 Sep 2014
 *      Author: Jianyuan
 */

#include "RA8835_arduino.h"

SED1335::SED1335(){
 GLCD_InitializePorts();
}
#include <RA8835_arduino.h>

RA8835 lcd = RA8835(44);

#define FPS 5
#define RADIUS 20
#define RECT_WIDTH 40
#define RECT_HEIGHT 20

int16_t next, next2, xpos, ypos;
int16_t rectx, recty;

No entiendo nada de librerías de Arduino ni nada por el estilo, pero cuándo tengo un problema como ese en programación en mi caso es siempre lo mismo.

El error dice que no encuentra el archivo, ¿cómo le indicas dónde está el fichero que dice que falta? el RA8835_Arduino.h

En mi caso (php) casi siempre se soluciona metiendo el fichero del que se queja dónde está el fichero que se queja (por explicarlo de alguna forma)

A ver si te sirve de algo, y si no pues por lo menos lo intenté :)

Saludos.

Comprueba lo siguiente:

1) la libreria está instalada dentro de libraries que debe de estar dentro de la carpeta de sketchs de arduino.

2) Comprueba el nombre. Debería haber una carpeta llamada: RA8835_Arduino. Veo que has puesto que tenías RA8835_Arduino-UNO, el "-UNO" no debería estar, o al menos el "-" que no es válido.

3) Dentro debe haber el correspondiente RA8835_Arduino.h y RA8835_Arduino.cpp.

4) Crea un nuevo sketch en blanco y en el menú Programa->Importar libreria... debería salirte en la lista tu libreria, si no es así, revisa los pasos anteriores.

Si esta todo correcto, intenta cambiar el nombre de la carpeta y de los ficheros, quitando el "_Arduino" siguiendo los pasos anteriores.

El llamado a una librería que está en el mismo directorio del archivo .ino funciona cuando la librería es llamada entre comillas de este modo:

#include "RA8835_Arduino.h"

Cuando está entre signos <librería.h> porque esta en libraries de arduino.

#include <RA8835_Arduino.h>

Gracias a los tres por la ayuda. Con los tres consejos me habeis dicho lo mismo, y el problema se ha solucionado.

Tambien agradeceria si alguien tuviera un sketch para probar estas librerias o me ayudara a crear uno. Qué es lo que intento.

Despues de aplicar vuestras soluciones me surgen otro errores:

Arduino:1.6.3 (Windows XP), Placa:“Arduino Uno”

C:\Archivos de programa\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10603 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Archivos de programa\Arduino\hardware\arduino\avr\cores\arduino -IC:\Archivos de programa\Arduino\hardware\arduino\avr\variants\standard C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build8820854339537281206.tmp\PantallaTest.ino.cpp -o C:\DOCUME~1\COMPAQ~1\CONFIG~1\Temp\build8820854339537281206.tmp\PantallaTest.ino.cpp.o

PantallaTest.ino.ino:3:1: error: ‘RA8835_arduino’ does not name a type

PantallaTest.ino.ino: In function ‘void setup()’:

PantallaTest.ino.ino:14:3: error: ‘lcd’ was not declared in this scope

PantallaTest.ino.ino: In function ‘void loop()’:

PantallaTest.ino.ino:49:5: error: ‘lcd’ was not declared in this scope

Error de compilación

Pego el sketch por si se os ocurre algo

#include "RA8835_arduino.h"

RA8835_arduino lcd = RA8835_arduino(44);

#define FPS 5
#define RADIUS 20
#define RECT_WIDTH 40
#define RECT_HEIGHT 20

int16_t next, next2, xpos, ypos;
int16_t rectx, recty;

void setup(){
  lcd.begin();
  lcd.setCursor(25,0);
  for(byte i=1; i<=3; i++)
  {
    lcd.setTextSize(i);
    lcd.print(FPS);
    lcd.print(" fps ");
  }
  
  lcd.drawLine(0,0,319,239,1);
  lcd.drawLine(319,0,0,239,1); 
  
  xpos = 30;
  ypos = 120;
  next=-4;
  lcd.drawCircle(xpos,ypos,RADIUS,1);
  
  rectx = 140;
  recty = 190;
  lcd.fillRoundRect(rectx,recty,RECT_WIDTH,RECT_HEIGHT,4,1);
  
  unsigned long start = micros();
  lcd.update();
  unsigned long total = micros() - start;
  
  Serial.begin(9600);
  Serial.print("Screen write time: ");
  Serial.print(total);
  Serial.println("us");
}

void loop(){
  if (millis() % (1000/FPS) == 0)
  {
    // clear the previous circle
    lcd.drawCircle(xpos, ypos, RADIUS, 0);
    lcd.fillRoundRect(rectx,recty,RECT_WIDTH,RECT_HEIGHT,4,0);
    
    if (ypos < 3*RADIUS)
      next = 4;
      
    if (ypos > (lcd.height() - (3*RADIUS)))
      next = -4;
      
    ypos += next;
    rectx += next;
    
    lcd.drawCircle(xpos,ypos,RADIUS,1);
    lcd.fillRoundRect(rectx,recty,RECT_WIDTH,RECT_HEIGHT,4,1);
    
    lcd.update();
  }
}
RA8835_arduino lcd = RA8835_arduino(44);

No entiendo esa línea. Creas una variable RA8835_arduino lcd y le asignas un algo que no sé lo que es. A partir de hay el compilador da errores.

¿No será?

RA8835_arduino lcd(44);

Los dos archivos .cpp y .h son lo que has mostrado en los primeros post o tienen mas código?

Hola.

Lo primero, gracias por las sugerencias.

Contestando primero a victorjam. Ya lo habia pensado yo. He probado lo que me propones y da el mismo error. El sketch no lo he escrito yo, lo he encontrado en GitHub y lo estoy tratando de adaptar para comprobar si funcionan las librerias que menciono en le primer post, pero estoy viendo que es bastante complicado.
No se por donde tirar.

Ahora conestando a surbyte. Los archivos .h y .cpp del primer post tienen mas código pero no lo pode por todo debido a la limitación del numero de caracteres qu8e se pueden postear. Intentaré postear de nuevo.

Archivo .h

/*
 * RA8835_arduino.h
 *
 *  Created on: 4 Sep 2014
 *      Author: Jianyuan
 */

#ifndef RA8835_ARDUINO_H_
#define RA8835_ARDUINO_H_
#include <Arduino.h>
#include "inttypes.h"
#include "avr/io.h"
#include "avr/pgmspace.h"
#include "util/delay.h"

#define GLCD_DATA_PORT1 	PORTD
#define GLCD_DATA_PIN1		PIND	//Arduino Pins 2-7
#define GLCD_DATA_DDR1		DDRD
#define GLCD_DATA_SHIFT1	<<2
#define GLCD_DATA_RSHIFT1	>>2
#define GLCD_DATA_MASK1		0xFC

#define GLCD_DATA_PORT2 	PORTB
#define GLCD_DATA_PIN2		PINB	//Arduino Pins 8,9
#define GLCD_DATA_DDR2		DDRB
#define GLCD_DATA_SHIFT2	>>6
#define GLCD_DATA_RSHIFT2	<<6
#define GLCD_DATA_MASK2		0x03
// control port
#define GLCD_CTRL_PORT		PORTC
#define GLCD_CTRL_PIN		PINC
#define GLCD_CTRL_DDR		DDRC

#define SED1335_WR   		PCINT8
#define SED1335_RD 			PCINT9
#define SED1335_A0			PCINT10  //Should be able to XNOR this with WR and RD
#define SED1335_CS			PCINT11

//SED1335 properties
#define 	SED1335_SYSTEM_SET   	0x40
#define 	SED1335_SLEEP_IN   		0x53
#define 	SED1335_DISP_OFF   		0x58
#define 	SED1335_DISP_ON   		0x59
#define 	SED1335_SCROLL   		0x44
#define 	SED1335_CSRFORM   		0x5d
#define 	SED1335_CGRAM_ADR   	0x5c
#define 	SED1335_CSRDIR_U   		0x4e
#define 	SED1335_CSRDIR_D   		0x4f
#define 	SED1335_CSRDIR_L   		0x4d
#define 	SED1335_CSRDIR_R   		0x4c
#define 	SED1335_HDOT_SCR   		0x5a
#define 	SED1335_OVLAY   		0x5b
#define 	SED1335_CSRW   			0x46
#define 	SED1335_CSRR   			0x47
#define 	SED1335_MWRITE   		0x42
#define 	SED1335_MREAD   		0x43

#define 	SED1335_SCR_WIDTH   	319
#define 	SED1335_M0   			0
#define 	SED1335_M1   			0
#define 	SED1335_M2   			0
#define 	SED1335_WS   			0
#define 	SED1335_IV   			1
#define 	SED1335_FX   			7
#define 	SED1335_FY   			7
#define 	SED1335_WF   			1
#define 	SED1335_CR   			39
#define 	SED1335_TCR   			43
#define 	SED1335_LF   			239
#define 	SED1335_APL   			40
#define 	SED1335_APH   			0
#define 	SED1335_LINES   		30
#define 	SED1335_SAD1L   		0
#define 	SED1335_SAD1H   		0
#define 	SED1335_SL1   			0xEF
#define 	SED1335_SAD2L   		0x60
#define 	SED1335_SAD2H   		0x09
#define 	SED1335_SL2   			0xEF
#define 	SED1335_SAD3L   		0
#define 	SED1335_SAD3H  			0
#define 	SED1335_SAD4L   		0
#define 	SED1335_SAD4H   		0
#define 	SED1335_CRX   			0x04
#define 	SED1335_CRY   			0x07
#define 	SED1335_CM   			0
#define 	SED1335_MX0   			1
#define 	SED1335_MX1   			0
#define 	SED1335_DM1   			0
#define 	SED1335_DM2   			0
#define 	SED1335_OV   			0
#define 	SED1335_SAGL   			0
#define 	SED1335_SAGH   			0x70
#define 	SED1335_SCRD   			0
#define 	SED1335_FLASH   		0x16
#define 	SED1335_TEXTSIZE   		((SED1335_SAD2H << 8) + SED1335_SAD2L)

#define		SED1335_GRAPHICSTART	((SED1335_SAD2H << 8) + SED1335_SAD2L)

#define 	SED1335_GRAPHICSIZE   	((SED1335_SL2+1) * (SED1335_SCR_WIDTH+1))>>3
#define 	SED1335_MEM_END   		10800
#define 	SED1335_SYS_P1   		0x10 | (SED1335_IV << 5) | (SED1335_WS << 3) | (SED1335_M2 << 2) | (SED1335_M1 << 1) | SED1335_M0
#define 	SED1335_SYS_P2   		0x00 | (SED1335_WF << 7) | SED1335_FX
#define 	SED1335_CSRF_P2   		0x00 | (SED1335_CM << 7) | SED1335_CRY
#define 	SED1335_OVLAY_P1   		0x00 | (SED1335_OV << 4) | (SED1335_DM2 << 3) | (SED1335_DM1 << 2) | (SED1335_MX1 << 1) | SED1335_MX0

class SED1335 {
public:
	SED1335();
	//Atmega init
	void GLCD_InitializePorts(void);
	void GLCD_WriteCommand(unsigned char);
	void GLCD_WriteData(unsigned char);
	unsigned char GLCD_ReadData(void);

	//LCD functions
	void n_delay();
	void GLCD_Initialize(void);
	void GLCD_ClearText(void);
	void GLCD_ClearGraphic(void);
	void GLCD_TextGoTo(unsigned char, unsigned char);
	void GLCD_WriteText(char *);
	void GLCD_GraphicGoTo(unsigned int x, unsigned int y);
	void GLCD_SetPixel(unsigned int x,unsigned int y, int color);
	void GLCD_SetCursorAddress(unsigned int address);
	unsigned char GLCD_ReadByteFromROMMemory(byte *);
	//Drawing functions
	void GLCD_Bitmap(unsigned char * bmp, int x, int y, int dx, int dy);
	void GLCD_createLine(int ,int ,int ,int ,int);
	void GLCD_drawRect(int ,int ,int ,int ,int);
	void GLCD_fillRect(int ,int ,int ,int ,int);
	void GLCD_createCircle(int ,int ,int ,int);
};
#endif /* RA8835_ARDUINO_H_ */

Hola de nuevo.

Ahora pongo el archivo .cpp

/*
 * RA8835_lib.c
 *
 *  Created on: 4 Sep 2014
 *      Author: Jianyuan
 */

#include "RA8835_arduino.h"

SED1335::SED1335(){
 GLCD_InitializePorts();
}


void SED1335::n_delay(){
  volatile byte i;
  for(i = 0; i < (F_CPU/1000000); i++)
  {
 asm("nop");
  }
}

void SED1335::GLCD_InitializePorts() {
 GLCD_DATA_DDR1 |= GLCD_DATA_MASK1;
 GLCD_DATA_DDR2 |= GLCD_DATA_MASK2;
 GLCD_CTRL_DDR = ((1 << SED1335_A0) | (1 << SED1335_WR) | (1 << SED1335_RD) | (1 << SED1335_CS));
 GLCD_CTRL_PORT |= ((1 << SED1335_A0) | (1 << SED1335_WR) | (1 << SED1335_RD) | (1 << SED1335_CS));
}

void SED1335::GLCD_WriteCommand(byte command) {
 GLCD_DATA_PORT1 &= ~GLCD_DATA_MASK1;
 GLCD_DATA_PORT1 |= (command GLCD_DATA_SHIFT1);
 GLCD_DATA_PORT2 &= ~GLCD_DATA_MASK2;
 GLCD_DATA_PORT2 |= (command GLCD_DATA_SHIFT2);
 GLCD_CTRL_PORT &= ~((1 << SED1335_WR) | (1 << SED1335_CS));
 n_delay();
 GLCD_CTRL_PORT |= ((1 << SED1335_WR) | (1 << SED1335_CS));

}
void SED1335::GLCD_WriteData(byte data) {
 GLCD_DATA_PORT1 &= ~GLCD_DATA_MASK1;
 GLCD_DATA_PORT1 |= (data GLCD_DATA_SHIFT1);
 GLCD_DATA_PORT2 &= ~GLCD_DATA_MASK2;
 GLCD_DATA_PORT2 |= (data GLCD_DATA_SHIFT2);
 GLCD_CTRL_PORT &= ~((1 << SED1335_WR) | (1 << SED1335_A0) | (1 << SED1335_CS));
 n_delay();
 GLCD_CTRL_PORT |=((1 << SED1335_WR) |(1 << SED1335_A0)| (1 << SED1335_CS));
}

unsigned char SED1335::GLCD_ReadData(){
 byte tmp;
 GLCD_DATA_DDR1 &= ~GLCD_DATA_MASK1;
 GLCD_DATA_DDR2 &= ~GLCD_DATA_MASK2;
 GLCD_CTRL_PORT &= ~((1 << SED1335_RD) | (1 << SED1335_CS) );
 n_delay();
 tmp = (GLCD_DATA_PIN1 GLCD_DATA_RSHIFT1) | (GLCD_DATA_PIN2 GLCD_DATA_RSHIFT2);
 GLCD_CTRL_PORT |= ((1 << SED1335_RD) | (1 << SED1335_CS) );
 GLCD_DATA_DDR1 |= GLCD_DATA_MASK1;
 GLCD_DATA_DDR2 |= GLCD_DATA_MASK2;
  return tmp;
}

//LCD functions
void SED1335::GLCD_Initialize(){
 GLCD_InitializePorts();

 GLCD_WriteCommand(SED1335_SYSTEM_SET);
 GLCD_WriteData(0x30);
 //GLCD_WriteData(SED1335_SYS_P2);
 GLCD_WriteData(0x87);
 GLCD_WriteData(0x07);
 GLCD_WriteData(SED1335_CR);
 GLCD_WriteData(SED1335_TCR);
 GLCD_WriteData(SED1335_LF);
 GLCD_WriteData(SED1335_APL);
 GLCD_WriteData(SED1335_APH);

 GLCD_WriteCommand(SED1335_SCROLL);
 GLCD_WriteData(SED1335_SAD1L);
 GLCD_WriteData(SED1335_SAD1H);
 GLCD_WriteData(SED1335_SL1);
 GLCD_WriteData(SED1335_SAD2L);
 GLCD_WriteData(SED1335_SAD2H);
 GLCD_WriteData(SED1335_SL2);
 GLCD_WriteData(SED1335_SAD3L);
 GLCD_WriteData(SED1335_SAD3H);
 GLCD_WriteData(SED1335_SAD4L);
 GLCD_WriteData(SED1335_SAD4H);

 GLCD_WriteCommand(SED1335_HDOT_SCR);
 GLCD_WriteData(SED1335_SCRD);

 GLCD_WriteCommand(SED1335_OVLAY);
 GLCD_WriteData(0x01);

 GLCD_WriteCommand(SED1335_DISP_OFF);
 GLCD_WriteData(SED1335_FLASH);

 GLCD_WriteCommand(SED1335_CSRFORM);
 GLCD_WriteData(SED1335_CRX);
 GLCD_WriteData(SED1335_CSRF_P2);

 GLCD_WriteCommand(SED1335_CGRAM_ADR);
 GLCD_WriteData(SED1335_SAGL);
 GLCD_WriteData(SED1335_SAGH);

 GLCD_WriteCommand(SED1335_CSRDIR_R);

 GLCD_WriteCommand(SED1335_DISP_ON);
 GLCD_WriteData(SED1335_FLASH);

}

void SED1335::GLCD_SetPixel(unsigned int x,unsigned int y, int color){
 unsigned char tmp = 0;
 GLCD_GraphicGoTo(x,y);
 //unsigned int address = SED1335_GRAPHICSTART + (40 * y) + (x/8);
 //GLCD_SetCursorAddress(address);

 GLCD_WriteCommand(SED1335_MREAD);
 tmp = GLCD_ReadData();

 if(color)
  tmp |= (1 << (SED1335_FX - (x % 8)));
 else
  tmp &= ~(1 << (SED1335_FX - (x % 8)));

 GLCD_GraphicGoTo(x,y);
 GLCD_WriteCommand(SED1335_MWRITE);
 GLCD_WriteData(tmp);

}
void SED1335::GLCD_WriteText(char * text){
 GLCD_WriteCommand(SED1335_MWRITE);
 while(*text)
 GLCD_WriteData(*text++);
}
void SED1335::GLCD_SetCursorAddress(unsigned int address){
 GLCD_WriteCommand(SED1335_CSRW);
 GLCD_WriteData((unsigned char)(address & 0xFF));
 GLCD_WriteData((unsigned char)(address >> 8));

}
void SED1335::GLCD_GraphicGoTo(unsigned int x, unsigned int y)
{
 GLCD_SetCursorAddress(SED1335_GRAPHICSTART + (y * 40) + x/8);
}
void SED1335::GLCD_TextGoTo(unsigned char x, unsigned char y)
{
 GLCD_SetCursorAddress((y * 40) + x);
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void SED1335::GLCD_ClearText(void)
{
 int i;
 GLCD_TextGoTo(0,0);
 GLCD_WriteCommand(SED1335_MWRITE);
 for(i = 0; i < 1200; i++)
 GLCD_WriteData(' ');
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void SED1335::GLCD_ClearGraphic(void)
{
 unsigned int i;
 GLCD_SetCursorAddress(SED1335_GRAPHICSTART);
 GLCD_WriteCommand(SED1335_MWRITE);
 for(i = 0; i < (40 * 240); i++)
 GLCD_WriteData(0x00);
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
/*void SED1335::GLCD_Bitmap(prog_uchar * bmp, int x, int y, int width, int height)
{
 byte bitmap;
 int j=0;
 for(int h = 0; h < height; h++)
 {
 GLCD_GraphicGoTo(x,y+h);
 GLCD_WriteCommand(SED1335_MWRITE);
 for(int i = 0; i < width; i++)     //(PIXELS PER LINE/FONT WIDTH * NUMBER OF LINES)
 {
   bitmap = pgm_read_byte_near(bmp+(i+j));
   GLCD_WriteData(GLCD_ReadByteFromROMMemory(bmp+j+i));
 }
 j=j+width;
 }
}*/
void SED1335::GLCD_Bitmap(unsigned char * bmp, int x, int y, int width, int height)
{
unsigned int i, j;
for(i = 0; i < height ; i++)
 {
 GLCD_GraphicGoTo(x, y+i);
 GLCD_WriteCommand(SED1335_MWRITE);
 for(j = 0; j < width/8; j++)
 GLCD_WriteData(GLCD_ReadByteFromROMMemory(bmp+j+(40*i)));
 }
}
unsigned char SED1335::GLCD_ReadByteFromROMMemory(unsigned char * ptr)
{
 return pgm_read_byte_near(ptr);
}

void SED1335::GLCD_createLine(int x0,int y0,int x1,int y1,int color){
 boolean steep = abs(y1 - y0) > abs(x1 - x0);
  if(steep){
    //swap(x0, y0)
    //swap(x1, y1)
    int tmp=x0;
    x0=y0;
    y0=tmp;
    tmp=x1;
    x1=y1;
    y1=tmp;
  }
  if(x0 > x1){
    //swap(x0, x1)
    //swap(y0, y1)
    int tmp=x0;
    x0=x1;
    x1=tmp;
    tmp=y0;
    y0=y1;
    y1=tmp;
  }
  int deltax = x1 - x0;
  int deltay = abs(y1 - y0);
  int error = deltax / 2;
  int ystep=-1;
  int y = y0;
  if(y0 < y1){ystep= 1;}
  for(int x =x0;x<=x1;x++){
    if(steep){GLCD_SetPixel(y,x,color);}else{GLCD_SetPixel(x,y,color);}
    error = error - deltay;
    if(error < 0){
      y = y + ystep;
      error = error + deltax;
    }
  }
}

void SED1335::GLCD_drawRect(int x,int y,int height,int wight,int color){
  int j;
  for (j = 0; j < height; j++) {
  GLCD_SetPixel(x, y + j, color);
  GLCD_SetPixel(x + wight - 1, y + j, color);
 }
  // Draw horizontal lines
  for (j = 0; j < wight; j++) {
  GLCD_SetPixel(x + j, y, color);
  GLCD_SetPixel(x + j, y + height - 1, color);
 }

}

void SED1335::GLCD_fillRect(int x1, int y1, int x2, int y2, int color){
 for (int i = y1; i <= y2; i++)
 GLCD_createLine(x1, i, x2, i, color);

}

void SED1335::GLCD_createCircle(int x0, int y0, int radius, int color){
 int16_t f = 1 - radius;
  int16_t ddF_x = 1;
  int16_t ddF_y = -2 * radius;
  int16_t x = 0;
  int16_t y = radius;

  GLCD_SetPixel(x0, y0+radius, color);
  GLCD_SetPixel(x0, y0-radius, color);
  GLCD_SetPixel(x0+radius, y0, color);
  GLCD_SetPixel(x0-radius, y0, color);

  while (x<y) {
    if (f >= 0) {
      y--;
      ddF_y += 2;
      f += ddF_y;
    }
    x++;
    ddF_x += 2;
    f += ddF_x;

    GLCD_SetPixel(x0 + x, y0 + y, color);
    GLCD_SetPixel(x0 - x, y0 + y, color);
    GLCD_SetPixel(x0 + x, y0 - y, color);
    GLCD_SetPixel(x0 - x, y0 - y, color);
    GLCD_SetPixel(x0 + y, y0 + x, color);
    GLCD_SetPixel(x0 - y, y0 + x, color);
    GLCD_SetPixel(x0 + y, y0 - x, color);
    GLCD_SetPixel(x0 - y, y0 - x, color);

  }
}

Vas muy mal encaminado.

Tienes una libreria que has llamado RA8835_arduino y que has copiado de un sitio sin ni siquiera leer por encima el código.

Bien. La libreria no define ningún objeto llamado RA8835_arduino, sino todo al contrario, SED1335. Asi que abre el fichero .h y verás el objeto, con sus funciones. Ese sketch no es válido para nada.

Yo empezaría por intentar saber que tipo de conexión tiene el lcd, como va leyendo el datasheet y luego comprobaria si el SED1315 y el RA8835 son compatibles. Si lo son, probaria a ver si funciona la libreria con codigos simples, sin cortar ni pegar.

Por ejemplo:

#include <RA8835_arduino.h>

SED1335 lcd;

void setup()
{
   lcd.GLCD_Iniatialize();
}

void loop()
{
   lcd.GLCD_WriteText("Hola Mundo");
}

Ya me parecía que estabas equivocado desde el arranque. Victorjam te ha indicado perfectamente como trabajar. Ahora para la proxima un consejo: no dudes en poner siempre toda la información para que sepamos de que hablas. Si el archivo es grande, lo comprimes en extensión ZIP y lo subes usando la opción de Adjunto que no sale inmediatamente. Dos caminos para saber como hacerlo. Lees las normas del foro y miras como lo explica con detalle o bien, versión rápida. Vas a More (a la derecha abajo), vas a Modify y entonces veras que aparece abajo a la Izquierda Attachment.... y ahi buscas la ruta del archivo zippeado y lo subes.

es importante porque hubieramos resuelto tu problema en el 2do o 3er post. A tener en cuenta.

Hola

Gracias a los dos por los consejos.

Por lo que he podido averiguar el controlador RA8835 y el SED1335 son equivalentes.

Ya se que me estoy precipitando. Me pueden las ganas por comprobar si la pantalla en question funciona, ya que son pantallas deshechadas por viejas en mi trabajo. Y esta es la única que no esta rota, pero tengo que comprobar que funciona para no malgastar mas tiempo.

En cuanto pueda compruebo e sketch de victorjam. Y tambien revisaré las normas del foro.

Ya contaré como va la cosa

Feliz año a todo el foro.

Hola otra vez.

He utilizado el ejemplo que me propone victorjam, pero ahora al sketch le llamo Test_32x240 y me da el siguiente error:

Test_320x240.ino.ino: In function 'void setup()':

Test_320x240.ino.ino:7:8: error: 'class SED1335' has no member named 'GLCD_Iniatialize'

Error de compilación

#include "RA8835_arduino.h"

SED1335 lcd;

void setup()
{
   lcd.GLCD_Iniatialize();
}

void loop()
{
   lcd.GLCD_WriteText("Hola Mundo");
}

Feliz año 2016.

Ejem... copy paste, ¿verdad?

¿No has visto como he escrito el texto? lcd.GLCD_Ini[u]a[/u]tialize();. Esa "a" subrayada sobra. Pero es un ejemplo, ni siquiera he comprobado si compila, era una sugerencia escrita a pelo.

INSISTO: Si no te miras la libreria, poco vas a conseguir.

Hola.

Feliz 2016.

Si que he hecho copy paste, ¿habria otra forma de hacerlo aunque fuese para otro caso?

¿que es lo que hay que mirar en la libreria. Por algun sitio tengo que empezara aprender.

He encontrado la datasheet del controlador SED1335 que es equivalente al RA8835.

¿Sirve de algo la datasheet para entender y/o crear un libreria?

Gracias

Para que crear una librería que ya esta creada?

Lo del datasheet es para ver que grado de compatibilidad tienen el RA y el SED. De nada vale que te curres algo que está pensado para el SED si luego resulta que de nada te va a servir para el RA. No hace falta que te lo leas todo, pero al menos q sepas lo que tienes.

¿Cómo estamos de programación orientada a objetos? En el .h se define un objeto tipo SED o RA, me da igual. Dicho objeto tiene unas funciones que realizan una función o algo, como por ejemplo, escribir un texto o dibujar un pixel. En el .cpp, se define el cuerpo de esas funciones, es decir, lo que realmente hace dicha función.

El objetivo de que te mires el .h es para que veas las funciones, las conozcas y después usarla. Si no las conoces, ¿como pretendes usarlas?.

Así, cuando puse el ejemplo, y te dió el error de compilación, te habrías dado cuenta de que metí la pata hasta el fondo.

Debes conocer los registros de inicio del controlador del TFT que tienes, para que las librerias puedan acceder de forma correcta a las funciones de tu TFT.

Si no accedes a los parámetros correctos, el TFT nunca iniciará. No basta con solo "adaptar linea por linea".

Debes leer y familiarizarte con el datasheet forzosamente.

Hola a todos.

La verdad es que llevo poco tiempo con Arduino y su programacion. Y de programacion orientada a objetos apenas tengo idea. Pero no encuentro ningun sitio en Internet para aprender a programar.

Entonces agradeceria mucho que alguien me orientara para programar o crear una libreria o por lo menos decirme si hay algun website o algun manual para poder hacer estas cosas.

Como dice TFTLCDCyg tengo que conocer los registros de inicio del controlador del LCD. ya que si no accedo
a los parámetros correctos, el TFT nunca iniciará.Y “adaptar linea por linea”, no basta.
¿Que y cuales son los parametros y registros del LCD? ¿Como los interpreto? ¿Donde puedo orientarme sobre esas cosas?.

Gracias de nuevo a todos y perdonad si si soy un pesado. Quiero aprender.

Revisa este proyecto, dale atención a las librerias hechas en C:
http://en.radzio.dxp.pl/sed1335/

Al final hay un link de descarga, revisé un archivo que podría ayudarte, está diseñado con los parámetros para AVR, el archivo se llama: sed1335-avr.c

Posiblemente estén los parámetros de inicialización que necesitas para tu LCD, podrías usarlos para adaptar las librerias que encontraste.

//-------------------------------------------------------------------------------------------------
// 
//-------------------------------------------------------------------------------------------------
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

#define SED1335_DATA_PORT PORTC
#define SED1335_DATA_DIR DDRC
#define SED1335_DATA_PIN PINC

#define SED1335_CONTROL_PORT PORTD
#define SED1335_CONTROL_DIR DDRD
#define SED1335_CONTROL_PIN PIND

#define SED1335_A0 (1 << PD0)
#define SED1335_WR (1 << PD1)
#define SED1335_RD (1 << PD2)
#define SED1335_CS (1 << PD3)
#define SED1335_RES (1 << PD4)
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void GLCD_InitPorts(void)
{
SED1335_DATA_DIR = 0xFF;
SED1335_CONTROL_PORT |= (SED1335_A0 | SED1335_WR | SED1335_RD | SED1335_CS | SED1335_RES); 
SED1335_CONTROL_DIR |= (SED1335_A0 | SED1335_WR | SED1335_RD | SED1335_CS | SED1335_RES); 
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void GLCD_WriteData(unsigned char dataToWrite)
{
SED1335_DATA_PORT = dataToWrite;
SED1335_DATA_DIR = 0xFF;
SED1335_CONTROL_PORT &= ~(SED1335_CS | SED1335_A0 | SED1335_WR);
asm("nop");
SED1335_CONTROL_PORT |= (SED1335_CS | SED1335_A0 | SED1335_WR);
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
void GLCD_WriteCommand(unsigned char commandToWrite)
{
SED1335_DATA_PORT = commandToWrite;
SED1335_DATA_DIR = 0xFF;
SED1335_CONTROL_PORT &= ~(SED1335_CS |SED1335_WR);
asm("nop");
SED1335_CONTROL_PORT |= (SED1335_CS | SED1335_WR);
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
unsigned char GLCD_ReadData(void)
{
unsigned char tmp;
SED1335_CONTROL_PORT &= ~(SED1335_CS | SED1335_RD);
asm("nop");
SED1335_DATA_DIR = 0x00;
asm("nop");
tmp =  SED1335_DATA_PIN;
SED1335_CONTROL_PORT |= (SED1335_CS | SED1335_RD);
return tmp;
}
//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
unsigned char GLCD_ReadByteFromROMMemory(unsigned char * ptr)
{
return pgm_read_byte(ptr);
}
//-------------------------------------------------------------------------------------------------
//--------------------------------------------------------------

PD: desafortunadamente recuerdo que los datasheets de pantallas como la que tienes se preocupaban mas por las dimensiones de la pantalla y el pinout que por los parámetros de control, corrientes y voltajes de cada linea. Esperemos que tengas suerte y no sea el caso con la que tienes.

Si luego de un par de días no consigues que funcione, es mejor que pienses en conseguir una pantalla similar, esos chip-drivers dan bastantes problemas con la lógica de voltaje que luego acostumbran usar los fabricantes, GLCD´s basados en el KS0108 pueden ser un buen punto de partida. O bien puedes pasar al siguiente nivel con una ILI9341 táctil de 2.4"