entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

problema arduino lcd: no funciona

estoy haciendo una maquina. quiero que aparezca un texto(que no cabe) en la linea de arriba y debajo la temperatura.
hice esto pero la pantalla no hace nada:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() { 
  lcd.begin(16, 2);
}
int temp = analogRead(A0);
void loop() {
  lcd.setCursor(0, 0);
  lcd.print("inserte una");
  lcd.setCursor(0, 1);
  lcd.print(temp);
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("moneda");
  lcd.setCursor(0, 1);
  lcd.print(temp);
  lcd.clear();
}

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola endes-gogo,

lo ideal con el hardware Arduino es primero probar algún ejemplo que suministre el fabricante, para descartar que el problema no sea fallo del shield o un mal conexionado.

El fabricante habitualmente provee ejemplos y ahí también podrás fijarte si este LCD usa la biblioteca LiquidCrystal.h o si usa otra, porque hay fabricantes que usan sus propias bibliotecas.

Una vez que descartes que no es problema del código o del cableado, recién ahí podés escribir tu código tranquilo sabiendo que todo funciona.

Si nos decís la marca y modelo del LCD y el modelo de Arduino que estás usando, podemos ver mejor qué podría estarte pasando. También un esquema o foto de tu conexionado actual sería útil.

Saludos!

0voto

endes gogo comentado

ya he probado la pantalla y la librería es correcta.

0voto

Leonardo-Tadei comentado

Podrías copiar y pegar el código de ejemplo que probaste para compararlo con el tuyo?

0voto

endes gogo comentado

/*
  LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight()

 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.

 This sketch prints "Hello World!" to the LCD and uses the
 scrollDisplayLeft() and scrollDisplayRight() methods to scroll
 the text.

  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (http://www.ladyada.net)
 example added 9 Jul 2009
 by Tom Igoe 
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

 http://arduino.cc/en/Tutorial/LiquidCrystalScroll

 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");
  delay(1000);
}

void loop() {
  // scroll 13 positions (string length) to the left 
  // to move it offscreen left:
  for (int positionCounter = 0; positionCounter < 13; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft(); 
    // wait a bit:
    delay(150);
  }

  // scroll 29 positions (string length + display length) to the right
  // to move it offscreen right:
  for (int positionCounter = 0; positionCounter < 29; positionCounter++) {
    // scroll one position right:
    lcd.scrollDisplayRight(); 
    // wait a bit:
    delay(150);
  }

    // scroll 16 positions (display length + string length) to the left
    // to move it back to center:
  for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    // scroll one position left:
    lcd.scrollDisplayLeft(); 
    // wait a bit:
    delay(150);
  }

  // delay at the end of the full loop:
  delay(1000);

}

0voto

Leonardo-Tadei comentado

Hola Endes-gogo,

te comento unas cosas que pueden estarte dando problemas en tu código (no tengo a mano un LCD de 16 x 2 para probarlo):

1) asignás int temp = analogRead(A0); afuera del loop(), lo que significa que leerás una vez el valor de A0, pero este no cambiará nunca. Si querés que cambie, hacé la lectura dentro del loop() y para tener el primer valor hacé otra lectura en el setup().

2) hacé una pequeña pausa después de cada print() la velocidad del reloj de Arduino y su manejo de interrupciones hace que no le de tiempo a terminar de procesar la escritura cuando ya estás cambiando la salida, con lo que la el primer print() puede perderse... y como el segundo puede estar vacíó por no estr leyendo en el setup(), podría ser que no llegues a ver nada.

Cambiá el código para que sea algo como:

void loop() {
  int temp = analogRead(A0); // Lee de la entrada analógica
  lcd.setCursor(0, 0);
  lcd.print("inserte una");
  delay(150); // wait a bit:
  lcd.setCursor(0, 1);
  lcd.print(temp);
  delay(1000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("moneda");
  delay(150); // wait a bit:
  lcd.setCursor(0, 1);
  lcd.print(temp);
  lcd.clear();
}

Contanos como te fue!

0voto

endes gogo comentado

muchísimas gracias en cuanto lo de la pantalla sin nada era un error del compilador. lo demás era problema del código.
este es el código final:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() { 
  lcd.begin(16, 2);
}
void loop() {
  int temp = analogRead(A0); // Lee de la entrada analógica
  lcd.setCursor(0, 0);
  lcd.print("inserte una");
  delay(150); // wait a bit:
  lcd.setCursor(0, 1);
  lcd.print(temp);
  delay(5000);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("moneda");
  delay(150); // wait a bit:
  lcd.setCursor(0, 1);
  lcd.print(temp);
  delay(5000);
  lcd.clear();
}

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta