Vorrei ri-iniziare un programma una volta terminato

Salve a tutti, io sto facendo il progetto per il mio esame che consiste in uno blocco di sicurezza con rfid, tutto va come dovrebbe andare a parte quando si sblocca il blocco solenoidale, che una volta aperto si chiude e da li in poi il modulo rfid non funziona più.
questo è il codice:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
#define LED_G 5 
#define LED_R 4
#define RELAY 3 
#define BUZZER 2
#define ACCESS_DELAY 8000
#define DENIED_DELAY 1000

MFRC522 mfrc522(SS_PIN, RST_PIN); 
LiquidCrystal_I2C lcd(0x27,20,4);

void setup() 
{
  Serial.begin(9600);  
  SPI.begin();          
  mfrc522.PCD_Init();   
  pinMode(LED_G, OUTPUT);
  pinMode(LED_R, OUTPUT);
  pinMode(RELAY, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  noTone(BUZZER);
  digitalWrite(RELAY, LOW);
  Serial.println("Put your card to the reader...");
  Serial.println();
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Prego appoggi pure  la sua card");

}

void loop() 
{
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  lcd.clear();
  Serial.print("Numero : ");
  lcd.setCursor(0, 0);
  lcd.print("Numero:");
  lcd.setCursor(0, 1);
  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("Permesso? ");
  lcd.clear();
  content.toUpperCase();
  if (content.substring(1) == "B3 5D 89 91") 
  {
    Serial.println("codice giusto entrare");
    Serial.println();
    lcd.setCursor(0, 0);
    lcd.print("accesso autorizzato,puo' entrare");
    delay(500);
    digitalWrite(RELAY, HIGH);
    digitalWrite(LED_G, HIGH);
    delay(ACCESS_DELAY);
    digitalWrite(RELAY, LOW);
    digitalWrite(LED_G, LOW);
  }
 
 else   {
    Serial.println("codice errato riprovi");
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("accesso negato,     riprovi");
    digitalWrite(LED_R, HIGH);
    tone(BUZZER, 300);
    delay(DENIED_DELAY);
    digitalWrite(LED_R, LOW);
    noTone(BUZZER);
  }
}
  void reset_state()
{
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Prego appoggi pure  la sua card");
    digitalWrite( LED_G , LOW);
    digitalWrite( LED_R , LOW);
}

Cosa dovrei fare secondo voi?

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

A quanto scritto da UKHeliBob aggiungo che ...

... essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il succitato REGOLAMENTO ... Grazie.

Guglielmo

Inoltre, sempre in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) per cui, questo tuo post duplicato (hai già posto la stessa domanda QUI) è stato chiuso e verrà cancellato.

Ti prego, per il futuro, di evitare di aprire più thread sullo stesso argomento in sezioni differenti del forum. Grazie.

Guglielmo