Rfid allarm

Thanks for all, i’m new, i have a code problem for an RFID acknowledgment, i do not get out of the recognition cycle, i would be grateful if you would help me i put the sketch :slight_smile: :slight_smile:

/*
MOSI            D11
MISO            D12
IRQ             N/A
GND             GND
RST             D9
3.3V            3.3V
*/
#include <CapacitiveSensor.h>
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10  // Pin 53 per Arduino Mega
#define RESET_DIO 9
#define delayRead 1000 // Tempo 
#define delayLed 2000 
#define ledVerde A4
#define ledRosso A2
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
  // inserire tutti i codici esadecimali delle schede magnetiche riconosciute 
String codiceAutorizzato1 = "9C9B9E52CB";
String codiceAutorizzato2 = "ESEMPIO479";
String codiceAutorizzato3 = "ESEMPIO480";
const int triggerPort = 7;
const int echoPort = 8;
const int scatta = 2;
int attPin;
int allarme;
int inizio;
long total1 = 0;
int staccah=0;
long durata=0;
long distanza=0;
int state = 0;
int vibrationPin = A5;
int inclinazione;
int Antiavv = A3;
CapacitiveSensor   cs_4_5 = CapacitiveSensor(4,5);
void setup() {
  /* Abilita SPI*/
  SPI.begin(); 
  /* Viene inizilizzato RFID reader */
  RC522.init();
pinMode(ledVerde,OUTPUT);
pinMode(ledRosso,OUTPUT);
pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
pinMode(scatta, OUTPUT);
pinMode(3, INPUT);
pinMode(vibrationPin, INPUT);
pinMode(inclinazione, INPUT);
pinMode(Antiavv, OUTPUT);
Serial.begin(9600);
cs_4_5.set_CS_AutocaL_Millis(0xFFFFFFFF); //autocalibrazione del sensore touch disattivata
}

void loop() {
 /* Temporary loop counter */
  byte i;             //INIZIO RFID
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.println("Codice delle tessera letto:");
  
    // Viene caricato il codice della tessera, all'interno di una Stringa
    for(i = 0; i <= 4; i++)
    {
      codiceLetto+= String (RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }
    Serial.println(codiceLetto);
    if(verificaCodice(codiceLetto,codiceAutorizzato1)||verificaCodice(codiceLetto,codiceAutorizzato2)
    ||verificaCodice(codiceLetto,codiceAutorizzato3)){
      Serial.println("Tessera autorizzata");
      analogWrite(ledVerde, 1023);
      analogWrite (Antiavv, 0);
      delay (1000);
      analogWrite (ledVerde, 0);
    }else{
      Serial.println("Tessera non autorizzata");
      analogWrite(ledRosso, 1023);
      analogWrite (Antiavv, 1023);
      delay (1000);
      analogWrite (ledRosso, 0);
    }
  delay(delayRead);  
  }
}
// Questa funzione verifica se il codice Letto è autorizzato
boolean verificaCodice(String codiceLetto, String codiceAutorizzato)
{
  if(codiceLetto.equals(codiceAutorizzato))
  {
    return true;
  }
  else
  {
    return false;
  }  
}    
// Questa funzione permette di accendere un LED per un determinato periodo
  void accendiLed(int ledPin){
  analogWrite(ledPin,1023);
  delay(100);
  analogWrite(ledPin,1023); //fine rfid

inizio:
delay(100);
inclinazione = digitalRead(6);
if(staccah==HIGH)
if(inclinazione== HIGH)
goto allarme;
state = analogRead(vibrationPin); //sensore di vibrazioni inizio
if(staccah==HIGH)
  if(state <= 100){
    goto allarme;                 //sensore di vibrazioni fine
  }
total1 =  cs_4_5.capacitiveSensor(19); //sensore touch inizio
staccah= digitalRead(3);
if(staccah==HIGH){
if (total1>100)
goto allarme;     //sensore touch fine
}
digitalWrite(attPin,HIGH); //ultrasuoni inizio
digitalWrite(scatta,LOW);
 //resetto l'uscita del trigger
digitalWrite( triggerPort, LOW ); 
//impulso di 10 microsecondi dal trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );  
durata = pulseIn( echoPort, HIGH );
distanza = 0.034 * durata / 2;
Serial.println("distanza: "); 
Serial.println(6); //ultrasuoni fine
staccah= digitalRead(3);
if(staccah==HIGH)
{
if(distanza < 10)
goto allarme;
else goto inizio;
}
else goto inizio;
delay(6000);

allarme:
digitalWrite(scatta, HIGH);
digitalRead(3);
Serial.println(6);
staccah= digitalRead(3);
if(staccah==HIGH)
{
digitalRead(attPin);
goto allarme;
}
else goto inizio;
}
      analogWrite(ledVerde, 1023);

Which Arduino are you using? The analogWrite() function on 328-based Arduinos accepts a range of values from 0 to 255.

boolean verificaCodice(String codiceLetto, String codiceAutorizzato)

Why guess what codiceLetto and codiceAutorizzato contain? Print them to KNOW.

goto allarme;

Get your sh*t together and get rid of the labels and goto statements.