RFID Tags

Hello friends,

The keypad move the stepper and when the RIFD ID 12 innovations “sense” the tag the stepper return to the orignal position.

I have 5 differents positions. And I have 5 differents tags. When a choose position 1 in the keypad, I want the Tag 1 return. But all tags are return the stepper. I want indivudual tags return, not all.

Help?

#include <EEPROM.h>
#include <Keypad.h>
#include <Stepper.h>

char tag1[13] = "28004F5C5B60";
char tag2[13] = "28004F542B18";
char tag3[13] = "28004F693836";
char tag4[13] = "28004F59625C";
char tag5[13] = "28004F30ADFA";

int x;
int y;

int master;
int Login;
byte password;
byte reads;

const byte ROWS = 4;
const byte COLS = 3;

char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};

byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8};

Keypad kpd = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const int stepsPerRevolution = 64;
Stepper myStepper(stepsPerRevolution, 9,10,11,12);

//----------------------------------

void setup(){
  
  Serial.begin(9600);
  
  EEPROM.write(1, 31);
  
  master   = 0;
  Login    = 0;
  password = 0;
  reads    = 0;
  
  myStepper.setSpeed(300);
  
}

void loop(){
  
  char tagString[13];
  int index = 0;
  boolean reading = false;
  
  char key = kpd.getKey();
  
  if(key){
    
    switch(key){
      
      case '1':
        master = master + 1;
        break;
        
      case '2':
        master = master - 2;
        break;
        
      case '3':
        master = master * 3;
        break;
        
      case '4':
        master = master + 4;
        break;
        
      case '5':
        master = master - 5;
        break;
        
      case '6':
        master = master * 6;
        break;
        
      case '7':
        master = master + 7;
        break;
        
      case '8':
        master = master - 8;
        break;
        
      case '9':
        master = master * 9;
        break;
        
        
      case '*':
        Login = abs(master);
        master = 0;
        break;
        
      case '#':
        password = abs(master);
        delay (500);
        reads = EEPROM.read(Login);
        
        if(password == reads){
          
          x = 10;
          
          master   = 0;
          Login    = 0;
          password = 0;
          
        }
        
        break;
        
    }
  }
  
  while(x == 10){
    
    char key = kpd.getKey();
    
    if(key){
      
      switch(key){
        
        case '1':
          for(int i = 0; i < 32; i++){
          myStepper.step(11);
          }
          
          y = 10;
          
          while(y == 10){
            
            int readByte = Serial.read();
            
            if(readByte == 2) reading = true;
            if(readByte == 3) reading = false;
            
            if(reading && readByte != 2 && readByte != 10 && readByte != 13){
              
              tagString[index] = readByte;
              index ++;
            }
          }
          
          checkTag1(tagString);
          clearTag(tagString);
          
          y = 0;
          
          x = 0;
          break;
          
          
          case '2':
            for(int i = 0; i < 32; i++){
            myStepper.step(22);
            }
            
          y = 10;
          
          while(y == 10){
            
            int readByte = Serial.read();
            
            if(readByte == 2) reading = true;
            if(readByte == 3) reading = false;
            
            if(reading && readByte != 2 && readByte != 10 && readByte != 13){
              
              tagString[index] = readByte;
              index ++;
            }
          }
          
          checkTag2(tagString);
          clearTag(tagString);
          
          y = 0;
          
          x = 0;
          break;
          
          
          case '3':
            for(int i = 0; i < 32; i++){
            myStepper.step(33);
            }
            
          y = 10;
          
          while(y == 10){
            
            int readByte = Serial.read();
            
            if(readByte == 2) reading = true;
            if(readByte == 3) reading = false;
            
            if(reading && readByte != 2 && readByte != 10 && readByte != 13){
              
              tagString[index] = readByte;
              index ++;
            }
          }
          
          checkTag3(tagString);
          clearTag(tagString);
          
          y = 0;
          
          x = 0;
          break;
          
          
          case '4':
            for(int i = 0; i < 32; i++){
            myStepper.step(44);
            }
            
          y = 10;
          
          while(y == 10){
            
            int readByte = Serial.read();
            
            if(readByte == 2) reading = true;
            if(readByte == 3) reading = false;
            
            if(reading && readByte != 2 && readByte != 10 && readByte != 13){
              
              tagString[index] = readByte;
              index ++;
            }
          }
          
          checkTag4(tagString);
          clearTag(tagString);
          
          y = 0;
          
          x = 0;
          break;
          
          
          case '5':
            for(int i = 0; i < 32; i++){
            myStepper.step(55);
            }
            
          y = 10;
          
          while(y == 10){
            
            int readByte = Serial.read();
            
            if(readByte == 2) reading = true;
            if(readByte == 3) reading = false;
            
            if(reading && readByte != 2 && readByte != 10 && readByte != 13){
              
              tagString[index] = readByte;
              index ++;
            }
          }
          
          checkTag5(tagString);
          clearTag(tagString);
          
          y = 0;
          
          x = 0;
          break;
          
      }
    }
  }
}

void checkTag1(char tag[]){
  
  if(strlen(tag) == 0) return;
  
  if(compareTag(tag, tag1)){
    for(int i = 0; i < 32; i++){
      myStepper.step(-11);
    }
  } 
}

void checkTag2(char tag[]){
  
  if(strlen(tag) == 0) return;
  
  if(compareTag(tag, tag2)){
    for(int i = 0; i < 32; i++){
      myStepper.step(-22);
    }
  }
}

void checkTag3(char tag[]){
  
  if(strlen(tag) == 0) return;
  
  if(compareTag(tag, tag3)){
    for(int i = 0; i < 32; i++){
      myStepper.step(-33);
    }
  } 
}

void checkTag4(char tag[]){
  
  if(strlen(tag) == 0) return;
  
  if(compareTag(tag, tag4)){
    for(int i = 0; i < 32; i++){
      myStepper.step(-44);
    }
  } 
}

void checkTag5(char tag[]){
  
  if(strlen(tag) == 0) return;
  
  if(compareTag(tag, tag5)){
    for(int i = 0; i < 32; i++){
      myStepper.step(-55);
    }
  } 
}

void clearTag(char one[]){
  
  for(int i = 0; i < strlen(one); i++){
    one[i] = 0;
  }
}

boolean compareTag(char one[], char two[]){

  if(strlen(one) == 0) return false;

  for(int i = 0; i < 12; i++){
    if(one[i] != two[i]) return false;
  }

  return true;
}

So you managed to get it working?