Go Down

Topic: Display en LCD 16x2 (Read 283 times) previous topic - next topic

Rodrigo89

Hola! Este es mi primer post, así que espero no escribirlo mal. El caso es que estoy intentando que me funcione un proyecto que estoy creando para la universidad y no consigo que me funcione el display del LCD. Adjunto el código y el esquema que he seguido (todo lo he hecho yo usando tutoriales y conocimiento propio).

Por cierto, sospecho que es un problema de conexión porque el código compila correctamente... Además también tengo un problema con el lector de RFID, que no lee, pero eso es otro post aparte...

Muchas gracias por adelantado.




Code: [Select]
#include <LiquidCrystal.h>
#include <SPI.h>
#include <MFRC522.h>

const int pinBuzzer = 8;

const int RST_PIN = 9; // Pin 9 para el reset del RC522
const int SS_PIN = 13; // Pin 13 para el SS (SDA) del RC522

MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear instancia del MFRC522

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup() {
  Serial.begin(9600); //Inicializa la velocidad de Serial
  while (!Serial); //Mientras no se inicialice el puerto no hacemos nada
  // Inicializar el LCD con el número de  columnas y filas del LCD
  lcd.begin(16, 2);
  Serial.println("LCD inicializado correctamente.");
   
  SPI.begin(); //Función que inicializa SPI
  mfrc522.PCD_Init(); //Función  que inicializa RFID
  Serial.println("Lectura del RFID se inicializó correctamente.");
 
}

void loop() { 
  lcd.clear();
  String texto = "";
  Serial.println("LCD limpio.");   
  if (!mfrc522.PICC_IsNewCardPresent()) {
    Serial.println("No hay tarjeta RFID");
      texto = "Tranquilidad";           
      escribirEnLCD(texto);
    //suenaBuffer();   
    return;
  }
 
 // Detectar tarjeta
   if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
      Serial.println("Tarjeta RFID detectada."); 
      texto = "¡Ruido!";           
      escribirEnLCD(texto);
      suenaBuffer();   
   }
   delay(2000);   
}

void suenaBuffer(){
  //generar tono de 440Hz durante 1000 ms
  tone(pinBuzzer, 440);
  delay(1000);
  //detener tono
  noTone(pinBuzzer);
}

void escribirEnLCD(String texto){
  lcd.setCursor(0,0);
  lcd.print(texto);
}

Rodrigo89

Ay! Se me olvidó comentar que estoy con una placa de Arduino UNO R3. Concretamente es un ELEGOO.

Gracias!

tauro0221

Hi,
Creo que tu tienes los pines al reves. El pin uno es el primero a la izquierda.

Rodrigo89

Hola Tauro!

Gracias! Ya lo he arreglado. Era un problema de conexiones y de usar un encoder en lugar de un potenciómetro (sí, es para matarme).

El código está bien, aunque me falta un delay(10000); al mostrar el texto en la pantalla para que le de tiempo a la pantalla a mostrarlo.

Ahora escribo el post del RFID jajajaja y a ver quién es más rápido, si la comunidad o yo :)

Muchas gracias y saludos!


Rodrigo89

Hola!

Algunos me conoceréis por mi post anterior. Tengo un problemilla con las conexiones del lector RFID es un RC522 de la marca ELEGOO. La placa que utilizo es un Arduino UNO R3. Estoy intentando que me detecte la tarjeta al pasarla por encima del sensor pero no lo consigo... Os adjunto código y el esquema.

Gracias!

Un saludo.



Code: [Select]
#include <LiquidCrystal.h>
#include <SPI.h>
#include <MFRC522.h>

const int pinBuzzer = 8;

const int RST_PIN = 9; // Pin 9 para el reset del RC522
const int SS_PIN = 13; // Pin 13 para el SS (SDA) del RC522

MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear instancia del MFRC522

//Crear el objeto LCD con los números correspondientes (rs, en, d4, d5, d6, d7)
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

void setup() {
  Serial.begin(9600); //Inicializa la velocidad de Serial
  while (!Serial); //Mientras no se inicialice el puerto no hacemos nada
  // Inicializar el LCD con el número de  columnas y filas del LCD
  lcd.begin(16, 2);
  Serial.println("LCD inicializado correctamente.");
    
  SPI.begin(); //Función que inicializa SPI
  mfrc522.PCD_Init(); //Función  que inicializa RFID
  Serial.println("Lectura del RFID se inicializó correctamente.");
  
}

void loop() {  
  lcd.clear();
  delay(5000);
  String texto = "";
  Serial.println("LCD limpio.");    
  if (!mfrc522.PICC_IsNewCardPresent()) {
    Serial.println("No hay tarjeta RFID");
      texto = "Tranquilidad";          
      escribirEnLCD(texto);
    //suenaBuffer();    
    return;
  }
  
 // Detectar tarjeta
   if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
      Serial.println("Tarjeta RFID detectada.");  
      texto = "¡Ruido!";          
      escribirEnLCD(texto);
      suenaBuffer();  
   }
   delay(2000);    
}

void suenaBuffer(){
  //generar tono de 440Hz durante 1000 ms
  tone(pinBuzzer, 440);
  delay(1000);
  //detener tono
  noTone(pinBuzzer);
}

void escribirEnLCD(String texto){
  lcd.setCursor(0,0);
  lcd.print(texto);
  delay(5000);
}




yv1hx

[...snip...] de usar un encoder en lugar de un potenciómetro (sí, es para matarme).
[...snip...]
No lo tomes a mal, pero si confundes un Encoder con un potenciometro...emmm...creo que deberias revisar tus conocimientos.

Marco-Luis
Researcher, Telecom Specialist at www.meteoven.org

surbyte


surbyte

Por favor, no doble postees.
Tenias dos hilos con el mismo tema, el RC522 que no funciona, mas allá que hables del LCD, tmb mencionas el Lector.
Asi que ahora están unificados.

Go Up