Ir ao conteúdo

Outro Erro ao compilar o RFID no esp33 na ide do Arduíno


Ir à solução Resolvido por Danielhbr34,

Posts recomendados

Postado

Ola pessoal, tudo certo? Eu estou fazendo um projeto para entregar, no qual é uma fechadura eletrônica com esp 32. Neste projeto, faz a utilização do RFID, porém na hora que eu compilo na ide do Arduíno, aparece o seguinte erro:

In member function 'MFRC522::StatusCode MFRC522Extended::TCL_Transceive(TagInfo*, byte*, byte, byte*, byte*)':

c:\Users\Takashi Morita\Documents\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:824:34: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')

  824 | if (backData && (backLen > 0)) {

      | ~~~~~~~~^~~

c:\Users\Takashi Morita\Documents\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:847:42: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')

  847 | if (backData && (backLen > 0)) {

      | ~~~~~~~~^~~

 

exit status 1

 

Compilation error: exit status 1

 

IMG-20241004-WA0008.thumb.jpg.f57938a2c0762a611dc874599f12a690.jpg

 

Mesmo instalando todas as bibliotecas, não funciona para o esp32. Quando eu compilo para o arduíno uno funciona. 

Quem tiver uma luz para me ajudar, ficarei grato.

 

Código que eu estou utilizando:

 

// algumas bibliotecas

#include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>



// Definiremos o id que sera liberado o acesso



#define ID "09 F7 30 31"



//define alguns pinos do esp32 que serao conectados aos modulos e componentes

#define LedVerde 26

#define LedVermelho 12

#define tranca 2

#define buzzer 15

#define SS_PIN 14

#define RST_PIN 27







MFRC522 mfrc522(SS_PIN, RST_PIN); // define os pinos de controle do modulo de leitura de cartoes RFID

LiquidCrystal_I2C lcd(0x27, 16, 2); // define informações do lcd como o endereço I2C (0x27) e tamanho do mesmo



void setup()

{

  SPI.begin(); // inicia a comunicacao SPI que sera usada para comunicacao com o mudulo RFID



  lcd.begin(); // inicia o lcd



  mfrc522.PCD_Init(); //inicia o modulo RFID



  Serial.begin(115200); // inicia a comunicacao serial com o computador na velocidade de 115200 baud rate



  Serial.println("RFID + ESP32");

  Serial.println("Passe alguma tag RFID para verificar o id da mesma.");



  // define alguns pinos como saida

  pinMode(LedVerde, OUTPUT);

  pinMode(LedVermelho, OUTPUT);

  pinMode(tranca, OUTPUT);

  pinMode(buzzer, OUTPUT);

}



void loop() {



  lcd.home(); // bota o cursor do lcd na posicao inicial

  lcd.print("Aguardando"); // imprime na primeira linha a string "Aguardando"

  lcd.setCursor(0,1); // seta o cursor para a segunda linha

  lcd.print("Leitura RFID"); // mostra na tela a string "Leitura RFID"



  if ( ! mfrc522.PICC_IsNewCardPresent()) {

     return; // se não tiver um cartao para ser lido recomeça o void loop

  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {

    return; //se não conseguir ler o cartao recomeça o void loop tambem

  }



  String conteudo = ""; // cria uma string



  Serial.print("id da tag :"); //imprime na serial o id do cartao



  for (byte i = 0; i < mfrc522.uid.size; i++){ // faz uma verificacao dos bits da memória do cartao

     //ambos comandos abaixo vão concatenar as informações do cartao...

     //porém os 2 primeiros irao mostrar na serial e os 2 ultimos guardarao os valores na string de conteudo para fazer as verificacoes

     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();

  conteudo.toUpperCase(); // deixa as letras da string todas maiusculas





  if (conteudo.substring(1) == ID){ // verifica se o ID do cartao lido tem o mesmo ID do cartao que queremos liberar o acesso



      digitalWrite(LedVerde, HIGH); // ligamos o led verde

      lcd.clear(); // limpamos o que havia sido escrito no lcd

      lcd.print("Acesso Liberado"); // informamos pelo lcd que a tranca foi aberta



      digitalWrite(tranca, HIGH); //abrimos a tranca por 5 segundos



      for(byte s = 5; s > 0; s--){ //vai informando ao usuario quantos segundos faltao para a tranca ser fechada

        lcd.setCursor(8,1);

        lcd.print(s);

        delay(1000);

      }



      digitalWrite(tranca, LOW); // fecha a tranca

      digitalWrite(LedVerde, LOW); // e desliga o led

      lcd.clear(); // limpa os caracteres q estão escritos no lcd



  }else{ // caso o cartao lido não foi registrado



    digitalWrite(LedVermelho, HIGH); // vamos ligar o led vermelho



    for(byte s = 5; s > 0; s--){ // uma contagem / espera para poder fazer uma nova leitura



        lcd.clear(); // limpa as informações que estão na tela

        lcd.home(); // nota na posicao inicial

        lcd.print("Acesso negado"); // infoma ao usuario que ele não tem acesso

        lcd.setCursor(8,1); // coloca o cursor na coluna 8 da linha 2

        lcd.print(s); // informa quantos segundos faltam para pode fazer uma nova leitura





        // faz o buzzer emitir um bip por segundo

          delay(800);

          digitalWrite(buzzer, HIGH);

          delay(200);

          digitalWrite(buzzer, LOW);

  

      }

        digitalWrite(LedVermelho, LOW); // desliga o led vermelho

        lcd.clear(); // limpa as informações do lcd

    }

  

 // recomeça

}

 

  • Solução
Postado
Em 04/10/2024 às 10:51, Danielhbr34 disse:

Ola pessoal, tudo certo? Eu estou fazendo um projeto para entregar, no qual é uma fechadura eletrônica com esp 32. Neste projeto, faz a utilização do RFID, porém na hora que eu compilo na ide do Arduíno, aparece o seguinte erro:

In member function 'MFRC522::StatusCode MFRC522Extended::TCL_Transceive(TagInfo*, byte*, byte, byte*, byte*)':

c:\Users\Takashi Morita\Documents\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:824:34: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')

  824 | if (backData && (backLen > 0)) {

      | ~~~~~~~~^~~

c:\Users\Takashi Morita\Documents\Arduino\libraries\MFRC522\src\MFRC522Extended.cpp:847:42: error: ordered comparison of pointer with integer zero ('byte*' {aka 'unsigned char*'} and 'int')

  847 | if (backData && (backLen > 0)) {

      | ~~~~~~~~^~~

 

exit status 1

 

Compilation error: exit status 1

 

IMG-20241004-WA0008.thumb.jpg.f57938a2c0762a611dc874599f12a690.jpg

 

Mesmo instalando todas as bibliotecas, não funciona para o esp32. Quando eu compilo para o arduíno uno funciona. 

Quem tiver uma luz para me ajudar, ficarei grato.

 

Código que eu estou utilizando:

 

// algumas bibliotecas

#include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>



// Definiremos o id que sera liberado o acesso



#define ID "09 F7 30 31"



//define alguns pinos do esp32 que serao conectados aos modulos e componentes

#define LedVerde 26

#define LedVermelho 12

#define tranca 2

#define buzzer 15

#define SS_PIN 14

#define RST_PIN 27







MFRC522 mfrc522(SS_PIN, RST_PIN); // define os pinos de controle do modulo de leitura de cartoes RFID

LiquidCrystal_I2C lcd(0x27, 16, 2); // define informações do lcd como o endereço I2C (0x27) e tamanho do mesmo



void setup()

{

  SPI.begin(); // inicia a comunicacao SPI que sera usada para comunicacao com o mudulo RFID



  lcd.begin(); // inicia o lcd



  mfrc522.PCD_Init(); //inicia o modulo RFID



  Serial.begin(115200); // inicia a comunicacao serial com o computador na velocidade de 115200 baud rate



  Serial.println("RFID + ESP32");

  Serial.println("Passe alguma tag RFID para verificar o id da mesma.");



  // define alguns pinos como saida

  pinMode(LedVerde, OUTPUT);

  pinMode(LedVermelho, OUTPUT);

  pinMode(tranca, OUTPUT);

  pinMode(buzzer, OUTPUT);

}



void loop() {



  lcd.home(); // bota o cursor do lcd na posicao inicial

  lcd.print("Aguardando"); // imprime na primeira linha a string "Aguardando"

  lcd.setCursor(0,1); // seta o cursor para a segunda linha

  lcd.print("Leitura RFID"); // mostra na tela a string "Leitura RFID"



  if ( ! mfrc522.PICC_IsNewCardPresent()) {

     return; // se não tiver um cartao para ser lido recomeça o void loop

  }

  if ( ! mfrc522.PICC_ReadCardSerial()) {

    return; //se não conseguir ler o cartao recomeça o void loop tambem

  }



  String conteudo = ""; // cria uma string



  Serial.print("id da tag :"); //imprime na serial o id do cartao



  for (byte i = 0; i < mfrc522.uid.size; i++){ // faz uma verificacao dos bits da memória do cartao

     //ambos comandos abaixo vão concatenar as informações do cartao...

     //porém os 2 primeiros irao mostrar na serial e os 2 ultimos guardarao os valores na string de conteudo para fazer as verificacoes

     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();

  conteudo.toUpperCase(); // deixa as letras da string todas maiusculas





  if (conteudo.substring(1) == ID){ // verifica se o ID do cartao lido tem o mesmo ID do cartao que queremos liberar o acesso



      digitalWrite(LedVerde, HIGH); // ligamos o led verde

      lcd.clear(); // limpamos o que havia sido escrito no lcd

      lcd.print("Acesso Liberado"); // informamos pelo lcd que a tranca foi aberta



      digitalWrite(tranca, HIGH); //abrimos a tranca por 5 segundos



      for(byte s = 5; s > 0; s--){ //vai informando ao usuario quantos segundos faltao para a tranca ser fechada

        lcd.setCursor(8,1);

        lcd.print(s);

        delay(1000);

      }



      digitalWrite(tranca, LOW); // fecha a tranca

      digitalWrite(LedVerde, LOW); // e desliga o led

      lcd.clear(); // limpa os caracteres q estão escritos no lcd



  }else{ // caso o cartao lido não foi registrado



    digitalWrite(LedVermelho, HIGH); // vamos ligar o led vermelho



    for(byte s = 5; s > 0; s--){ // uma contagem / espera para poder fazer uma nova leitura



        lcd.clear(); // limpa as informações que estão na tela

        lcd.home(); // nota na posicao inicial

        lcd.print("Acesso negado"); // infoma ao usuario que ele não tem acesso

        lcd.setCursor(8,1); // coloca o cursor na coluna 8 da linha 2

        lcd.print(s); // informa quantos segundos faltam para pode fazer uma nova leitura





        // faz o buzzer emitir um bip por segundo

          delay(800);

          digitalWrite(buzzer, HIGH);

          delay(200);

          digitalWrite(buzzer, LOW);

  

      }

        digitalWrite(LedVermelho, LOW); // desliga o led vermelho

        lcd.clear(); // limpa as informações do lcd

    }

  

 // recomeça

}

 

 

Acabei resolvendo galera, muito obrigado para quem leu.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...