一台のArduino UNOで二つのMFRC522を使用する方法
目的
2つのMFRC522に同時にカードが1枚ずつかざされていると反応する仕組みを作りたい
1台のArduinoで2つのMFRC522リーダーを動かしたいと考えています。
2つのリーダーが同時に別のカードがかざされていると反応する仕組みを作りたいです。
ただ疑問点として、そもそも複数のMFRC522をArduino UNOに接続することは可能なのか
可能な場合配線とコードについて教えてほしいです。
解決方法を教えて下さい。
現在一台の形で使用しているコードはこちらになります
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte targetUID[] = {0x53, 0x0D, 0x98, 0x52, 0x61, 0x00, 0x01};
unsigned long lastInitTime = 0; // 最後に初期化された時間
unsigned long initInterval = 10000; // 初期化間隔(ミリ秒)
void setup()
{
Serial.begin(57600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("カードをかざしてください。");
}
void loop()
{
if (shouldInitialize()) // 初期化が必要かどうかを確認
{
initialize(); // 初期化関数を呼び出す
delay(1000); // ボタンバウンス対策のため短時間待機
}
if (mfrc522.PICC_IsNewCardPresent())
{
if (mfrc522.PICC_ReadCardSerial())
{
mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid));
Serial.println();
if (memcmp(mfrc522.uid.uidByte, targetUID, mfrc522.uid.size) == 0)
{
Serial.println("UIDが一致しました。");
}
else
{
Serial.println("UIDが一致しません。");
}
Serial.println();
while (mfrc522.PICC_IsNewCardPresent())
{
delay(100);
}
Serial.println("カードがかざされていません。");
}
}
delay(100);
}
bool shouldInitialize()
{
// 現在の時間が初期化の間隔を越えているかどうかを確認
return (millis() - lastInitTime >= initInterval);
}
void initialize()
{
Serial.println("初期化処理を行います。");
// ここに初期化のためのコードを追加
SPI.begin();
mfrc522.PCD_Init();
Serial.println("チップをかざしてください。");
lastInitTime = millis(); // 初期化が行われた時間を更新
}
0