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;
}