Всем привет Ребят подскажите куда копать. Использую код и схему с данного форума Ардуино UNO Код (C++): #include <SPI.h> #include <MFRC522.h> #define RST_PIN 9 // пин RST byte maxRF = 1; // всего рфидов (включая нулевой) byte ssRFpin[2] = {2, 3}; // SS пины рфидов byte massRFuid[2][4]; // массив UID меток (первый - номер ридера, второй - 4 числа UID) MFRC522 *mfrc522[2]; void setup() { for (byte i = 0; i <= maxRF; i++) { // выставляем пины mfrc522[i] = new MFRC522(ssRFpin[i], RST_PIN); } Serial.begin(9600); while (!Serial); SPI.begin(); for (byte i = 0; i <= maxRF; i++) { mfrc522[i]->PCD_Init(); } Serial.println("Card please:"); } void loop() { for (int i = 0; i <= maxRF; i++) { // заполняем массив меток readRF(i); delay (100); // не знаю надо ли } SerialRFprint(); // печатаем содержимое массива меток на экран delay(2000); } void readRF (byte RF) { if ( ! mfrc522[RF]->PICC_IsNewCardPresent()) { // если метки нет massRFuid[RF][0] = 0; // метим отсуствие метки в первом числе UID return; } if ( ! mfrc522[RF]->PICC_ReadCardSerial()) { massRFuid[RF][0] = 0; return; } dump_byte_array(mfrc522[RF]->uid.uidByte, 4, RF); mfrc522[RF]->PICC_IsNewCardPresent(); mfrc522[RF]->PICC_ReadCardSerial(); } void dump_byte_array(byte * buffer, byte bufferSize, byte RF) { // считываем UID в массив for (byte i = 0; i < bufferSize; i++) { massRFuid[RF][i] = buffer[i]; } } void SerialRFprint () { // печать массива меток на экран for (int i = 0; i <= maxRF; i++) { Serial.print("Card "); Serial.print(i, DEC); Serial.print(": "); if (massRFuid[i][0] == 0) { Serial.println("NO card"); } else { for (int j = 0; j < 4; j++) { // печатаем UID Serial.print(massRFuid[i][j], HEX); Serial.print(" "); } Serial.println(""); } } } Если оба RFID подключены то не работает ни один. Если выдернуть MISO одного, то второй работает.
http://arduino.ua/ru/prog/SPI . Ваши RFID заглушили выходы друг друга. надо или через резисторы их пустить или через диоды. Ну или через логику повесить.
Проверить так. Взять один РФИД, воткнуть SS в GND, убедиться что работает. Потом воткнуть SS в +5В и снова проверить. Если все равно работает, значит нога дохлая и эти модули могут использоваться только по одному. Ну или дорабатывать напильником.
Какой еще 10 порт? У вас SS подключены к 2 и 3 пину соответственно. Об этом говорит хотя бы эта строка: Код (C++): byte ssRFpin[2] = {2, 3}; // SS пины рфидов уж несмотря на схему. Что вы там на GND и + цепляли? Вот вам схемка, смотреть колонку SPI. Кстати, программка слегка устарела, да и байт у UID метки не 4, а 5. Но вполне еще рабочая.
вы оба что ли к 10 пину подключили? И если пины меняли - какого же (даже не так - КАКОГО ФИГА!) вы публикуете скетч с неверными установками? Простите за резкость - но новички задолбали тем, что задют вопросы, выкладывая при этом схемы и скетчи, не соответсвующие своему реальном подключению. Короче - дальнейшие вопросы не имеют смысла, пока не выложите ВАШУ схему и ВАШ скетч, а не "скетч из форума", в котором вы налепили кучу поправок
На момент выкладывания поста, подключал к 2 и 3 пину. Когда тестировал, отключил один RFID полностью, а второй подключал SS ногу к GND - не работало, к +5В - не работало. К любому пину - 2,3,10 работает( с поправкой в коде строки (byte ssRFpin[2] = {2, 3} на byte ssRFpin[2] = {10};.