Čtení a zápis na SD kartu jde dobře a s knihovnou TMRpcm jde dobře i přehrávání zvuku. A k rfid: mám http://navody.arduino-shop.cz/navody-k- ... 6-mhz.html vše funguje dobře, ale když to obojí spojím perou se o spi.
Kód: Vybrat vše
#include <SD.h>
#define SD_ChipSelectPin 10
#include <TMRpcm.h>
#include <SPI.h>
#include <MFRC522.h>
TMRpcm tmrpcm;
#define SDA_PIN 9
#define RST_PIN 8
MFRC522 rfid(SDA_PIN, RST_PIN);
void setup() {
pinMode(10,OUTPUT);
tmrpcm.speakerPin=11;
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
if(!SD.begin(SD_ChipSelectPin))
{
Serial.println("SD fail");
return;
}
tmrpcm.setVolume(5);
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return;
if ( ! rfid.PICC_ReadCardSerial())
return;
Serial.print("docteno");
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.print("RFID tag typu: ");
Serial.println(rfid.PICC_GetTypeName(piccType));
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("Tento RFID tag neni podporovany (typ MIFARE Classic).");
return;
}
Serial.print("Adresa RFID tagu: ");
vypisHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
if(rfid.uid.uidByte[0] == 0xF0 & rfid.uid.uidByte[1] == 0x7E & rfid.uid.uidByte[2] == 0x57 & rfid.uid.uidByte[3] == 0x56) {
Serial.println("Karta bila");
tmrpcm.play("testa.wav");
}
else if(rfid.uid.uidByte[0] == 0x57 & rfid.uid.uidByte[1] == 0x3F & rfid.uid.uidByte[2] == 0xBB & rfid.uid.uidByte[3] == 0x79) {
Serial.println("Detekovan modry privesek!");
tmrpcm.play("testb.wav");
}
else {
Serial.println("Detekovan neznamy RFID tag!");
}
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
Serial.println("konec loopu");
}
void vypisHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
a ještě dotaz trochu mimo: proč je na arduinu "vyhrazený" ss pin, jaký je rozdíl když použiji jiný?
Byl bych vděčný kdyby mi někdo poradil. Předem děkuji.