Isi kandungan:
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:
- Pembinaan litar dan komponen elektronik yang diperlukan.
- 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); }