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