Comunicação entre arduino e RFID-RC522 com ethernet shield

Boas, estou de momento a fazer um projeto em o objetivo é enviar dados do cartão passado no RFID para o meu site via json...
mas estou com uma dificuldade no ethernet shield pois ele usa as portas 11, 12, 13, 10, pois o RDIF tem essas pré definidas sem o ethernet funciona e consigo fazer print dos valores na consola, já com o ethernet shield não.
Se alguém soube-se de alguma solução agradecia

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

#define SS_PIN 10
#define RST_PIN 9
#define buzzer 2
#define GREEN 4
#define RED 3

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
 
void setup() 
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Approximate your card to the reader...");
  Serial.println();
  pinMode(7, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() 
{digitalWrite(RED,HIGH);
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "69 F5 ED 6E") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println();
   digitalWrite(GREEN,HIGH);
     tone(buzzer, 1000); // Send 1KHz sound signal...
  delay(800);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(800); 
    digitalWrite(GREEN,LOW);
  }
 
 else   {
    Serial.println(" Access denied");
    digitalWrite(RED,HIGH);
     tone(buzzer, 1000); // Send 1KHz sound signal...
  delay(800);        // ...for 1 sec
  noTone(buzzer);     // Stop sound...
  delay(800); 
    digitalWrite(RED,LOW);
   
  }
}

ethernet shield pois ele usa as portas 11, 12, 13, 10

Observando seu código:

#define SS_PIN 10
#define RST_PIN 9
#define buzzer 2
#define GREEN 4
#define RED 3

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

Ambos o Ethernet e o MFRC522 estão usando o mesmo pino 10 como SS (Slave Select).
Como usam a interface SPI, os pinos 11, 12, 13 são compartilhados, mas devem ter pinos SS diferentes para funcionar.

Mudar o Ethernet Shield é difícil fisicamente, tente mudar o SS do MFRC522 para outro pino, por exemplo 6, 7 ou 8. Não esqueça de alterar no código o SS_PIN.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.