I år tänkte jag göra ett RFID pussel, kommer gå ut på att dom ska placera rätt sak på rätt plats för att komma åt en skattkarta, alltså rätt tag på rätt läsare = klick i ett relä.
Blev jag inspirerad av denna video
https://www.youtube.com/watch?v=f_f_5cL0Pd0
Såg enkelt ut, så jag köpte hem fyra RFID läsare och har kopplat ihop enligt hans schema då insåg jag att han inte delar med sig av koden utan att jag ska betala 100:- för varje nytt projekt han postar genom patreon, nja... känns lite drygt, försökte hitta en annan kod och hittade en som jag fick igång grejerna med med som funkar lite för bra, sålänge jag presenterar en av taggarna för en läsare fyra gånger så klickar relät och det går ju inte.
Satt sen och skrev av hans kod från youtube filmen Men jag får den inte att fungera det är precis som om allt jag försöker läsa från biblioteket MFRC522.h inte fungerar.
Eller först fick jag ett felmeddelande som var:
A
- Kod: Markera allt
rduino:1.8.8 (Mac OS X), Kort:"Arduino/Genuino Uno"
rfidpp:102:0: error: unterminated argument list invoking macro "F"
exit status 1
unterminated argument list invoking macro "F"
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Så jag tog bort alla F i serial print
tex:
Serial.print(F("initialised on pin "));
blev
Serial.print("initialised on pin ");
Då fick jag upp det jag tror är ett biblioteksproblem
- Kod: Markera allt
Arduino:1.8.8 (Mac OS X), Kort:"Arduino/Genuino Uno"
In file included from /Users/peterpersson/Desktop/rfidpptest_auto/rfidpptest_auto.ino:8:0:
/Users/peterpersson/Documents/Arduino/libraries/MFRC522/src/MFRC522Extended.h: In constructor 'MFRC522Extended::MFRC522Extended(uint8_t)':
/Users/peterpersson/Documents/Arduino/libraries/MFRC522/src/MFRC522Extended.h:81:44: warning: 'MFRC522::MFRC522(byte)' is deprecated: use MFRC522(byte chipSelectPin, byte resetPowerDownPin) [-Wdeprecated-declarations]
MFRC522Extended(uint8_t rst) : MFRC522(rst) {};
^
In file included from /Users/peterpersson/Desktop/rfidpptest_auto/rfidpptest_auto.ino:7:0:
/Users/peterpersson/Documents/Arduino/libraries/MFRC522/src/MFRC522.h:339:2: note: declared here
MFRC522(byte resetPowerDownPin);
^
/Users/peterpersson/Desktop/rfidpptest_auto/rfidpptest_auto.ino: In function 'void loop()':
rfidpptest_auto:63:75: error: 'dump_byte_array' was not declared in this scope
readRFID=dump_byte_array(mfrc522[i].uid.uidByte, mfrc522[i].uid.size);
^
rfidpptest_auto:65:21: error: 'currentIDs' was not declared in this scope
if (readRFID != currentIDs[i]) {
^
rfidpptest_auto:66:7: error: 'changeValue' was not declared in this scope
changeValue = true;
^
rfidpptest_auto:69:9: error: 'currentIDs' was not declared in this scope
if (currentIDs[i] != correctIDs[i]) {
^
rfidpptest_auto:73:16: error: 'class MFRC522' has no member named 'PCD_StopCryptol1'
mfrc522[i].PCD_StopCryptol1();
^
rfidpptest_auto:82:22: error: 'currentIDs' was not declared in this scope
Serial.println(currentIDs[i]);
^
/Users/peterpersson/Desktop/rfidpptest_auto/rfidpptest_auto.ino: In function 'void onSolve()':
rfidpptest_auto:100:20: error: expected primary-expression before '}' token
}
^
exit status 1
'dump_byte_array' was not declared in this scope
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
Kunde inte ladda upp filerna så jag lägger in koden istället
Jag är total nybörjare och har baar kört några "copy pasta" lekar innan detta
- Kod: Markera allt
// Defines
#define DEBUG
// LIBRARIES
#include <SPI.h>
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
// GLOBALS
const byte numReaders = 4;
const byte ssPins[] = {2, 3, 4, 5};
const byte resetPin = 8;
MFRC522 mfrc522 [numReaders];
const String CorrectIDs [] = {"3acbbd49", "ca767564", "3a767564", "3a767676"};
String correctIDs[numReaders];
const byte lockPin = A0;
/**
Initialisation
*/
void setup() {
#ifdef DEBUG
Serial.begin (9600);
Serial.println("Serial communication started");
#endif
pinMode (lockPin, OUTPUT);
digitalWrite (lockPin, HIGH);
SPI.begin();
for (uint8_t i = 0; i < numReaders; i++) {
mfrc522[i] .PCD_Init(ssPins[i], resetPin);
Serial.print(("Reader #"));
Serial.print(i);
Serial.print("initialised on pin ");
Serial.print(String(ssPins[i]));
Serial.print((". Antenna strength: "));
Serial.print(mfrc522[i].PCD_GetAntennaGain());
Serial.print((" Version : "));
mfrc522[i].PCD_DumpVersionToSerial ();
delay(100);
}
Serial.println (("---END SETUP---"));
}
/**
Main loop
*/
void loop() {
boolean puzzleSolved = true;
boolean changedValue = false;
for (uint8_t i = 0; i < numReaders; i++) {
mfrc522[i].PCD_Init();
String readRFID = "";
if (mfrc522[i].PICC_IsNewCardPresent() && mfrc522[i].PICC_ReadCardSerial ()) {
readRFID=dump_byte_array(mfrc522[i].uid.uidByte, mfrc522[i].uid.size);
}
if (readRFID != currentIDs[i]) {
changeValue = true;
currentIDs[i] = readRFID;
}
if (currentIDs[i] != correctIDs[i]) {
puzzleSolved = false;
}
mfrc522[i].PICC_HaltA ();
mfrc522[i].PCD_StopCryptol1();
}
if (changedValue) {
for (uint8_t i = 0; i < numReaders; i++) {
Serial.print("Reader #");
Serial.print(String(i));
Serial.print(" on Pin #");
Serial.print(String ((ssPins[i])));
Serial.print(" detected tag: ");
Serial.println(currentIDs[i]);
}
Serial.println(("-- --"));
}
if(puzzleSolved){
onSolve();
}
//delay(100);
}
/**
correct pussel
*/
void onSolve () {
#ifdef DEBUG
Serial.println (("pussel klart"));
#endif
digitalWrite(lockPin, LOW);
while (true)
}
Första versionen med alla "F" kvar
- Kod: Markera allt
// Defines
#define DEBUG
// LIBRARIES
#include <SPI.h>
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
// GLOBALS
const byte numReaders = 4;
const byte ssPins[ ] = {2, 3, 4, 5};
const byte resetPin = 8;
MFRC522 mfrc522 [numReaders];
const String CorrectIDs [ ] = {"3acbbd49","ca767564","3a767564","3a767676"};
String correctIDs[numReaders];
const byte lockPin = A0;
/**
* Initialisation
*/
void setup() {
#ifdef DEBUG
Serial.begin (9600);
Serial.println(F("Serial communication started"));
#endif
pinMode (lockPin, OUTPUT);
digitalWrite (lockPin, HIGH);
SPI.begin();
for (uint8_t i=0; i<numReaders; i++) {
mfrc522[i] .PCD_Init(ssPins[i], resetPin);
Serial.print(F("Reader #"));
Serial.print(i);
Serial.print(F("initialised on pin "));
Serial.print(String(ssPins [i]));
Serial.print(F(". Antenna strength: "));
Serial.print(mfrc522[i].PCD_GetAntennaGain());
Serial.print(F(" Version : "));
mfrc522[i].PCD_DumpVersionToSerial ();
delay(100); }
Serial.println (F("---END SETUP---")); }
/**
* Main loop
*/
void loop() {
boolean puzzleSolved = true;
boolean changedValue = false;
for (uint8_t i=0; i<numReaders; i++) {
mfrc522[i].PCD_Init();
String readRFID = " ";
if(mfrc522[i].PICC_IsNewCardPresent() && mfrc522[i].PICC_ReadCardSerial () ) {
readRFID = dump_byte_array (mfrc522[i].uid.uidByte, mfrc522[i].uid.size);
}
if(readRFID != currentIDs[i]) {
changeValue = true;
currentIDs[i] = readRFID;
}
if(currentIDs[i] !=correctIDs[i]) {
puzzleSolved = false;
}
mfrc522[i].PICC_HaltA ();
mfrc522[i].PCD_StopCryptol1();
}
if (changedValue){
for (uint8_t i=0; i <numReaders; i++) {
Serial.print(F("Reader #"));
Serial.print(String(i));
Serial.print(F(" on Pin #));
Serial.print(String ((ssPins[i])));
Serial.print(F(" detected tag: "));
Serial.println(currentIDs[i]);
}
Serial.println(F("---"));
}
if(puzzleSolved){
onSolve();
}
//delay(100);
}
/**
* correct pussel
*/
void onSolve () {
#ifdef DEBUG
Serial.println (F("pussel klart"));
#endif
digitalWrite(lockPin, LOW);
while(true)}