Video: Luces RGB Con RFID Y Arduino: 3 pași
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Controlador de luces empleado para el proyecto en conjunto denominado "Escenario de historias interactivas" din curs Video și televiziune digitală a Universității Autonome de Occident. El target de este controlador is control the luces de day y night, es say, control the quantity of luz for make una representation of the zone horario that se desee.
El proyecto de compone de diferentes etapas como son:
- Construcția del circuit și componentele electronice necesare.
- Construcția sistemului de recunoaștere la fel ca sistemul software pentru controlul lucrurilor.
Materiale a utiliza:
- Protoboard ver
- Calculator
- Arduino UNO ver
- Senzor RFID 522 ver
- Bateria de 12V
- Jersee fire ver
- Tranzistor TIP31 ver
- Tira led ver
Pasul 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 cabluri care corespund culorilor roșu, verde, albastru și alb.
Cada unul al culorilor se reprezintă în grafică, el color blanco corresponde la la tierra (GND) care se conectează la pozitiv de la sursă, în acest caz de baterie de 12V.
Pasul 2: Conectare El Módulo RFID
Pentru a controla lucurile se face folosirea RFID, unde fiecare dată când pasăm cardul lucrurilor trebuie să se schimbe de culoare, depinzând de culorile definite în schița de Arduino.
Pasul 3: Schițați Arduino
Următorul schiță poate găsi configurarea software-ului pentru realizarea dicha practice.
#include
#include
#define RST_PIN 5 // Pin 9 pentru resetarea RC522
#define SS_PIN 10 // Pin 10 pentru SS (SDA) din 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 serial
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 ---");
}
octet ActualUID [4]; // stocará el code del Tag leídobyte dia [4] = {0xD3, 0xAD, 0x3B, 0x5B};
byte tarde [4] = {0xD7, 0x22, 0x1D, 0x01};
byte noche [4] = {0xA0, 0x78, 0xBD, 0x4F};
int contdia = 0, conttarde = 0, contnoche = 0;
bucla void () {if (mfrc522. PICC_IsNewCardPresent ()) {
bucla void () {if (mfrc522. PICC_IsNewCardPresent ()) {
// Enviamos serialemente su UID Serial.println ("Id targejta:");
for (octet i = 0; i <mfrc522.uid.size; i ++) {
Serial.print (mfrc522.uid.uidByte <0x10? "0": "");
Serial.print (mfrc522.uid.uidByte , HEX);
ActualUID = mfrc522.uid.uidByte ;
}
Serial.println (""); // comparamos los UID para determinar si es uno de nuestros usuarios
if (compareArray (ActualUID, dia)) {contdia ++;
if (contdia == 1) {
analogWrite (ledrojo, 75);
analogWrite (ledverde, 75);
analogWrite (ledazul, 255);
Serial.println ("Dato 1 dia"); } else if (contdia == 2) {
contdia = 0;
analogWrite (ledrojo, 0); analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 dia");
}
}
if (compareArray (ActualUID, tarde)) {conttarde ++;
if (conttarde == 1) {
analogWrite (ledrojo, 255);
analogWrite (ledverde, 75);
analogWrite (ledazul, 93);
Serial.println ("Dato 1 tarde"); } else if (conttarde == 2) {
conttarde = 0;
analogWrite (ledrojo, 0);
analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 tarde"); }
}
if (compareArray (ActualUID, noche)) {contnoche ++;
if (contnoche == 1) {
analogWrite (ledrojo, 87);
analogWrite (ledverde, 87);
analogWrite (ledazul, 87);
Serial.println ("Dato 1 noche");
} else if (contnoche == 2) {
contnoche = 0;
analogWrite (ledrojo, 0);
analogWrite (ledverde, 0);
analogWrite (ledazul, 0);
Serial.println ("Dato 2 noche"); }
}
// Terminăm lectura lectura cardului card actual mfrc522. PICC_HaltA ();
}
}
}
// Funcția pentru a compara doi vectoresboolean compareArray (byte array1 , byte array2 ) {
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);
retur (adevărat);
}