/********* Pleasedontcode.com **********
Pleasedontcode thanks you for automatic code generation! Enjoy your code!
- Terms and Conditions:
You have a non-exclusive, revocable, worldwide, royalty-free license
for personal and commercial use. Attribution is optional; modifications
are allowed, but you're responsible for code maintenance. We're not
liable for any loss or damage. For full terms,
please visit pleasedontcode.com/termsandconditions.
- Project: RFID Potentiometer
- Source Code NOT compiled for: Arduino Uno
- Source Code created on: 2024-09-28 04:21:45
********* Pleasedontcode.com **********/
/****** SYSTEM REQUIREMENTS *****/
/****** SYSTEM REQUIREMENT 1 *****/
/* The system shall utilize an MFRC522 RFID reader to */
/* capture card data, with a potentiometer connected */
/* to analog pin A0 for input adjustments, ensuring */
/* reliable communication via SPI protocol on defined */
/* digital pins. */
/****** END SYSTEM REQUIREMENTS *****/
/****** DEFINITION OF LIBRARIES *****/
#include
#include // https://github.com/miguelbalboa/rfid
/****** FUNCTION PROTOTYPES *****/
void setup(void);
void loop(void);
void updateOutputs(void);
void readPotentiometer(void);
/***** DEFINITION OF DIGITAL INPUT PINS *****/
const uint8_t MFRC522_IRQ_PIN_D3 = 3;
/***** DEFINITION OF ANALOG INPUT PINS *****/
const uint8_t Potentiometer_Vout_PIN_A0 = A0;
/***** DEFINITION OF DIGITAL OUTPUT PINS *****/
const uint8_t MFRC522_RST_PIN_D2 = 2;
/***** DEFINITION OF SPI PINS *****/
const uint8_t MFRC522_SPI_PIN_MOSI_D11 = 11;
const uint8_t MFRC522_SPI_PIN_MISO_D12 = 12;
const uint8_t MFRC522_SPI_PIN_SCLK_D13 = 13;
const uint8_t MFRC522_SPI_PIN_CS_D10 = 10;
/***** DEFINITION OF OUTPUT RAW VARIABLES *****/
/***** used to store raw data *****/
bool MFRC522_RST_PIN_D2_rawData = 0;
/***** DEFINITION OF OUTPUT PHYSICAL VARIABLES *****/
/***** used to store data after characteristic curve transformation *****/
float MFRC522_RST_PIN_D2_phyData = 0.0;
/****** DEFINITION OF LIBRARIES CLASS INSTANCES*****/
// Create MFRC522 instance with the defined CS and RST pins
MFRC522 mfrc522(MFRC522_SPI_PIN_CS_D10, MFRC522_RST_PIN_D2); // Instance of the MFRC522 class
byte nuidPICC[4]; // Array to store new NUID
void setup(void)
{
// Initialize serial communication
Serial.begin(9600);
// Set pin modes
pinMode(MFRC522_IRQ_PIN_D3, INPUT_PULLUP);
pinMode(Potentiometer_Vout_PIN_A0, INPUT);
pinMode(MFRC522_RST_PIN_D2, OUTPUT);
pinMode(MFRC522_SPI_PIN_CS_D10, OUTPUT);
// Start the SPI library:
SPI.begin();
// Initialize the MFRC522
mfrc522.PCD_Init(); // Initialize MFRC522
Serial.println(F("MFRC522 Initialized."));
}
void loop(void)
{
// Read the potentiometer value and update outputs
readPotentiometer(); // Read the potentiometer value
updateOutputs(); // Refresh output data
// Check for new RFID cards
if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
Serial.print(F("PICC type: "));
MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
Serial.println(mfrc522.PICC_GetTypeName(piccType));
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("Your tag is not of type MIFARE Classic."));
return;
}
if (memcmp(mfrc522.uid.uidByte, nuidPICC, 4) != 0) {
Serial.println(F("A new card has been detected."));
memcpy(nuidPICC, mfrc522.uid.uidByte, 4);
Serial.println(F("The NUID tag is:"));
Serial.print(F("In hex: "));
printHex(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println();
Serial.print(F("In dec: "));
printDec(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println();
} else {
Serial.println(F("Card read previously."));
}
mfrc522.PICC_HaltA(); // Halt PICC
mfrc522.PCD_StopCrypto1(); // Stop encryption on PCD
}
// Function to read the potentiometer value
void readPotentiometer()
{
int potValue = analogRead(Potentiometer_Vout_PIN_A0); // Read the analog value from the potentiometer
MFRC522_RST_PIN_D2_rawData = (potValue > 512); // Example condition to set raw data based on potentiometer value
MFRC522_RST_PIN_D2_phyData = potValue * (5.0 / 1023.0); // Convert raw value to physical data (0-5V)
}
// Function to update outputs based on raw data
void updateOutputs()
{
digitalWrite(MFRC522_RST_PIN_D2, MFRC522_RST_PIN_D2_rawData); // Update the RST pin based on raw data
}
// Function to print byte array in hex format
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
// Function to print byte array in decimal format
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], DEC);
}
}
/* END CODE */