Hi!
I am very new to this programming and so far very confused. Have been programming alot but have no idea of what language it is with arduino so far.
But my problem is this;
I have a software, see below, for an access with RFID card.
Every time I start this arduino it is asking for master ID even if I have set it once. Why is that?
I want to have a permanent card that always is master without the arduino "forgetting" what it was when power goes off. There are times when the powerlines fail so it must remember the master card but how to set that?
Also when I run the "Serial monitor" no data shows.
I want to be able to see what ID number each RFID card has so I manually can set it as master.
But right now after a few hours a day trying to learn more I am only getting more and more confused.
I am used to program in Visual Basic and before that in other languages but not this strange language, whatever it is. This text coding is killing me.
Can someone please help me?
Here is the entire code of the software I use;
// * Arduino Door Lock Access Control Project
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>
#include <Servo.h>
#define RST_PIN 9
#define SS_PIN 10
byte readCard[4];
char* myTags[100] = {};
int tagsCount = 0;
String tagID = "";
boolean successRead = false;
boolean correctTag = false;
int proximitySensor;
boolean doorOpened = false;
// Create instances
MFRC522 mfrc522(SS_PIN, RST_PIN);
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Parameters: (rs, enable, d4, d5, d6, d7)
Servo myServo; // Servo motor
void setup() {
{
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("Access test via RFID tag");
Serial.println();
}
// Initiating
SPI.begin(); // SPI bus
mfrc522.PCD_Init(); // MFRC522
lcd.begin(16, 2); // LCD screen
myServo.attach(8); // Servo motor
myServo.write(10); // Initial lock position of the servo motor
// Prints the initial message
lcd.print("-No Master Tag!-");
lcd.setCursor(0, 1);
lcd.print(" SCAN NOW");
// Waits until a master card is scanned
while (!successRead) {
successRead = getID();
if ( successRead == true) {
myTags[tagsCount] = strdup(tagID.c_str()); // Sets the master tag into position 0 in the array
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Master Tag Set!");
tagsCount++;
}
}
successRead = false;
printNormalModeMessage();
}
void loop() {
int proximitySensor = analogRead(A0);
// If door is closed...
if (proximitySensor > 200) {
if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue
return;
}
if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue
return;
}
tagID = "";
// The MIFARE PICCs that we use have 4 byte UID
for ( uint8_t i = 0; i < 4; i++) { //
readCard = mfrc522.uid.uidByte*;*
_ tagID.concat(String(mfrc522.uid.uidByte*, HEX)); // Adds the 4 bytes in a single String variable*
* }
tagID.toUpperCase();_
mfrc522.PICC_HaltA(); // Stop reading*
* correctTag = false;*
* // Checks whether the scanned tag is the master tag*
* if (tagID == myTags[0]) {*
* lcd.clear();*
* lcd.print("Program mode:");*
* lcd.setCursor(0, 1);*
* lcd.print("Add/Remove Tag");*
* while (!successRead) {*
* successRead = getID();*
* if ( successRead == true) {*
* for (int i = 0; i < 100; i++) {*
_ if (tagID == myTags*) {
myTags = "";
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Tag Removed!");
printNormalModeMessage();
return;
}
}_
myTags[tagsCount] = strdup(tagID.c_str());
_ lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Tag Added!");
printNormalModeMessage();
tagsCount++;
return;
}
}
}
successRead = false;
// Checks whether the scanned tag is authorized*
* for (int i = 0; i < 100; i++) {
if (tagID == myTags) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Access Granted!");
myServo.write(170); // Unlocks the door*
* printNormalModeMessage();
correctTag = true;
}
}
if (correctTag == false) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Access Denied!");
printNormalModeMessage();
}
}
// If door is open...
else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Door Opened!");
while (!doorOpened) {
proximitySensor = analogRead(A0);
if (proximitySensor > 200) {
doorOpened = true;
}
}
doorOpened = false;
delay(500);
myServo.write(10); // Locks the door*
* printNormalModeMessage();
}
}_
uint8_t getID() {
_ // Getting ready for Reading PICCs*
* if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue*
* return 0;
}_
if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue*
* return 0;*
* }*
* tagID = "";*
* for ( uint8_t i = 0; i < 4; i++) { // The MIFARE PICCs that we use have 4 byte UID*
readCard = mfrc522.uid.uidByte*;*
_ tagID.concat(String(mfrc522.uid.uidByte*, HEX)); // Adds the 4 bytes in a single String variable*
* }
tagID.toUpperCase();_
mfrc522.PICC_HaltA(); // Stop reading*
* return 1;*
* }*
* void printNormalModeMessage() {*
* delay(1500);*
* lcd.clear();*
* lcd.print("-Access Control-");*
* lcd.setCursor(0, 1);*
* lcd.print(" Scan Your Tag!");*
* }*