Go Down

Topic: Adicionando uma chave seletora para selerionar códigos diferentes. (Read 1 time) previous topic - next topic

wmazoni

Boa tarde,

Estou precisando de uma ajuda  no projeto que estou fazendo. Preciso fazer a interação desses três programas abaixo, mais a seleção individual deles por chave seletora, ou seja, cada posição da chave seletora roda um dos programas.

Estou usando leitor RFID para acesso
Como eu poderia fazer isso?

Codigo 1 (acesso à sala 1)

Code: [Select]
#include <SPI.h>
#include <MFRC522.h>
 


#define SS_PIN 10
#define RST_PIN 9
// Definicoes pino modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN);

// Leds indicadores acesso liberado ou negado
int led_liberado = 5;
int led_negado = 6;
int led_chegada = 4;

char st[20];

void setup()
{
  pinMode(led_liberado, OUTPUT);
  pinMode(led_negado, OUTPUT);
  pinMode(led_chegada, OUTPUT);
  // Inicia a serial
  Serial.begin(9600);
  // Inicia  SPI bus
  SPI.begin();
  // Inicia MFRC522
  mfrc522.PCD_Init();
  // Mensagens iniciais no serial monitor
  Serial.println("Aproxime o seu cartao do leitor...");
  Serial.println();
}

void loop()
{
  // Aguarda a aproximacao do cartao
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Seleciona um dos cartoes
  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[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Mensagem : ");
  conteudo.toUpperCase();
 
  // Testando cartão A
  if (conteudo.substring(1) == "A4 6F 88 19")
  {
    // Levanta a cancela e acende o led verde
    //microservo9g.write(-90);
    digitalWrite(led_liberado, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    delay(3000);

    digitalWrite(led_liberado, LOW);
    }
    //Testando cartão B
    if (conteudo.substring(1) == "E4 23 88 19")
  {
   
    digitalWrite(led_liberado, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    delay(3000);
    digitalWrite(led_liberado, LOW);
    }
    //Testando cartão C (sala1)
    if (conteudo.substring(1) == "E3 22 0A 03")
  {
   
    digitalWrite(led_chegada, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    //Pisca led verde
    for (int i = 1; i<5 ; i++)
    {
      digitalWrite(led_chegada, HIGH);
      delay(200);
      digitalWrite(led_chegada, LOW);
      delay(200);
    }
   }
   
  // Cartão D
  if (conteudo.substring(1) == "23 EA 12 03")
  {
    Serial.println("Cartao2 - Acesso negado !!");
    Serial.println();
    // Pisca o led vermelho
    for (int i= 1; i<5 ; i++)
    {
      digitalWrite(led_negado, HIGH);
      delay(200);
      digitalWrite(led_negado, LOW);
      delay(200);
    }
  }
    // Cartão E
  if (conteudo.substring(1) == "44 53 60 19")
  {
    Serial.println("Cartao2 - Acesso negado !!");
    Serial.println();
    // Pisca o led vermelho
    for (int i= 1; i<5 ; i++)
    {
      digitalWrite(led_negado, HIGH);
      delay(200);
      digitalWrite(led_negado, LOW);
      delay(200);
    }
  }
    delay(1000);
  }


Codigo 2 (acesso a sala 2)

Code: [Select]
 

#include <SPI.h>
#include <MFRC522.h>
 


#define SS_PIN 10
#define RST_PIN 9
// Definicoes pino modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN);

// Leds indicadores acesso liberado ou negado
int led_liberado = 5;
int led_negado = 6;
int led_chegada = 4;

char st[20];

void setup()
{
  pinMode(led_liberado, OUTPUT);
  pinMode(led_negado, OUTPUT);
  pinMode(led_chegada, OUTPUT);
 
  // Inicia a serial
  Serial.begin(9600);
  // Inicia  SPI bus
  SPI.begin();
  // Inicia MFRC522
  mfrc522.PCD_Init();
  // Mensagens iniciais no serial monitor
  Serial.println("Aproxime o seu cartao do leitor...");
  Serial.println();
}

void loop()
{
  // Aguarda a aproximacao do cartao
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Seleciona um dos cartoes
  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[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Mensagem : ");
  conteudo.toUpperCase();
 
  // Testando cartão A
  if (conteudo.substring(1) == "A4 6F 88 19")
  {

    digitalWrite(led_liberado, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    delay(3000);
   
    digitalWrite(led_liberado, LOW);
    }
    //Testando cartão B
    if (conteudo.substring(1) == "E4 23 88 19")
  {

   
    digitalWrite(led_liberado, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    delay(3000);
   
    digitalWrite(led_liberado, LOW);
    }
    //Testando cartão D (sala2)
    if (conteudo.substring(1) == "23 EA 12 03")
  {
 
    digitalWrite(led_chegada, HIGH);
    Serial.println("Cartao - Acesso liberado !");
    Serial.println();
    //Pisca led verde
    for (int i = 1; i<5 ; i++)
    {
      digitalWrite(led_chegada, HIGH);
      delay(200);
      digitalWrite(led_chegada, LOW);
      delay(200);
    }
  }
  // Testa cartão C sala 1
  if (conteudo.substring(1) == "E3 22 0A 03")
  {
    Serial.println("Cartao2 - Acesso negado !!");
    Serial.println();
    // Pisca o led vermelho
    for (int i= 1; i<5 ; i++)
    {
      digitalWrite(led_negado, HIGH);
      delay(200);
      digitalWrite(led_negado, LOW);
      delay(200);
    }
  }
    // Testa cartão E (sala 3)
  if (conteudo.substring(1) == "44 53 60 19")
  {
    Serial.println("Cartao2 - Acesso negado !!");
    Serial.println();
    // Pisca o led vermelho
    for (int i= 1; i<5 ; i++)
    {
      digitalWrite(led_negado, HIGH);
      delay(200);
      digitalWrite(led_negado, LOW);
      delay(200);
    }
  }
  delay(1000);
}



Desde já agradeço.

luisilva

Falou em 3 programas mas só apresenta 2. Onde está o 3º? Que tipo de chave seletora está a pensar em usar? O que significa "interação" neste contexto? Isto é um trabalho para a escola?

wmazoni

Não coloquei o terceiro por causa da quantidade de caracteres foi maior que a permitida. Uma chave seletora pode ser essa:



Sim, estou tentando fazer um projeto desse tipo como trabalho para escola

bubulindo

Naada como usar 3 ifs e meter cada código numa função...
This... is a hobby.

Go Up