Ви не увійшли.
Сторінки 1
Спасибо за ответ!
Да всё правильно, хочу подружить SD и MFRC522 по одному SPI и развязать чип селектом.
со свободными ножками конечно напряг, но со временем планирую весь проект перевести на мегу, так что ножек должно добавиться.
Может есть где-то статья как для начинающего как MFRC522 перевести на программный интерфейс?
UART пока свободен.
Ещё странная ситуация:
После того как отключаю MISO от SD ридера согласно скетча SS_PIN остаётся в HIGH и вроде бы как RFID ридер не должен читать карточки, но он их читает. Объяснить почему так происходит вообще не могу ...
Пробовал назначить #define SS_PIN 5 (Slave Select для RFID на пин 5), но результат аналогичный ...
Имеем следующее:
Arduino UNO к которому подключены RFID и SD карт ридеры.
При выполнении скетча инициализация SD карты проходит (сообщение Card Ready), но перестают читаться карты RFID, хотя SS_PIN согласно скетча переводится в LOW, а CS_pin (для SD card) соответственно в HIGH.
Заранее благодарен за подсказки!!!
//
// -----------------------------------------------------------------------------------
// * Pin layout should be as follows:
// * Signal Pin Pin Pin
// * Arduino Uno MFRC522 board Micro SD Card
// * ---------------------------------------------------------------------------------
// * Reset 9 RST
// * SPI SS 10 SDA
// * SPI MOSI 11 MOSI MOSI
// * SPI MISO 12 MISO MISO
// * SPI SCK 13 SCK SCK
// * SPI SS 2 4 CS
// * Power 3.3V 5V
//
#include <SPI.h>
#include <MFRC522.h>
#include <SD.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
int CS_pin = 4;
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
//Disable SD Card
pinMode(CS_pin, OUTPUT);
digitalWrite(CS_pin, HIGH);
// Enable RFID
pinMode(SS_PIN, OUTPUT);
digitalWrite(SS_PIN, LOW);
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
// Disable RFID and enable SD
digitalWrite(CS_pin, LOW);
digitalWrite(SS_PIN, HIGH);
Serial.println("Initializing Card");
if (!SD.begin(CS_pin)) {
Serial.println("Card Failed");
return;
}
else Serial.println("Card Ready");
// Enable RFID and disable SD
Serial.println("Waiting for RFID Card");
digitalWrite(CS_pin, HIGH);
digitalWrite(SS_PIN, LOW);
}
void loop() {
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent()) {
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial()) {
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.
String UIDString = "";
// Dump UID
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
UIDString = UIDString + String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
UIDString = UIDString + String(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
}
Сторінки 1