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.
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) já o outro ativa pelo rfid mais ai só fica um tempo e depois desliga sozinho (https://pastebin.com/raw/8Vnrz7MS).
sou novo em arduino e esses códigos não são meus.
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:
//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
}
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?
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*