Dopo le dovute presentazioni nel topic apposito, spero che qualcuno possa aiutarmi a risolvere questo problema.
Sto sperimentando vari moduli per capirne il funzionamento e le interazioni che si possono creare.
Nello specifico adesso mi sono imbattuto nel problema di riuscire a far funzionare due moduli che utilizzano entrambi il protocollo SPI.
Leggendo su internet ho capito che devono essere collegati in parallelo le uscite SCK, MOSI e MISO, mentre devo assegnare un pin a ciascun SS.
Di volta in volta comunicherà il modulo che avrà il contatto SS impostato su LOW.
Il passaggio successivo è capire come devo gestire le cose a livello di sketch.
Ci pensano le librerie a fare lo switch oppure devo fare qualcosa io per selezionare uno o l'altro modulo?
Con il codice che ho allegato sotto vorrei leggere una scheda rfid e riportare il suo numero sia sullo schermo seriale che sulla scheda sd.
Allo stato attuale non funziona niente.
Se disconnetto fisicamente il modulo sd la lettura avviene, così come la stampa su monitor seriale.
Un grazie di cuore a chiunque mi aiuti a capire ed apprendere.
#include <MFRC522.h>
#include <SD.h>
const int spi_miso = 12; //mega 50
const int spi_mosi = 11; //mega 51
const int spi_sck = 13; //mega 52
const int rfid_ss = 10; //mega 53
const int rfid_rst = 9; //mega 49
const int sd_ss = 8; //mega 48
MFRC522 rfid(rfid_ss, rfid_rst);
File myfile;
byte cardLetta[4];
void setup() {
pinMode(rfid_ss, OUTPUT);
pinMode(sd_ss, OUTPUT);
digitalWrite(rfid_ss, HIGH);
digitalWrite(sd_ss, HIGH);
Serial.begin(9600);
SPI.begin();
SD.begin(sd_ss);
rfid.PCD_Init();
}
void loop() {
int i = 0;
if(rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()){
for(i = 0; i < 4; i++){
cardLetta[i] = rfid.uid.uidByte[i];
Serial.print(cardLetta[i]);
Serial.print(".");
myfile = SD.open("log.txt", FILE_WRITE);
myfile.print(cardLetta[i]);
myfile.print(".");
}
rfid.PICC_HaltA();
Serial.println();
myfile.close();
}
}