Lampu RGB Dengan RFID Dan Arduino: 3 Langkah

Lampu RGB Dengan RFID Dan Arduino: 3 Langkah

Isi kandungan:

Anonim

Pengawal cahaya yang digunakan untuk projek bersama yang dipanggil "Senario cerita interaktif" kursus Digital Video dan Televisyen Universiti Autonomi Barat. Objektif pengawal ini adalah untuk mengawal lampu siang dan malam, iaitu, mengawal jumlah cahaya untuk membuat perwakilan zon masa yang anda inginkan.

Projek ini terdiri daripada pelbagai peringkat seperti:

  1. Pembinaan litar dan komponen elektronik yang diperlukan.
  2. Pembinaan sistem pengiktirafan serta sistem perisian untuk mengawal lampu.

Bahan yang hendak digunakan:

  • Protoboard lihat
  • Komputer
  • Arduino UNO lihat
  • Sensor RFID 522 lihat
  • Bateri 12V
  • Jumper wayar lihat
  • Transistor TIP31 lihat
  • Melihat jalur LED

Bekalan:

Langkah 1: Gunung Litar

Seperti yang ditunjukkan dalam graf, pemasangan litar dilakukan dengan cara ini dengan mengambil kira polariti bateri, jalur LED terdiri daripada 4 wayar yang sesuai dengan warna merah, hijau, biru dan putih.

Setiap warna diwakili dalam graf, warna putih sepadan dengan tanah (GND) yang bersambung dengan positif sumber, dalam kes ini bateri 12V.

Langkah 2: Sambungkan Modul RFID

Untuk mengawal lampu, RFID digunakan, di mana setiap kali kami melewati kad, lampu mesti mengubah warna, bergantung pada warna yang ditentukan dalam lakaran Arduino.

Langkah 3: Lakaran Arduino

Dalam lakaran seterusnya anda boleh mencari konfigurasi perisian untuk melaksanakan amalan ini.

#include

#include

#define RST_PIN 5 // Pin 9 untuk penyetelan ulang RC522

#define SS_PIN 10 // Pin 10 untuk SS (SDA) RC522

MFRC522 mfrc522 (SS_PIN, RST_PIN); // Kami buat objek untuk RC522

int redrojo = 1;

int membawa hijau = 2;

int ledazul = 3;

void setup () {

Serial.begin (9600); // Kami memulakan komunikasi siri

pinMode (rambut merah, OUTPUT); // LED Merah sebagai output

pinMode (dipimpin hijau, OUTPUT); // Hijau LED sebagai keluaran

pinMode (ledazul, OUTPUT); // LED Biru sebagai keluaran

SPI.begin (); // Kami memulakan Bas SPI

mfrc522.PCD_Init (); // Kita mulakan MFRC522

//Serial.println ("--- Membaca kad ---");

}

ActualUID byte 4; / / / menyimpan kod Tag dibaca

hari bait 4 = {0xD3, 0xAD, 0x3B, 0x5B};

late byte 4 = {0xD7, 0x22, 0x1D, 0x01};

byte malam 4 = {0xA0, 0x78, 0xBD, 0x4F};

int contdia = 0, conttarde = 0, contnot = 0;

kekosongan gelung () {

jika (mfrc522.PICC_IsNewCardPresent ()) {

kekosongan gelung () {

jika (mfrc522.PICC_IsNewCardPresent ()) {

// Kami menghantar UID anda dengan serius

Serial.println ("Id targejta:");

untuk (byte i = 0; i <mfrc522.uid.size; i ++) {

Serial.print (mfrc522.uid.uidByte i <0x10? "0": "");

Serial.print (mfrc522.uid.uidByte i, HEX);

CurrentUID i = mfrc522.uid.uidByte i;

}

Serial.println ("");

// kami membandingkan UID untuk menentukan sama ada ia adalah salah satu daripada pengguna kami

jika (compareArray (ActualUID, hari)) {

contdia ++;

jika (contdia == 1) {

analogWrite (redhead, 75);

analogWrite (ledverde, 75);

analogWrite (ledazul, 255);

Serial.println ("Data 1 hari");

} lain jika (contdia == 2) {

contdia = 0;

analogWrite (redhead, 0);

analogWrite (ledverde, 0);

analogWrite (ledazul, 0);

Serial.println ("Data 2 hari");

}

}

jika (compareArray (ActualUID, lewat)) {

conttarde ++;

jika (conttarde == 1) {

analogWrite (redhead, 255);

analogWrite (ledverde, 75);

analogWrite (ledazul, 93);

Serial.println ("petang Data 1");

} else if (conttarde == 2) {

conttarde = 0;

analogWrite (redhead, 0);

analogWrite (ledverde, 0);

analogWrite (ledazul, 0);

Serial.println ("Data 2 lewat");

}

}

jika (compareArray (ActualUID, malam)) {

contn. ++;

jika (contnoche == 1) {

analogWrite (redhead, 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");

}

}

// Terminamos la lectura de la tarjeta tarjeta actual

mfrc522.PICC_HaltA ();

}

}

}

// Función para comparar dos vektor

boolean compareArray (byte array1, byte array2) {

jika (array1 0! = array2 0) pulangan (palsu);

jika (array1 1! = array2 1) pulangan (palsu);

jika (array1 2! = array2 2) kembali (palsu);

jika (array1 3! = array2 3) kembali (palsu);

kembali (benar);

}