AYUDA PROYECTO LCD CON ARDUINO

HOLA NECESITO AYUDA PARA PODER ECHAR A ANDAR UN LCD CONECTADO VIA ARDUINO

EL PROYECTO ES UN VOLANTE DE SIMULACION PARA F1, ESTE EN CONCRETO

EL LCD QUE HE UTILIZADO ES ESTE

http://www.ebay.es/itm/Arduino-lcd-i2c-SPI-module-graphics-display-128x64-Azul-Graphic-Module-ST7920/321431389186?_trksid=p2046732.c100040.m2060&_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D20140107095009%26meid%3D8307490415225990627%26pid%3D100040%26prg%3D20140107095009%26rk%3D1%26rkt%3D4%26sd%3D321431389186

Y EL ARDUINO ES EL UNO

LAS CONEXIONES QUE HE ECHO SON ESTAS SEGUN EL DISTRIBUIDOR DEL LCD QUE ES ESTA:
http://www.electronicca.com/donwloads-guides/st7920%20serial%202.pdf

Y EL CASO ES QUE NO SOY CAPAZ DE ECHARLO A NADAR, SI SE ILUMINA CUANDO LO CONECTO AL PC, PERO NADA MAS QUE ESO HE CONESGUIDO

PERO POR FALTA DE CONOCMIENTOS NO SE PROGRAMARLO NI EHCARLO A ANDAR

ALGUIEN PODRIA ECHARME UNA MANO???

MUCHAS GRACIAS DE ANTEMANO

En youtube.com tienen varios videos sobre el displar 12864.
Me gustaría saber de sus avances ya que estoy tratando de conseguir un display de esos para hacer proyectos con él.

En especial me gustó uno que tiene la siguiente información.

El video es: Tutorial Arduino: Pantalla Serial LCD 128x64 - BricoGeek.com - YouTube
Tutorial completo:
No se encuentra la categoría! - BricoGeek.com...

Pantalla Serial LCD 128x64:
http://www.bricogeek.com/shop/pantall...

Vídeo realizado por TCRobotics:

En este otro video Arduino mega with 128x64 graphic LCD - YouTube trabajan con la libreria GLCD v3 que habría que buscarla por google.com para ver si sirve para su proyecto.

Buen día.

Encontré que google tiene una libreria para manejar el LCD 12864

https://code.google.com/p/u8glib/

ya he probado la libreria y me da un monton de errores y no sale nada en pantalla

alguien que tenga experiencia en el tema podira repasar lo que he puesto en el primer post y decirme si esta todo correcto porfavor

se lo agradeceria eternamente

gracias y un saludo

Aquí hay otro ejemplo, desarrollado con libreria y código.

http://www.genotronex.com/2013/07/12864-glcd.html

Sería bueno que mencionara bien que cosas ha hecho para cuando tenga el display, esta semana, no caer en las mismas cosas. Asi avanzariamos más rápido.

lo que no veo para descargar es la libreria u8glib :cold_sweat: :cold_sweat: :cold_sweat:

y el codigo que hay que meter en arduino es todo esto no???
#include "U8glib.h"

// draw Circle
//www.Genotronex.com
//Mohannad Rawashdeh
U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE);// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
// SPI Com: SCK = en = 13, MOSI = rw = 11, CS = di = 12
void setup(void){

// Get starting !
u8g.setColorIndex(1); // pixel on !
Clear();
u8g.firstPage();
do{
intro();
}
while(u8g.nextPage() );
delay(1000);
}
void intro(void){
u8g .setFont(u8g_font_04b_03);
u8g.drawStr( 0, 10, " This Tuotorial will show you ");
u8g.drawStr( 0, 20, " How to draw Circle on GLCD ");
u8g.drawStr( 0, 30, " 12864 ST7920 controller ");
u8g.drawStr( 0, 40, " Editor:Mohannad Rawashdeh");

}
void Clear(void){
u8g .setFont(u8g_font_04b_03);
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}

void u8g_draw_circle(int r) {
u8g.drawStr( 0, 5, "Circle different Radius ");
u8g.drawCircle(20,40,5+r);
u8g.drawCircle(50,40,10+r);
u8g.drawCircle(88,40,15+r);
}
void u8g_draw_filled_circle(int r) {
u8g.drawStr( 0, 5, " filled Circle ");
u8g.drawDisc(20,40,5+r);
u8g.drawDisc(50,40,10+r);
u8g.drawDisc(88,40,15+r);
}
void u8g_draw_Nested_circle(int x , int y, int r,int d) {
u8g.drawStr( 0, 5, " filled Circle ");
u8g.drawCircle(x,y,3+r);
delay(d);
u8g.drawCircle(x,y,6+r);
delay(d);
u8g.drawCircle(x,y,10+r);
delay(d);
u8g.drawCircle(x,y,14+r);
delay(d);
u8g.drawCircle(x,y,18+r);
}

void loop(void){

// ..........
Clear();
u8g.firstPage();
do{
u8g_draw_circle(5);
}
while(u8g.nextPage() );
delay(2000);
// ..........
Clear();
u8g.firstPage();
do{
u8g_draw_filled_circle(5);
}
while(u8g.nextPage() );
delay(2000);
// ..........
Clear();
u8g.firstPage();
do{
u8g_draw_Nested_circle(50,40,3,0);
}
while(u8g.nextPage() );
delay(2000);

}

despues del done compiling

sale un mensaje que dice :
Binary sketch size: 7890 byte (of a 30720 byte maximun)

pd: el lcd se enciende y el potenciometro para el contraste funciona correctamente

GRACIAS por la ayuda y la paciencia

un saludo

yo lo unico que necesito es que sea esto

alguien puede decirme esquema y librerias o lo que haga falta porfavor.

navego por la red pero encuentro cientos de cosas diferentes pero ninguna en concreto que sea eso.

se agradece la ayuda

un saludo

esta explicado en el enlace del video...

http://q61.org/en/chibimo/build/

// ChibiMo Firmware
// Version 0.20110212
//
// (c)k.k. q61.org 2011.
// All rights reserved.
// This firmware is provided AS-IS. No warranty.

// pin assignment
// 13 -> PB5 -> /RESET
// 12 -> PB4 -> CS2
// 11 -> PB3 -> CS1
// 10 -> PB2 -> (NC)
// 9 -> PB1 -> DB7
// 8 -> PB0 -> DB6
// 7 -> PD7 -> DB5
// 6 -> PD6 -> DB4
// 5 -> PD5 -> DB3
// 4 -> PD4 -> DB2
// 3 -> PD3 -> DB1
// 2 -> PD2 -> DB0
// 1 -> PD1 -> (USART TxD)
// 0 -> PD0 <- (USART RxD)
// A5 -> PC5 -> E
// A4 -> PC4 -> RW
// A3 -> PC3 -> RS
// A2 -> PC2 -> (NC)
// A1 -> PC1 -> (NC)
// A0 -> PC0 -> (NC)

#define LCD_RESET_VAL 0x20
#define LCD_CS2_VAL 0x10
#define LCD_CS1_VAL 0x08
#define LCD_E_VAL 0x20
#define LCD_RS_VAL 0x08

static uint8_t g_cs;

void lcd_write(byte val, byte dt)
{
uint8_t valpc;
valpc = (dt) ? LCD_RS_VAL : 0;

PORTC = valpc;
PORTB = LCD_RESET_VAL | g_cs | (val >> 6);
PORTD = (val << 2);
PORTC |= LCD_E_VAL;
delayMicroseconds(1);
PORTC = valpc;
}

void lcd_init()
{
g_cs = (LCD_CS1_VAL | LCD_CS2_VAL);
delay(500);

lcd_write(0x3e, 0);
delay(500);

lcd_write(0x3f, 0);
delay(100);
lcd_write(0xc0, 0);
delay(10);
lcd_write(0xb8, 0);
delay(10);
lcd_write(0x40, 0);
delay(10);
}

void serial_init(long baud)
{
uint16_t baud_setting;

UCSR0A = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
UBRR0H = baud_setting >> 8;
UBRR0L = baud_setting;

UCSR0B = 1 << RXEN0;
}

volatile uint8_t serial_data_ready()
{
return ((UCSR0A & (1 << RXC0)) >> RXC0);
}

volatile uint8_t serial_data_read()
{
return (UDR0);
}

void setup()
{
DDRB = 0x3f;
DDRC = 0x3f;
DDRD = 0xfc;

lcd_init();

g_cs = 0;

serial_init(500000);

g_cs = (LCD_CS1_VAL | LCD_CS2_VAL);
for (uint8_t i = 0; i < 64; i++) {
lcd_write(i, 1);
delayMicroseconds(5);
}
}

void loop()
{
static uint8_t x = 0;
static uint8_t y = 0;
static uint8_t ph = 0;
static uint8_t pxdt[10];
uint8_t dt;

while (!serial_data_ready()) {
;
}

{
dt = serial_data_read();

switch (ph++) {
case 0:
if (dt & 0x80) {
ph = 0; // invalid address, reset state
} else {
y = dt >> 4;
g_cs = LCD_CS1_VAL + (dt & 0x08);
lcd_write(0xb8 | y, 0);
x = (dt & 0x07) << 3;
}
break;
case 1:
delayMicroseconds(5);
lcd_write(0x40 | x, 0);
pxdt[ph] = dt;
break;
case 2: case 3: case 4: case 5: case 6: case 7:
lcd_write(pxdt[ph - 1], 1);
pxdt[ph] = dt;
break;
case 8:
lcd_write(pxdt[ph - 1], 1);
delayMicroseconds(5);
lcd_write(dt, 1);
ph = 0;
break;
default:
ph = 0;
break;
}
}
}

lastima que solo valga para xp y no para windows 7 :drooling_face: :drooling_face: :drooling_face: :drooling_face: :drooling_face:

otro que no me vale, aparte que al hacer las conexiones no se ilumina el lcd

necesito esta funcion en concreto, he intentado el segundo enlace pero no va el programita que instala dos cosas y no se puede

que alguien me diga que es lo que necesito exactamente para poder hacerlo porfavor

tengo parado el proyecto por culpa de este problema, si tengo qeu comprar algo nuevo no me importa, solo quiero acabarlo.

muchs gracias de antemano