Video: Luces RGB Con RFID Y Arduino: 3 koraka
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Controlador de luces empleado para el proyecto en conjunto denominado "Escenario de historias interactivas" del curso Video y televisión digital de la Universidad Autónoma de Occidente. El objetivo de este controlador es controlar las luces de día y noche, es decir, controlar la cantidad de luz para hacer una reprezentación de la zona horario que se desee.
El proyecto de components de diferentes etapas como son:
- Construcción del circuito y las componentsntes electrónicas necesarias.
- Konstrukcija del sistema za rekonocimiento al igual que el sistema softver za el control de las luces.
Materijali za korištenje:
- Protoboard ver
- Computador
- Arduino UNO ver
- Senzor RFID 522 ver
- Baterija od 12V
- Žice za skakače ver
- Tranzistor TIP31 ver
- Tira je vodio ver
Korak 1: Montar El Circuito
Como se observa en la gráfica, el montaje del circuito se hace de esta manera teniendo en cuenta las polaridades de la batería, la tira led consta de 4 cable que koresponden a los colores rojo, verde, azul y blanco.
Cada uno de los colores se reprezentuje en la gráfica, el color blanco odgovara a la tierra (GND) que se conecta al positivo de la fuente, en este caso de la batería de 12V.
Korak 2: Conectar El Módulo RFID
Para controlar las luces se može koristiti u RFID -u, donde cada vez que pasemos la tarjeta las luces deben cambiar de color, dependiendo de los colores definidos en el sketch de Arduino.
Korak 3: Skicirajte Arduino
En el siguiente sketch podrás encontrar la configuración de software para realizar dicha Practica.
#uključi
#uključi
#define RST_PIN 5 // Pin 9 za resetiranje RC522
#define SS_PIN 10 // Pin 10 za SS (SDA) del RC522
MFRC522 mfrc522 (SS_PIN, RST_PIN); /// Creamos el objeto para el RC522
int ledrojo = 1; int ledverde = 2;
int ledazul = 3;
void setup () {Serial.begin (9600); // Iniciamos La comunicacion serijski
pinMode (ledrojo, OUTPUT); // El LED Rojo como una salida
pinMode (ledverde, OUTPUT); // El LED Verde como una salida
pinMode (ledazul, OUTPUT); // El LED Azul como una salida
SPI.begin (); // Iniciamos el Bus SPI mfrc522. PCD_Init (); // Iniciamos el MFRC522
//Serial.println ("--- Leyendo tarjetas ---");
}
bajt ActualUID [4]; // almacenará el código del Tag leídobyte dia [4] = {0xD3, 0xAD, 0x3B, 0x5B};
bajt tarde [4] = {0xD7, 0x22, 0x1D, 0x01};
bajt noche [4] = {0xA0, 0x78, 0xBD, 0x4F};
int contdia = 0, conttarde = 0, contnoche = 0;
void loop () {if (mfrc522. PICC_IsNewCardPresent ()) {{100} {101}
void loop () {if (mfrc522. PICC_IsNewCardPresent ()) {{100} {101}
// Enviamos serialemente su UID Serial.println ("Id targetjta:");
for (bajt i = 0; i <mfrc522.uid.size; i ++) {
Serial.print (mfrc522.uid.uidByte <0x10? "0": "");
Serijski.ispis (mfrc522.uid.uidByte , HEX);
ActualUID = mfrc522.uid.uidByte ;
}
Serial.println (""); // comparamos los UID para determinar si es uno de nuestros usuarios
if (usporediArray (ActualUID, dia)) {contdia ++;
if (contdia == 1) {
analogWrite (ledrojo, 75);
analogWrite (ledverde, 75);
analogWrite (ledazul, 255);
Serial.println ("Dato 1 dia"); } inače ako (contdia == 2) {
contdia = 0;
analogWrite (ledrojo, 0); analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 dia");
}
}
if (usporediArray (ActualUID, tarde)) {conttarde ++;
if (conttarde == 1) {
analogWrite (ledrojo, 255);
analogWrite (ledverde, 75);
analogWrite (ledazul, 93);
Serial.println ("Dato 1 tarde"); } inače ako (conttarde == 2) {
konttarda = 0;
analogWrite (ledrojo, 0);
analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 tarde"); }
}
if (usporediArray (ActualUID, noche)) {contnoche ++;
if (contnoche == 1) {
analogWrite (ledrojo, 87);
analogWrite (ledverde, 87);
analogWrite (ledazul, 87);
Serial.println ("Dato 1 noche");
} inače ako (contnoche == 2) {
contnoche = 0;
analogWrite (ledrojo, 0);
analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 noche"); }
}
// Terminamos la lectura de la tarjeta tarjeta actual mfrc522. PICC_HaltA ();
}
}
}
// Funkcija para comparar dos vectoresboolean compareArray (niz bajtova1 , niz bajtova2 ) {
if (array1 [0]! = array2 [0]) return (false);
if (array1 [1]! = array2 [1]) return (false);
if (array1 [2]! = array2 [2]) return (false);
if (array1 [3]! = array2 [3]) return (false);
return (istina);
}