Mini Project 2

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
// Define pins for RFID
#define SS_PIN 10
#define RST_PIN 9
// Define pins for LEDs
#define GREEN_LED_PIN 7
#define YELLOW_LED_PIN 4
#define RED_LED_PIN 2
// Define pin for Servo
#define SERVO_PIN 3
// Define pin for Buzzer
#define BUZZER_PIN A5
// Create instances
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo myServo;
// Predefined UIDs for coins 1 to 10
byte validUIDs[10][4] = {
{0xDE, 0xAD, 0xBE, 0xEF}, // Example UID 1
{0xCA, 0xFE, 0xBA, 0xBE}, // Example UID 2
{0x23, 0x05, 0xD3, 0x0D}, // Card 1
{0x53, 0xA5, 0x5E, 0x1A}, // Card 2
// Add more UIDs here
};
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
// Initialize LEDs
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
// Initialize Servo
myServo.attach(SERVO_PIN);
myServo.write(90); // Set to normal position
// Initialize Buzzer
pinMode(BUZZER_PIN, OUTPUT);
// Set initial LED state
digitalWrite(YELLOW_LED_PIN, HIGH);
}
void loop() {
// Look for new cards
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
return;
}
// Check if the UID is valid
bool isValid = false;
for (int i = 0; i < 10; i++) {
if (memcmp(mfrc522.uid.uidByte, validUIDs[i], 4) == 0) {
isValid = true;
break;
}
}
if (isValid) {
// Valid UID
digitalWrite(GREEN_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(RED_LED_PIN, LOW);
myServo.write(0); // Move servo to specific position
tone(BUZZER_PIN, 1000, 500); // Sound buzzer at 1000 Hz for 500 ms
} else {
// Invalid UID
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(RED_LED_PIN, HIGH);
myServo.write(90); // Move servo to normal position
tone(BUZZER_PIN, 500, 500); // Sound buzzer at 500 Hz for 500 ms
}
// Wait for a while before resetting to normal state
delay(2000);
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
myServo.write(90); // Move servo to normal position
// Halt PICC
mfrc522.PICC_HaltA();
}Last updated