Generation

generate functionTue, 28 Jan 2025

1. Arduino uno. 2. RFID. 3. Pantalla con adaptador 12c. 4. Alarma. 5. Sensor ultrasónico. 6. 3 relés Funcionamiento. En el estado inicial, los relés estarán activos, permitiendo el paso de corriente hacia los sistemas de encendido y combustible. Cuando el sensor ultrasónico detecte movimiento, se activará la alarma y, al mismo tiempo, los relés se desactivarán, bloqueando los sistemas de encendido y combustible. Para volver a activar los relés y desbloquear el sistema, se deberá utilizar la primera tarjeta RFID. Una vez desbloqueado el sistema, con la segunda tarjeta RFID será posible activar, por unos segundos, el tercer relé para controlar un motor eléctrico. La pantalla deberá mostrar mensajes informativos como: "Sistema bloqueado", "Sistema desbloqueado", "Ingrese contraseña", "Contraseña incorrecta", entre otros.

Aquí te presento un ejemplo de código en C++ para implementar el sistema que describes utilizando la placa Arduino Uno, RFID, pantalla con adaptador I2C, alarma, sensor ultrasónico y 3 relés. **Nota:** Este código es solo un ejemplo y puede requerir ajustes y modificaciones para adaptarse a tus necesidades específicas. **Librerías necesarias:** * `Wire.h` para comunicación I2C * `MFRC522.h` para leer tarjetas RFID * `LiquidCrystal_I2C.h` para controlar la pantalla LCD * `NewPing.h` para leer el sensor ultrasónico **Código:** ```cpp #include <Wire.h> #include <MFRC522.h> #include <LiquidCrystal_I2C.h> #include <NewPing.h> // Definir pines para el sensor ultrasónico #define TRIGGER_PIN 9 #define ECHO_PIN 10 // Definir pines para los relés #define RELAY1_PIN 2 #define RELAY2_PIN 3 #define RELAY3_PIN 4 // Definir pines para la alarma #define ALARMA_PIN 5 // Definir pines para la pantalla LCD #define LCD_SDA_PIN 20 #define LCD_SCL_PIN 21 // Definir pines para la tarjeta RFID #define RST_PIN 23 #define SS_PIN 24 // Crear objetos para la pantalla LCD y la tarjeta RFID LiquidCrystal_I2C lcd(LCD_SDA_PIN, LCD_SCL_PIN); MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear objeto para el sensor ultrasónico NewPing sonar(TRIGGER_PIN, ECHO_PIN); // Variables para el estado del sistema bool sistemaBloqueado = false; bool sistemaDesbloqueado = false; bool alarmaActivada = false; void setup() { // Inicializar pines para los relés pinMode(RELAY1_PIN, OUTPUT); pinMode(RELAY2_PIN, OUTPUT); pinMode(RELAY3_PIN, OUTPUT); // Inicializar pines para la alarma pinMode(ALARMA_PIN, OUTPUT); // Inicializar la pantalla LCD lcd.begin(16, 2); lcd.backlight(); // Inicializar la tarjeta RFID mfrc522.PCD_Init(); // Inicializar el sensor ultrasónico sonar.setTimeout(50); } void loop() { // Leer el sensor ultrasónico int distancia = sonar.ping_cm(); // Si el sensor detecta movimiento, activar la alarma y bloquear el sistema if (distancia < 10) { alarmaActivada = true; sistemaBloqueado = true; lcd.setCursor(0, 0); lcd.print("Sistema bloqueado"); lcd.setCursor(0, 1); lcd.print("Ingrese contraseña"); } // Si la alarma está activada, verificar la tarjeta RFID if (alarmaActivada) { // Leer la tarjeta RFID if (mfrc522.PICC_ReadCardSerial()) { // Verificar si la tarjeta es la primera if (mfrc522.uid.uidByte[0] == 0x01) { // Desbloquear el sistema sistemaBloqueado = false; sistemaDesbloqueado = true; lcd.setCursor(0, 0); lcd.print("Sistema desbloqueado"); lcd.setCursor(0, 1); lcd.print("Ingrese contraseña"); } else if (mfrc522.uid.uidByte[0] == 0x02) { // Activar el tercer relé digitalWrite(RELAY3_PIN, HIGH); lcd.setCursor(0, 0); lcd.print("Relé 3 activado"); delay(1000); digitalWrite(RELAY3_PIN, LOW); lcd.setCursor(0, 0); lcd.print("Relé 3 desactivado"); } // Restaurar la tarjeta RFID mfrc522.PICC_HaltA(); } } // Si el sistema está desbloqueado, verificar la tarjeta RFID if (sistemaDesbloqueado) { // Leer la tarjeta RFID if (mfrc522.PICC_ReadCardSerial()) { // Verificar si la tarjeta es la primera if (mfrc522.uid.uidByte[0] == 0x01) { // Desactivar la alarma y desbloquear el sistema alarmaActivada = false; sistemaBloqueado = false; sistemaDesbloqueado = false; lcd.setCursor(0, 0); lcd.print("Sistema desbloqueado"); lcd.setCursor(0, 1); lcd.print("Ingrese contraseña"); } // Restaurar la tarjeta RFID mfrc522.PICC_HaltA(); } } // Si el sistema está bloqueado, verificar la tarjeta RFID if (sistemaBloqueado) { // Leer la tarjeta RFID if (mfrc522.PICC_ReadCardSerial()) { // Verificar si la tarjeta es la primera if (mfrc522.uid.uidByte[0] == 0x01) { // Desbloquear el sistema sistemaBloqueado = false; sistemaDesbloqueado = true; lcd.setCursor(0, 0); lcd.print("Sistema desbloqueado"); lcd.setCursor(0, 1); lcd.print("Ingrese contraseña"); } // Restaurar la tarjeta RFID mfrc522.PICC_HaltA(); } } // Actualizar el estado de los relés digitalWrite(RELAY1_PIN, sistemaBloqueado ? LOW : HIGH); digitalWrite(RELAY2_PIN, sistemaBloqueado ? LOW : HIGH); digitalWrite(RELAY3_PIN, sistemaDesbloqueado ? HIGH : LOW); // Actualizar el estado de la alarma digitalWrite(ALARMA_PIN, alarmaActivada ? HIGH : LOW); // Retardar la ejecución del código delay(100); } ``` **Nota:** Este código es solo un ejemplo y puede requerir ajustes y modificaciones para adaptarse a tus necesidades específicas. También es importante mencionar que este código utiliza la librería `MFRC522` para leer tarjetas RFID, que puede requerir la instalación de la librería en el IDE de Arduino. Espero que este ejemplo te sea útil. ¡Si tienes alguna pregunta o necesitas ayuda adicional, no dudes en preguntar!

Want to kickstart your project?Use the new AI Studio to create your code