🚪 در هوشمند با RFID
کارت مجاز سروو را باز میکند؛ کارت ناشناس سه بوق خطا میگیرد.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سهبعدی + کد)
قطعات لازم
کد کامل پروژه
// Smart door: the white card opens the servo "door", others get an error beep.
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
MFRC522 rfid(10, 9); // SDA(SS) pin, RST pin
Servo door;
const int BUZZER = 8;
byte allowed[4] = {0xD3, 0x4A, 0x1F, 0x9B}; // UID of the white card
void beep(int times, int ms) {
for (int i = 0; i < times; i++) {
digitalWrite(BUZZER, HIGH); delay(ms);
digitalWrite(BUZZER, LOW); delay(ms);
}
}
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
door.attach(6);
door.write(0); // closed
pinMode(BUZZER, OUTPUT);
Serial.println("Tap a card...");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent()) return; // no new card
if (!rfid.PICC_ReadCardSerial()) return; // could not read it
bool ok = true;
Serial.print("UID:");
for (int i = 0; i < 4; i++) {
Serial.print(" ");
Serial.print(rfid.uid.uidByte[i], HEX);
if (rfid.uid.uidByte[i] != allowed[i]) ok = false;
}
Serial.println();
if (ok) {
Serial.println("Welcome! Door open.");
beep(1, 100);
door.write(90); // open
delay(3000);
door.write(0); // close again
} else {
Serial.println("Access denied!");
beep(3, 80);
}
rfid.PICC_HaltA();
}
چطور اجرایش کنم؟
- شبیهساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
- از پنل «نمونهها»، «در هوشمند با RFID» را بارگذاری کن — مدار و کد با هم میآیند.
- دکمهی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
- حالا کد را تغییر بده — عددها، پینها، ترتیب — و دوباره اجرا کن!