Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Apriporta RFID con arduino uno

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

1
voti

[11] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentenicsergio » 5 ago 2021, 10:34

GioArca67 ha scritto:poco male

mfrc522.uid.size*sizeof(int)

:D :twisted: :D


non ci siamo ancora, non basta allargare l'area di confronto :D
le aree di memoria non sono confrontabili, con mfrc522.uid.uidByte hai i valori in byte contigui, con code[i] invece no
Avatar utente
Foto Utentenicsergio
4.451 3 9 13
Master
Master
 
Messaggi: 872
Iscritto il: 1 gen 2020, 16:42

0
voti

[12] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteGioArca67 » 5 ago 2021, 14:03

Eh! Sì, avevo letto tutto int...
Avatar utente
Foto UtenteGioArca67
3.661 4 5 9
Master
Master
 
Messaggi: 3529
Iscritto il: 12 mar 2021, 9:36

0
voti

[13] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 5 ago 2021, 23:47

Grazie a tutti per le risposte, dopo vari tentativi sono riuscito a inserire le righe di comando che mi avete scritto. Ora funziona bene come volevo io :ok:
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[14] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteGioArca67 » 6 ago 2021, 7:52

Prego.
Però cambierei da int a byte il tipo dell'array code, e corrispondente dove serve a seguire (es. il casting a int nel controllo)
Avatar utente
Foto UtenteGioArca67
3.661 4 5 9
Master
Master
 
Messaggi: 3529
Iscritto il: 12 mar 2021, 9:36

0
voti

[15] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 16 dic 2022, 22:22

Ciao...sono ritornato di nuovo su questo argomento perché ho dei problemi con il relè che ho sostituito ne ho messo uno low level trigger. Il problema è il seguente:

dando corrente all'arduino il relè mi rimane sollecitato, quindi fa passare corrente e rimane così, se invece gli passo una volta il tag rfid non fa passare corrente e rimane così, se invece gli passo una terza volta il tag fa il suo lavoro (quindi sollecita il relè e poi smette per il tempo che gli ho impostato).

Quello che vorrei io è che quando la corrente che alimenta l'arduino dovesse mancare e poi ripristinarsi il relè sia spento e non subito acceso. Come posso fare per ovviare questo inconveniente?
ps.: ho provato a intervenire su:

Codice: Seleziona tutto
              digitalWrite (rele, LOW);
              delay (700);     
              digitalWrite (rele, HIGH);

Ma senza risultato...
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[16] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteGioArca67 » 16 dic 2022, 23:44

Ma se non posti il codice come facciamo?
Avatar utente
Foto UtenteGioArca67
3.661 4 5 9
Master
Master
 
Messaggi: 3529
Iscritto il: 12 mar 2021, 9:36

0
voti

[17] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 17 dic 2022, 0:02

Scusate...mi sono dimenticato... :(
Codice: Seleziona tutto
#include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>


#define SS_PIN 10

#define RST_PIN 9


#define LED_DENIED_PIN 7

#define LED_ACCESS_PIN 6

#define LED_AUTORIZED_PIN 4

#define rele 2

#define MAXSCHEDE 5

LiquidCrystal_I2C lcd(0x27,16,2);

MFRC522 mfrc522(SS_PIN, RST_PIN);


int code[MAXSCHEDE][4] = {{xx,xxx,xx,xx},
{xx,xxx,xx,xxx},
{xxx,xx,xxx,xxx},
{xxx,xxx,xx,xxx},
{xx,xxx,xx,xx}};

int codeRead = 0;

void setup() {

   Serial.begin(9600);
   
   SPI.begin();       

   mfrc522.PCD_Init();

   Serial.println("Arduino RFID reading UID");



   pinMode( LED_DENIED_PIN , OUTPUT);

   pinMode( LED_ACCESS_PIN , OUTPUT);

   pinMode( LED_AUTORIZED_PIN , OUTPUT);

   pinMode(rele, OUTPUT);
         


   lcd.init();

 

  lcd.backlight();

  lcd.setCursor(0,0);

  lcd.print("IT Benvenuto");
  Serial.println("IT Benvenuto");
  lcd.setCursor(0,1);

  lcd.print("ES Bienvenidos");
  Serial.println("ES Bienvenidos");
}
void loop() {

 

if ( mfrc522.PICC_IsNewCardPresent())

    {

        if ( mfrc522.PICC_ReadCardSerial())

        {

           lcd.clear();

           Serial.print("Tag UID:");

           lcd.setCursor(0,0);

           lcd.print("Tag UID:");

           lcd.setCursor(0,1);


           for (byte i = 0; i < mfrc522.uid.size; i++) { 

                  Serial.print(mfrc522.uid.uidByte[i] < 0x27 ? " 0" : " ");

                  Serial.print(mfrc522.uid.uidByte[i], HEX);

                 

                  lcd.print(mfrc522.uid.uidByte[i] < 0x27 ? " 0" : " ");

                  lcd.print(mfrc522.uid.uidByte[i], HEX);

                //  lcd.print(" ");

            }
int i = 0;

            boolean match = false;
        for(int sch=0;sch<MAXSCHEDE&&!match;sch++)
        {
            int i=0;
            match = true;
            while(i<mfrc522.uid.size)
            {
                if(!(int(mfrc522.uid.uidByte[i]) == int(code[sch][i])))
                  {
                     match = false;
                   }
                  i++;
}
}

            delay(2000);

           lcd.clear();

           lcd.setCursor(0,0);

           

           

           if(match)

           {

              digitalWrite( LED_ACCESS_PIN , HIGH);
             
              lcd.print("Accesso Valido");
              lcd.setCursor(0,1);
              lcd.print("Porta Aperta");

              Serial.println("\Accesso Valido");

              digitalWrite( LED_AUTORIZED_PIN, HIGH);

              digitalWrite (rele, LOW);
              delay (1000);     
              digitalWrite (rele, HIGH);

              digitalWrite( LED_AUTORIZED_PIN, LOW);
}else{

              digitalWrite( LED_DENIED_PIN , HIGH);
             
              lcd.print("Carta Errata");
              lcd.setCursor(0,1);
              lcd.print("Accesso Negato");

             Serial.println("\Carta Errata");

           }

             

             Serial.println("============================");

           

             mfrc522.PICC_HaltA();
             



             delay(1000);

             reset_state();

       }

  }

}

void reset_state()

{

    lcd.clear();

    lcd.setCursor(0,0);

    lcd.print("IT Benvenuto");
    Serial.println("IT Benvenuto");
    lcd.setCursor(0,1);
    lcd.print("ES Bienvenidos");
    Serial.println("ES Bienvenidos");
   

    digitalWrite( LED_ACCESS_PIN , LOW);

    digitalWrite( LED_DENIED_PIN , LOW);

}
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

0
voti

[18] Re: Apriporta RFID con arduino uno

Messaggioda Foto UtenteLorisP » 17 dic 2022, 17:00

Discussione interessantissima :ok:

Ringrazio e mi inserisco, in punta di piedi, per imparare qualcosa di più su Arduino
O_/
Avatar utente
Foto UtenteLorisP
390 1 3 5
Stabilizzato
Stabilizzato
 
Messaggi: 304
Iscritto il: 10 ago 2021, 17:43

0
voti

[19] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentenicsergio » 17 dic 2022, 22:24

È sufficiente inizializzare il comando del relè all'avvio, appena prima della configurazione del pin di uscita, nella funzione setup() :

Codice: Seleziona tutto
digitalWrite(rele, HIGH);
pinMode(rele, OUTPUT);
Avatar utente
Foto Utentenicsergio
4.451 3 9 13
Master
Master
 
Messaggi: 872
Iscritto il: 1 gen 2020, 16:42

0
voti

[20] Re: Apriporta RFID con arduino uno

Messaggioda Foto Utentelupoalberto74it » 17 dic 2022, 23:37

Grazie ho risolto...Io avevo provato ma mettendo LOW al posto di HIGH e per quello che non riuscivo...grazie di nuovo :ok:
Avatar utente
Foto Utentelupoalberto74it
10 3
 
Messaggi: 42
Iscritto il: 4 ago 2021, 14:39

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti