[Pouzity material] :
- Arduino UNO
- RFID - RC522
(vyzkouseno na dvou modelech Fruiduino / FreeNove + ELEGOO)
- Muj problém spociva ve zobrazeném vysledném obsahu, ktery na misto zobrazeni spravnych znaku zobrazuje znaky jako "wׅa⸮⸮(⸮
" snad mi rozumite. Coz mi nasledovne vrati neco jako :
JGIE002⸮*&Iv⸮2⸮w
JGIE002⸮*&Iv⸮2⸮
atd. Jen ta prvni polovina JGIE002 se zda ze je zobrazena korektne.
V "seriovém monitoru" to pak vypada nejak nasledovne :
[Ucel]
- Ceho bych potreboval dosahnout, je prekopirovat mou klicenku k otvirani dveri, jelikoz jsem jednu jiz stratil, chtel bych si naklonovat tu jednu zbyvajici. Jde o takovou tu modrou placku nebo jak to nazvat k otvirani domovnich dveri (RFID cipova karta / klicenka). Problém je ale v tom, ze ji nedokazu korektne precist, jelikoz mi vraci ruzné 'chars'.
- Je-li potreba, dokladam i pouzity kod:
Kód: Vybrat vše
//Mr.Egot https://pc-help.cnews.cz
#include <SPI.h>
#include <RFID.h>
//D10: deklarace pin SDA. D9: pin RST
RFID rfid(10,9);
//4-bytové sériové cislo karty -- paty bajt je kontrolni bajt
unsigned char serNum[5];
unsigned char status;
unsigned char str[MAX_LEN];
unsigned char blockAddr; //Vybrat adresu provozniho bloku: od 0 do 63
unsigned char writeDate[16] = "Vytvorit promenou ktera ulozi predchozi nacteni karty cislo 1"
//16 sektoru - délka v kazdém sektoru je 6 bajtu
unsigned char sectorKeyA[16][16] = {
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } ,
};
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.init();
}
void loop()
{
rfid.findCard(PICC_REQIDL, str);
if (rfid.anticoll(str) == MI_OK){
Serial.print("ID pouzité karty je: ");
for(int i = 0; i < 4; i++){
Serial.print(0x0F & (str[i] >> 4),HEX);
Serial.print(0x0F & str[i],HEX);
}
Serial.println("");
memcpy(rfid.serNum,str,5);
}
rfid.selectTag(rfid.serNum);
/*
Zvolit zapis nebo cteni
writeCard(4); //Zapis na ctecku karet
*/
readCard(4); //Nacteni z ctectky karet
rfid.halt(); //Prechod do stavu spanku
}
//Zapis na kartu
void writeCard(int blockAddr){
if (rfid.auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], rfid.serNum) == MI_OK)
{
//status = rfid.write((blockAddr/4 + 3*(blockAddr/4+1)), sectorKeyA[0]);
Serial.print("Nastavit novy obsah karty / upravit data sektoru: ");
Serial.println(blockAddr/4,DEC);
if(rfid.write(blockAddr, writeDate) == MI_OK){
Serial.println("Zapis na kartu OK!");
}
}
}
//Cteni z karty
void readCard(int blockAddr){
if ( rfid.auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], rfid.serNum) == MI_OK)
{
Serial.print("Nacteni block Addr chipu sektor cislo: ");
Serial.println(blockAddr,DEC);
if( rfid.read(blockAddr, str) == MI_OK){
Serial.print("Zobrazeni ulozenych dat: ");
Serial.println((char *)str);
}
}
}
Predem dekuji za mozné navrhy ci pomoc.
Mr.Egot