Buenas noches, les pido ayuda para resolver un problema, mi situación es que tengo un proyecto de una casa domotica la cual (aquí viene el problema) quiero que tenga una puerta la cual se abra con un sensor rfid y lo muestre en una pantalla LCD de 4 pines si se abre o no y que la abra con un servo motor.
El problema viene que cuando ya esta el código con el número de la tarjeta muestra "la tarjeta no es la correcta" espero que alguien me ayude por favor.
Alguien que me ayude con el código por favor.
Este código es para sacar el código de la tarjeta
He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español@sotocade11 .
En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.
Gracias a los compañeros del foro por mantener organizado el mismo.
Moderador:
Por favor, lee las Normas del foro
Edita tu título, usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.
5. Piensa un título y descriptivo
Trata de resumir tu problema con un título inteligente, útil e informativo.
Un título útil salta a la vista de las personas que podrían conocer la respuesta. Los títulos inútiles son los que deberías evitar.
Ejemplos de títulos inútiles que deberías evitar:
• ERROR EN CODIGO, AYUDA URGENTE
• Problema al programar
• Tengo un error
• Error
• Tendré problemas?
• Novato en apuros
• POR FAVOR NECESITO AYUDA RAPIDO!!!!
Separa las cosas, primero prueba tu RFID y asegúrate que funciona bien.
Ejemplo básico de la librería.
Pones la tarjeta y te debe decir, tarjeta OK o Hola Sotocade!
Asi que vamos por ahi primero!!
Luego de evaluar tu código me di cuenta que el código tiene muchos errores y delay(), tanto que te sugiero que pruebes este.
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
const String MASTER_UID = "043A29B7"; // UID de tu tarjeta
byte lock = 0; // Estado de la cerradura (0: cerrada, 1: abierta)
unsigned long previousMillis = 0; // Para manejar el temporizador
const unsigned long lockDelay = 1500; // Tiempo de espera en milisegundos
Servo servo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
servo.attach(3);
servo.write(70); // Posición inicial del servo para mantener la puerta cerrada
SPI.begin();
rfid.PCD_Init();
}
void loop() {
lcd.setCursor(4, 0);
lcd.print("Welcome!");
lcd.setCursor(1, 1);
lcd.print("Put your card");
// Verificar si hay una tarjeta nueva presente
if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Scanning...");
Serial.print("UID detectado: ");
// Leer el UID de la tarjeta y almacenarlo en una cadena
String detectedUID = "";
for (byte i = 0; i < rfid.uid.size; i++) {
detectedUID += String(rfid.uid.uidByte[i], HEX);
}
detectedUID.toUpperCase(); // Convertir a mayúsculas para una comparación precisa
Serial.println(detectedUID);
// Verificar si el UID coincide con la tarjeta maestra
if (detectedUID == MASTER_UID) {
// Alternar el estado de la cerradura
if (lock == 0) {
servo.write(160); // Abrir puerta
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Puerta abierta");
lock = 1;
} else {
servo.write(70); // Cerrar puerta
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Puerta cerrada");
lock = 0;
}
// Registrar el tiempo en que se hizo la última acción
previousMillis = millis();
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tarjeta desconocida!");
previousMillis = millis(); // Actualizar el tiempo para el mensaje de error
}
// Detener la lectura de la tarjeta hasta la próxima vez
rfid.PICC_HaltA();
}
// Limpiar el mensaje en la pantalla después de lockDelay milisegundos
if (millis() - previousMillis >= lockDelay) {
lcd.clear();
}
}