Hola muy buenas, soy un nuevo Arduinista, hoy mismo he recibido mi placa duemilanove y algunas cositas más:
-Una Pantalla LCD de 16X2 GDM1602K
-Un servo...
Ahora mismo me encuentro intentar hacer el típico hola mundo con el LCD, pero no la consigo poner en funcionamiento he probado varias cosas, he visto mucho tutoriales de conexión. pero nada, no se si es la pantalla que me ha salido mala.
Aquí dejo el conexionado que he utilizado:
Como vereis el contraste no lo he conectado a nada, pero en las pruebas lo he puesto directamente a 5v y luego a masa y en masa hace un indicio pero nada.
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Con esta última prueba lo he probado con la opción 2 como podéis observar en el código y el esquema.
y nada ¿Alguna idea?
Yo ahora ando haciendo un reloj con termómetro y excepto algunas cosas que tengo que depurar ya funciona bastante bien, para representar la hora y la temperatura tengo un LCD de 20 x 4 que básicamente es igual que el tuyo en el esquema del que saqué la información en el pin 3 del LCD tenía un potenciómetro pero como no tengo le he puesto una resistencia de 1K, después de leer tu post se la he quitado y en la pantalla no se ve nada, así que creo que ahí puede estar el problema.
Lo que puedes hacer es cargar el ejemplo que viene con arduino, si te funciona pues haces tu programa, si no funciona revisa las conexiones, es el método de ensayo error que uso yo.
Ante todo muchas gracias por contestar a todos tan pronto.
-Hola vic20: He probado lo que me has dicho y le he puesto de 5v a una resistencia de 1K al pin V0 del contraste y nada.
-Hola miguelec2007: He leído un poco por encima el post y me parece que lo conseguistes al poner el RW a masa, como en el esquema de Chiva.
-Hola Chiva: He puesto más o menos como lo tienes tu ahí, en el esquema saltandome lo del pin 13 con el pin y la resistencia (Que por cierto en la duemilanove el pin 13 no es el ledpin el que ya tiene la resistencia incorporada para un led?) que no entiendo para que está puesto. (Haaam viendo otra vez el circuito veo que es el hardware en sí de la duemilanove por que también está puesto el pulsador de reset y el led de PWR oki pues nada, he probado tal y como lo tienes ahí y nada.
¿Tendrá algo que ver, con el no haber conectado los 2 ultimos pines (A, K)?
He comprobado con el polimetro en continuidad para ver si es que había realizado mal las soldaduras del LCD y parece que no.
Otra cosa que se me acaba de ocurrir, es que no todos los LCD tienen el mismo patillaje de salida, aunque sean el HDnoseque, mirate la hoja de características para estar seguro.
Bueno despues de varias pruebas he decidido pasarme y comprarme un potenciometro de 10k y al final era eso. en un extremo del contraste está todo negro y en el otro extremo todo blanco, así que si no lo ajustas manualmente con un potenciometro no ves nada.
Un saludo a todos y muchas gracias por la ayuda prestada!
Hola amigos estoy intentando con el arduino el LCD y 2 pulsador, interactuar entre todo esto.
Mi intención es que cuando pulso un pulsador aparezca en el LCD como que lo he pulsado. y cuando no pulso nada, pues eso, que aparezca otro texto.
El código que he escrito hace que me aparezcan caracteres en la pantalla pero que no paran de moverse muy locos.
Adjunto el código:
// Includes:
#include <LiquidCrystal.h>
// Ponemos en los pines las Entradas/Salidas:
const int pulsador1=0; /* Pin del pulsador 1 */
const int pulsador2=1; /* Pin del pulsador 2 */
//Constantes que cambiamos:
int Estadopulsador1=0;
int Estadopulsador2=0;
// LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
//Inicializamos el pulsador como salida
pinMode(pulsador1, INPUT);
//Introducimos el tipo de LCD que utilizamos
lcd.begin(16, 2);
// Escrimos en el LCD
//*lcd.print("hello, world!");
//Situar el cursor en la columna 0 y la fila 1
//*lcd.setCursor(0,1);
//*lcd.print("Prueba!!");
}
void loop() {
Estadopulsador1 = digitalRead(pulsador1);
Estadopulsador2 = digitalRead(pulsador2);
if(Estadopulsador1 == HIGH){
lcd.print("Pulsador1");
}
else{
lcd.print("Nada pulsado");
}
if(Estadopulsador2 == HIGH){
lcd.print("pulsador2");
}
else{
lcd.print("Nada pulsado");
}
}
El código parece que tiene sentido ¿no?
Un saludo.
Si lo que vas a hacer no tiene mucha necesidad de tiempo
// Includes:
#include <LiquidCrystal.h>
// Ponemos en los pines las Entradas/Salidas:
const int pulsador1=0; /* Pin del pulsador 1 */
const int pulsador2=1; /* Pin del pulsador 2 */
//Constantes que cambiamos:
int Estadopulsador1=0;
int Estadopulsador2=0;
// LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
//Inicializamos el pulsador como salida
pinMode(pulsador1, INPUT);
//Introducimos el tipo de LCD que utilizamos
lcd.begin(16, 2);
// Escrimos en el LCD
//*lcd.print("hello, world!");
//Situar el cursor en la columna 0 y la fila 1
//*lcd.setCursor(0,1);
//*lcd.print("Prueba!!");
}
void loop() {
Estadopulsador1 = digitalRead(pulsador1);
Estadopulsador2 = digitalRead(pulsador2);
if(Estadopulsador1 == HIGH){
lcd.print("Pulsador1");
[glow]delay(5)[/glow]
}
else{
lcd.print("Nada pulsado");
}
if(Estadopulsador2 == HIGH){
lcd.print("pulsador2");
[glow]delay(5)[/glow]
}
else{
lcd.print("Nada pulsado");
}
}
El valor del delay sería ir probando ya que depende de variables físicas asi que no se cual sería el correcto.
diablet69, tu código soluciona que al apretar el botón no se refresque la pantalla constantemente (que puede ser otro problema y que a lo mejor también tenga) pero el debouncing no lo soluciona. El ideal sería una una mezcla de los dos.
Si nos puedes decir cuando te salen los carácteres raros, mucho mejor, sin hacer nada, un momento al apretar el botón, mientras lo tienes apretado, etc.
Hola Chiva, le he puesto los delay(5); y nada.
¿Cuando pasa?:
Nada más conectar el USB se enciende todo y empiezan a correr las palabras por el LCD.
No hace falta que toque ningún pulsador para que no funcione.
He hecho otro código y he conseguido que me funcionara.
//Interactua con un pulsador el LCD
#include <LiquidCrystal.h>
const int pulsador1 = 1; //pulsador 1 al pin 1
const int pulsador2 = 2; //pulsador 2 al pin 2
int estado1 = 0; //inicializamos en 0
int estado2 = 0; //inicializamos en 0
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
void setup() {
pinMode(pulsador1, INPUT); //Pulsador1 entrada
pinMode(pulsador2, INPUT); //Pulsador2 entrada
lcd.begin(16, 2); //LCD de 16x2
lcd.print("Esta pulsado:"); //imprimir en LCD
}
void loop() {
estado1 = digitalRead(pulsador1); //leer pulsador1 y guardarlo en estado1
estado2 = digitalRead(pulsador2); //leer pulsador2 y guardarlo en estado2
lcd.setCursor(0, 1); //Situar el curson en la columna 0 fila 1
if (estado1 == HIGH) { //Si el pulsador 1 esta en "ON" imprimir 1
lcd.print("1 ");
delay(5); //Esperar 5mS
}
else { //Si no está pulsado
if (estado2 == HIGH) { //Si está pulsado pulsador2 imprime 2
lcd.print("2 ");
}
else { //Si no está pulsado
lcd.print("NO"); // imprime NO
delay(5); //Esperar 5mS
}
}
}
Pd: Si cambio el:
const int buttonPina = 2;
Por:
const int buttonPina = 0;
y cambio el pulsador de pin al 0 no me va ¿El pin 0 del Arduino es un pin especial o algo? que no me funciona?
Como está escrito en la placa, los pines 0 y 1 son los que realizan las funciones de comunicación serie, por lo que a lo mejor si lo tienes conectado al PC pues influye algo, en teoría no debería pasar nada