Go Down

Topic: Duemilanove + LCD (Read 17151 times) previous topic - next topic

Miguel.m.c.

#15
Jan 04, 2010, 03:38 pm Last Edit: Jan 04, 2010, 03:43 pm by Miguel.m.c. Reason: 1
¿ como puedo postear fotos ?
¿ como puedo cambiar el titulo del post para incluir solucionado?

Miguel.m.c.

A ver si la puedes ver:

Ando peleandome para aprender las llamadas de esta libreria , me da que la liquidcrystal es mejor.
en esta en la segunda linea me produce un parpadeo cuando se reinicia el loop , aparte tengo que aprender a reconvertir variables en caracteres
algo como char* , pero bueno , tiempo al tiempo
Muchas gracias , dejo el programa para quien quiera

// ejemplo de uso de la libreria LCD4Bit
#include <LCD4Bit.h> // llamada a la libreria

LCD4Bit lcd=LCD4Bit(2);// definicion de numero de lineas del lcd



void setup(){
lcd.init();// inicializacion del lcd

}

void loop() {
 

lcd.clear();// limpiar pantalla
 lcd.cursorTo(1,2);// linea 1 , caracter 2
 lcd.printIn("GRACIAS IGOR");
 lcd.cursorTo(2,5);// linea 2 , caracter 5
 lcd.printIn("Miguel");
 delay(2000);// le doy bastante tiempo para evitar parpadeo


}


igorreal

ja,ja,ja

Muy bueno!!


Pistas con tus problemas:
- Busca acerca de itoa y sprintf. (Recuerda que detrás de Arduino-Wiring hay C y puedes usarlo)
La librería utilizado en Arduino es:
http://www.nongnu.org/avr-libc/

- El parpadeo es porque estás refrescando todo el rato, ten en cuenta que estos lcd, una vez pasado los datos a su memoria, no necesitas refrescar. El lcd.clear en setup() reducirá tu parpadeo.... Bueno, en realidad todo en setup() iría perfecto (sólo se ejecuta una vez).


Cuidado con itoa, si quieres mostrar decimales y tu primera cifra decimal es un 0...


Yo he usado esta librería en varias cosillas, y sin problemas. :D


Ánimo!!




Igor R.


Miguel.m.c.

#19
Jan 05, 2010, 02:37 am Last Edit: Jan 05, 2010, 02:41 am by Miguel.m.c. Reason: 1
Para quien este siguiendo este hilo , esto le ayudara :

http://electrolabo.com/arduino/Mostrar%20valores%20en%20LCD%20con%20Arduino.pdf

¿ Que significa en este array los segundos corchetes y el 15 de dentro, no deberia tener solo el primer indicador   [ 6 ]  ? es del ejemplo que viene con la libreria lcd4bits

//some messages to display on the LCD
char msgs[6][15] = {"apple", "banana", "pineapple", "mango", "watermelon", "pear"};
int NUM_MSGS = 6;

Y el char*?

int pick = random(NUM_MSGS);
 char* msg = msgs[pick];


igorreal

Bienvenido al maravillo mundo de C y los punteros. Busca por google "punteros C" y encontrarás respuestas a char*.

Busca también "multidimensional array C" ó "matrices en C" ó "2 dimension array C"...

Hay mucha info por la red. Tomate un café, y ponte cómodo si ninguna vez has visto punteros... Lleva un rato entenderlo... (ó toda la vida  ;D)


;)

igorreal

#21
Jan 05, 2010, 10:57 am Last Edit: Jan 05, 2010, 11:00 am by igorreal Reason: 1
Por cierto, hay un buen libro de C , orientado para micros Atmel usando GCC (mismo compilador que Arduino):

"C Programming for Microcontrollers Featuring ATMEL's AVR Butterfly and the free WinAVR Compiler"
Joe Pardue
http://www.smileymicros.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=26

Son ejemplos para un ATmega 169, por lo cual es similar a Arduino.

Está en inglés.... :o



(ésto sólo para si quieres dar el siguiente paso con Arduino, tampoco es necesario)


Miguel.m.c.

Ya estoy con ello:

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Hay un libro para los pic :

http://www.agapea.com/libros/COMPILADOR-C-CCS-Y-SIMULADOR-PROTEUS-PARA-MICROCONTROLADORES-PIC-isbn

A lo mejor voy a por el

Dios , yo siempre habia ido esquivando el C  :-/

Miguel.m.c.

Joder ( con perdon ) este eres tu :

http://real2electronics.blogspot.com/

tengo en mi escritorio el linkduino

A sus pies maaestro

P:D: pero cuando coño comes tu ? :o

Outl4w

Jajaja no come, es una máquina (posiblemente hecha con Arduino).

La verdad es que es un crack, pedazo trabajos que se pega.

Salu2.

igorreal

ja,ja,ja... Gracias, pero no es para tanto.... :-[
Me lo paso bien... es mi hobby!!   ;)

El libro que te he puesto, es específicamente sobre C que puedes utilizar en Arduino. Te explica timers,uart,interrupciones,...con los registros de atmel (de todas formas, hay bastante info por internet) .

La web cplusplus está muy bien.

El Linkduino es con lo último que estoy jugando, pienso que tiene un gran potencial...A ver si se anima más gente hacer cosillas y lo más importante, explicarlas!!!  con foneras, asus, linksys,...


Gracias a los dos!!! A ver si se portan bien los reyes.... ;)




Igor R.

Miguel.m.c.

#26
Jan 17, 2010, 07:39 pm Last Edit: Jan 17, 2010, 07:47 pm by Miguel.m.c. Reason: 1
no toque la libreria lcd4bit, solo la lei para comprobar las conexiones y luego aplicarlas pues en su momento lo habia hecho mal.
nunca consegui hacer funcionar la liquidcrystal , aunque creo que se puede hacer, he visto en algunos programas meter un retardo antes de empezar.
yo no soy ningun entendido pero echando un vistazo al interior de las librerias se pueden entender mejor, creo que mas arriba estan las conexiones que utilice y con las que me funciono a la primera
estas son:

DB4--------pin7
DB5--------pin8
DB6--------pin9
DB7--------pin10
RS----------pin12
RW---------pin11 o a masa
Enable-----pin2
Configurar en el encabezado del programa para 2 lineas

Heke

Hola a todos

Queria comentar respecto a la libreria de comunicacion con el lcd liquidcrystal, funciona perfectamente en un display tipo HD44780.

Yo sin modificar libreria pero si pines porque he empleado una placa serie con un atmega-8 te puedo asegurar que funciona con el mismo soft de ejemplo y con cuatro bits.

Lo que si he observado es que si empleas el comando de inicializar el serie, o sea Serial.begin, no funciona por lo que entiendo que la libreria liquidcrystal debe de inicializar a una velocidad determinada o choca con la definicion.

Un saludo

Heke

#28
Mar 04, 2010, 06:50 pm Last Edit: Mar 04, 2010, 09:33 pm by Heke Reason: 1
Ahh, el codigo ejemplo que he empleado:
Code: [Select]
#include <LiquidCrystal.h> // include the library code:
LiquidCrystal lcd(5, 4, 3, 2, 1, 0); // initialize the library with the numbers of the interface pins

void setup() {
 pinMode(7, OUTPUT);  
 digitalWrite(7, HIGH);  // set the LED on  
 lcd.begin(16, 2);       // set up the LCD's number of rows and columns:

}

void loop() {
  lcd.setCursor(0, 0);
  // Regla ("1......8......16")
  lcd.print("Saludos a todos ");// Print a message to the LCD.
  lcd.setCursor(0, 1);
  lcd.print("del Newbie: Heke");// Print a message to the LCD.  
}


Y la placa:


Bueno, descubierta una incompatibilidad: resulta que si empleo pines distintos a los que asignó el creador de la libreria liquidcrystal, como he hecho yo, en vez de emplear los suyos:

  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

he empleado los mios:

 LiquidCrystal lcd(5, 4, 3, 2, 1, 0);

Y le pongo inicializar el puerto serie con Serial.begin(9600);  el display no va, pero si dejo el mismo programa con los pines que dice el programador si que va. Vaya tela.....

Miguel.m.c.

Saludos Heke , Hace ya mucho tiempo del tema del lcd pero te aseguro que los ejemplos con los que probaba no usaban el puerto serie , pues eran mas sencillos , generalmente probaba a leer una entrada analogica.  
Seguro que me equivoque alguna vez pero no todas , que fueron muchisimos los intentos que realice , no echo la culpa a la placa mas bien creo que son los displays , hay cientos de fabricantes y quiza no todos sean 100 *100 compatibles.

Go Up