# deixar rele acionado por rfid

**URL:** <https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427>\
**Category:** Português\
**Created:** [October 16, 2018, 7:43pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427 "2018-10-16T19:43:58Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 16, 2018, 7:43pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/1 "2018-10-16T19:43:58Z")

</div>

boa tarde pessoal,

ja vi algumas dicas que o leitor rfid aciona por segundos e depois desarma o rele sozinho.  
ja vi tambem que por um botão ele acionao rele, e quando aperta o botão ele aciona novamente.  
minha duvida era se teria como acionar o rele pelo rfid e so desarmar ele com o rfid ler o cartão novamente.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 19, 2018, 2:21pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/2 "2018-10-19T14:21:03Z")

</div>

alguém sabe dizer se esse código faz o que to querendo?

> <https://github.com/miguelbalboa/rfid/blob/master/examples/MinimalInterrupt/MinimalInterrupt.ino>

---

<div class="post-metadata">

**Author:** ![bubulindo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bubulindo/32/214193_2.png) [@bubulindo](https://forum.arduino.cc/u/bubulindo)\
**Post date:** [October 19, 2018, 6:19pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/3 "2018-10-19T18:19:14Z")

</div>

Mostra o que tens actualmente e talvez alguém te ajude.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 20, 2018, 12:01pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/4 "2018-10-20T12:01:38Z")

</div>

então, eu tenho uma mistura de dois códigos um o rele inverte o estado dele pra acionado ou desligado por meio de um botão, ([https://pastebin.com/raw/tR3x8L69](https://pastebin.com/raw/tR3x8L69)) já o outro ativa pelo rfid mais ai só fica um tempo e depois desliga sozinho ([https://pastebin.com/raw/8Vnrz7MS](https://pastebin.com/raw/8Vnrz7MS)).  
sou novo em arduino e esses códigos não são meus.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 20, 2018, 12:20pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/5 "2018-10-20T12:20:47Z")

</div>

> bubulindo:  
> Mostra o que tens actualmente e talvez alguém te ajude.

obrigado por se interessar em ajudar.

---

<div class="post-metadata">

**Author:** ![bubulindo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bubulindo/32/214193_2.png) [@bubulindo](https://forum.arduino.cc/u/bubulindo)\
**Post date:** [October 20, 2018, 10:22pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/6 "2018-10-20T22:22:56Z")

</div>

No ultimo código, tens isto:

```cpp
  if (conteudo.substring(1) == "F3 DE 90 55") //UID 1 - Cartao
  {
    Serial.println("Ola eduardo!");
    Serial.println();
    digitalWrite(2, HIGH); // ativa rele, abre a trava solenoide
    delay(3000);          // espera 3 segundos
    digitalWrite(2, LOW);  // desativa rele, fecha a trava solenoide
  }

```

Ele liga um pino e passado 3 segundos, desliga.

Eu proporia fazer algo assim:

```cpp
//cria a variável na linha em baixo fora da função loop.
unsigned char estadoRele = LOW; 

  if (conteudo.substring(1) == "F3 DE 90 55") //UID 1 - Cartao
  {
    Serial.println("Ola eduardo!");
    Serial.println();
    if (estadoRele == LOW) estadoRele = HIGH; 
    else estadoRele = LOW; 
    digitalWrite(2, estadoRele); // ativa rele, abre a trava solenoide
    
  }

```

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 21, 2018, 11:26am UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/7 "2018-10-21T11:26:41Z")

</div>

> bubulindo:  
> No ultimo código, tens isto:
> 
> ```arduino
>   if (conteudo.substring(1) == "F3 DE 90 55") //UID 1 - Cartao
> 
> ```

{  
&nbsp; &nbsp; Serial.println("Ola eduardo!");  
&nbsp; &nbsp; Serial.println();  
&nbsp; &nbsp; digitalWrite(2, HIGH); // ativa rele, abre a trava solenoide  
&nbsp; &nbsp; delay(3000);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // espera 3 segundos  
&nbsp; &nbsp; digitalWrite(2, LOW);&nbsp; // desativa rele, fecha a trava solenoide  
&nbsp; }

> ```arduino
> 
> Ele liga um pino e passado 3 segundos, desliga. 
> 
> Eu proporia fazer algo assim: 
> 
> ```
> 
> //cria a variável na linha em baixo fora da função loop.  
> unsigned char estadoRele = LOW;

if (conteudo.substring(1) == "F3 DE 90 55") //UID 1 - Cartao  
&nbsp; {  
&nbsp; &nbsp; Serial.println("Ola eduardo!");  
&nbsp; &nbsp; Serial.println();  
&nbsp; &nbsp; if (estadoRele == LOW) estadoRele = HIGH;  
&nbsp; &nbsp; else estadoRele = LOW;  
&nbsp; &nbsp; digitalWrite(2, estadoRele); // ativa rele, abre a trava solenoide  
&nbsp; &nbsp;  
&nbsp; }

> ```arduino
> 
> ```

então ele agora vai inverter o estado do rele com o acionamento por rfid?

se for isso solucionou meu problema, vou montar agora a parte de eletrônica e testar.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 21, 2018, 12:03pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/8 "2018-10-21T12:03:21Z")

</div>

amigo o código ate deu certo, quando ligo a placa e encosto o cartão o rele abre, mais quando encosto o cartão novamente ele não fecha, eu errei alguma coisa na montagem de eletrônica?

---

<div class="post-metadata">

**Author:** ![bubulindo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bubulindo/32/214193_2.png) [@bubulindo](https://forum.arduino.cc/u/bubulindo)\
**Post date:** [October 23, 2018, 6:53am UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/9 "2018-10-23T06:53:39Z")

</div>

Poderá haver algo mais na programação... eu nunca usei esse sensor, logo não sei se ele retornará mais dados do cartão que confundem o código.

Só por curiosidade, coloca aqui o código que tens agora.

Colocaste isto:

```cpp
//cria a variável na linha em baixo fora da função loop.
unsigned char estadoRele = LOW;

```

Fora das funções todas??

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 23, 2018, 9:11am UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/10 "2018-10-23T09:11:36Z")

</div>

todo o código que tenho agora é esse.

//Programa: Sistema de trava eletrica com RFID  
#include \<SPI.h\>  
#include \<MFRC522.h\>

#define SS\_PIN 10  
#define RST\_PIN 9  
MFRC522 mfrc522(SS\_PIN, RST\_PIN); // Create MFRC522 instance.

void setup()  
{  
Serial.begin(9600); // Inicia a serial  
SPI.begin(); // Inicia SPI bus  
mfrc522.PCD\_Init(); // Inicia MFRC522  
Serial.println("Aproxime o seu cartao do leitor...");  
Serial.println();  
pinMode(2, OUTPUT);  
}

void loop()  
{  
// Procura por cartao RFID  
if ( ! mfrc522.PICC\_IsNewCardPresent())  
{  
return;  
}  
// Seleciona o cartao RFID  
if ( ! mfrc522.PICC\_ReadCardSerial())  
{  
return;  
}  
//Mostra UID na serial  
Serial.print("UID da tag :");  
String conteudo= "";  
byte letra;  
for (byte i = 0; i \< mfrc522.uid.size; i++)  
{  
Serial.print(mfrc522.uid.uidByte _\< 0x10 ? " 0" : " ");_  
\_ Serial.print(mfrc522.uid.uidByte\*, HEX);_\_  
 \_ conteudo.concat(String(mfrc522.uid.uidByte \< 0x10 ? " 0" : " "));  
  conteudo.concat(String(mfrc522.uid.uidByte, HEX));  
  }  
  Serial.println();  
  Serial.print("Mensagem : ");  
  conteudo.toUpperCase();\*\__

_\* //cria a variável na linha em baixo fora da função loop.\*_  
_unsigned char estadoRele = LOW;_  
_\* if (conteudo.substring(1) == "F3 DE 90 55") //UID 1 - Cartao\*_  
_\* {\*_  
_\* Serial.println("Ola eduardo!");\*_  
_\* Serial.println();\*_  
_\* if (estadoRele == LOW) estadoRele = HIGH;\*_  
_\* else estadoRele = LOW;\*_  
_\* digitalWrite(2, estadoRele); // ativa rele, abre a trava solenoide\*_

_\* }\*_  
_}_

---

<div class="post-metadata">

**Author:** ![bubulindo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bubulindo/32/214193_2.png) [@bubulindo](https://forum.arduino.cc/u/bubulindo)\
**Post date:** [October 23, 2018, 8:41pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/11 "2018-10-23T20:41:26Z")

</div>

Por acaso leste esta frase que eu escrevi??

> //cria a variável na linha em baixo fora da função loop.

Não parece porque colocaste a linha em questão no mesmo sítio onde a tinha deixado.

Faz o que disse, ou seja, apaga essa linha daí e coloca-a FORA de qualquer função e a lógica vai funcionar.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 24, 2018, 12:21am UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/12 "2018-10-24T00:21:15Z")

</div>

vou tentar acertar, como já disse sou novo em arduino e não conheço de programação, mesmo assim agradeço seu interesse em ajudar.

---

<div class="post-metadata">

**Author:** ![bubulindo](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bubulindo/32/214193_2.png) [@bubulindo](https://forum.arduino.cc/u/bubulindo)\
**Post date:** [October 24, 2018, 3:53pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/13 "2018-10-24T15:53:21Z")

</div>

Experimenta e vê se fnuciona.

Basicamente queres apagar a linha onde está agora e colocá-la aqui.

```cpp
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);  // Create MFRC522 instance.
unsigned char estadoRele = LOW;

```

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 24, 2018, 9:00pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/14 "2018-10-24T21:00:38Z")

</div>

amigo deu certo sim, agora ele muda muito rápido a leitura. o ideal seria ele ler e somente depois se um segundo ler outra vez o cartão.

mesmo assim fico muito feliz por sua ajuda, muito obrigado.

---

<div class="post-metadata">

**Author:** ![eduedge](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/eduedge/32/1181541_2.png) [@eduedge](https://forum.arduino.cc/u/eduedge)\
**Post date:** [October 24, 2018, 9:34pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/15 "2018-10-24T21:34:32Z")

</div>



---

<div class="post-metadata">

**Author:** ![magaiwer2003](https://avatars.discourse-cdn.com/v4/letter/m/d9b06d/32.png) [@magaiwer2003](https://forum.arduino.cc/u/magaiwer2003)\
**Post date:** [March 22, 2019, 11:06pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/16 "2019-03-22T23:06:14Z")

</div>

poderia colocar o cod intero pra ver, no meu da erro!

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 6, 2021, 4:11pm UTC](https://forum.arduino.cc/t/deixar-rele-acionado-por-rfid/551427/17 "2021-05-06T16:11:55Z")

</div>


