Hola amigos, espero estén bien, a ver si alguien pudiese ayudarme. Soy nuevo programando arduino, ya me he leído libros y he visto tutoriales de programación por el foro en documentación, pero hay cosas que aun no comprendo bien. Actualmente tengo un Sketch en el cual al acercar al lector la tarjeta definida este activa el giro del servomotor en 180 grados, junto con la iluminación de un Led y un sonoro en un buzzer, y si este es incorrecto enciende un led una señal sonoro junto con un acceso denegado. Hasta aquí todo perfecto, el tema es que necesito que el servo vuelva a 0 grados pero solo cuando vuelvo a acercar la misma tarjeta definida nuevamente. probé poniendo un nuevo if con el giro en 0 grados del servo, pero al leer la tarjeta este va a 180 y luego vuelve de manera inmediata a 0 por lo que no me sirvió y lo que yo necesito es que solo al acercar la tarjeta nuevamente este vuelva a 0 si no que se quede en 180. Si algún entendido de aquí podría ayudarme o guiarme en lo que tengo que agregar se lo agradecería mucho. Comparto el Sketch que tengo actualmente
//Proyecto Servo con RFID FCA
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 //define pin LED Verde
#define LED_R 4 //define pin LED Rojo
#define BUZZER 2 //buzzer pin
MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear MFRC522 instancia.
Servo myServo; //define Nombre para el Servo
void setup()
{
Serial.begin(9600); // Iniciar la serial communication
SPI.begin(); // Iniciar SPI bus
mfrc522.PCD_Init(); // Iniciar MFRC522
myServo.attach(3); //servo pin
myServo.write(0); //servo start position
pinMode(LED_G, OUTPUT);
pinMode(LED_R, OUTPUT);
pinMode(BUZZER, OUTPUT);
noTone(BUZZER);
Serial.println("Acerca tu tarjeta al lector...");
Serial.println();
}
void loop()
{
// Buscar nuevas tarjetas
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Seleccionar una de las tarjetas
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Mostrar UID en Monitor Serie
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "83 AA 7B 20") //ID Tarjeta
{
Serial.println("Acceso Autorizado");
Serial.println();
delay(500);
digitalWrite(LED_G, HIGH);
tone(BUZZER, 500);
delay(300);
noTone(BUZZER);
myServo.write(180);
}
else {
Serial.println(" Acceso Denegado");
digitalWrite(LED_R, HIGH);
tone(BUZZER, 300);
delay(1000);
digitalWrite(LED_R, LOW);
noTone(BUZZER);
}
}