pippo72:
Ma se non ti basta la memoria del Mega perchè usare memorie esterne tipo eeprom o SDcard?
ho provato ad usare una SD card ma poi quando cerco l'id ci mette una vita, provo a linkare qui il mio codice cosi magari mi date un dritta su che strada prendere, per ora sto studiando la prima opzione data da docdoc e do un occhiata alle eprom esterne. la sd card penso di scartarla anche se era per me la soluzione migliore per aggiornare i tag .
#include <Wiegand.h>
#define FALSE 0
#define TRUE 1
int i = 0;
//int c = 0;
//int b = 0;
WIEGAND wg;
String codiceLetto = "";
///////////////////
// qui sotto creo un "array" con dentro i codici ID
int maxU = 50; //maxUtenti cambiarlo in base a quanti codici metti qui sotto
String codiceAutorizzato[50] = {"6170129", "6170131", "6170132", "6170133", "6170134", "6170135", "6170136", "6170137", "6170138", "6170139", "6170140", "6170141", "6170142", "6170143", "6170144", "6170145", "6170146", "6170147", "6170148", "6170149", "6170150", "6170151", "6170152", "6170153", "6170154", "6170155", "6170156", "6170157", "6170158", "6170159", "6170160", "6170161", "6170162", "6170163", "6170164", "6170165", "6170166", "6170167", "6170168", "6170169", "6170170", "6170171", "6170172", "6170173", "6170174", "6170175", "6170176", "6170177", "6170178", "6179443"};
String codiceAutorizzato1[50] = {"6170133", "6170129", "6170132", "6170133", "6170134", "6170135", "6170136", "6170137", "6170138", "6170139", "6170140", "6170141", "6170142", "6170143", "6170144", "6170145", "6170146", "6170147", "6170148", "6170149", "6170150", "6170151", "6170152", "6170153", "6170154", "6170155", "6170156", "6170157", "6170158", "6170159", "6170160", "6170161", "6170162", "6170163", "6170164", "6170165", "6170166", "6170167", "6170168", "6170169", "6170170", "6170171", "6170172", "6170173", "6170174", "6170175", "6170176", "6170177", "6170178", "6179443"};
String codiceAutorizzato2[50] = {"6230956", "6170131", "6170132", "6170133", "6170134", "6170135", "6170136", "6170137", "6170138", "6170139", "6170140", "6170141", "6170142", "6170143", "6170144", "6170145", "6170146", "6170147", "6170148", "6170149", "6170150", "6170151", "6170152", "6170153", "6170154", "6170155", "6170156", "6170157", "6170158", "6170159", "6170160", "6170161", "6170162", "6170163", "6170164", "6170165", "6170166", "6170167", "6170168", "6170169", "6170170", "6170171", "6170172", "6170173", "6170174", "6170175", "6170176", "6170177", "6170178", "6179443"};
String codiceAutorizzato3[50] = {"6170132", "6170129", "6170132", "6170133", "6170134", "6170135", "6170136", "6170137", "6170138", "6170139", "6170140", "6170141", "6170142", "6170143", "6170144", "6170145", "6170146", "6170147", "6170148", "6170149", "6170150", "6170151", "6170152", "6170153", "6170154", "6170155", "6170156", "6170157", "6170158", "6170159", "6170160", "6170161", "6170162", "6170163", "6170164", "6170165", "6170166", "6170167", "6170168", "6170169", "6170170", "6170171", "6170172", "6170173", "6170174", "6170175", "6170176", "6170177", "6170178", "6179444"};
String codiceAutorizzato4[50] = {"6170130", "6170131", "6170132", "6170133", "6170134", "6170135", "6170136", "6170137", "6170138", "6170139", "6170140", "6170141", "6170142", "6170143", "6170144", "6170145", "6170146", "6170147", "6170148", "6170149", "6170150", "6170151", "6170152", "6170153", "6170154", "6170155", "6170156", "6170157", "6170158", "6170159", "6170160", "6170161", "6170162", "6170163", "6170164", "6170165", "6170166", "6170167", "6170168", "6170169", "6170170", "6170171", "6170172", "6170173", "6170174", "6170175", "6170176", "6170177", "6170178", "6179443"};
String codiceAutorizzato5[50] = {"13781091", "507397", "13781092", "13781093", "13781094", "13781095", "13781096", "13781097", "13781098", "13781099", "13781100", "13781101", "13781102", "13781103", "13781104", "13781105", "13781106", "13781107", "13781108", "13781109", "13781110", "13781111", "13781112", "13781113", "13781114", "13781115", "13781116", "13781117", "13781118", "13781119", "13781120", "13781121", "13781122", "13781123", "13781124", "13781125", "13781126", "13781127", "13781128", "13781129", "13781130", "13781131", "13781132", "13781133", "13781134", "13781135", "13781136", "13781137", "13781138", "6170279"};
String codiceAutorizzato6[50] = {"6170180", "6170181", "6170182", "6170183", "6170184", "6170185", "6170186", "6170187", "6170188", "6170189", "6170190", "6170191", "6170192", "6170193", "6170194", "6170195", "6170196", "6170197", "6170198", "6170199", "6170200", "6170201", "6170202", "6170203", "6170204", "6170205", "6170206", "6170207", "6170208", "6170209", "6170210", "6170211", "6170212", "6170213", "6170214", "6170215", "6170216", "6170217", "6170218", "6170219", "6170220", "6170221", "6170222", "6170223", "6170224", "6170225", "6170226", "6170227", "6170228", "13781090"};
const int Releserratura = 8; // rele
const long delayserr = 250;
//////////////////
void setup() {
Serial.begin(9600);
Serial.println("num...550.....");
pinMode(Releserratura, OUTPUT);
// PIN assigment and declaration for Arduino Mega
//GATE A
wg.D0PinA = 2;
wg.D1PinA = 3;
delay(75);
//GATE B
//con arduino uno va solo con pin 2 e 3...
//usare mega 2560 se si vogliono piu gate
wg.D0PinB = 18; //18
wg.D1PinB = 19; //19
delay(75);
//GATE C
wg.D0PinC = 20;
wg.D1PinC = 21;
delay(75);
// Reader enable
wg.begin(TRUE, TRUE, TRUE); // wg.begin(GateA , GateB, GateC)
//wg.begin(FALSE, FALSE, TRUE); // wg.begin(GateA , GateB, GateC)
}
//void(* Riavvia)(void) = 0;
void loop() {
if (wg.available())
{
codiceLetto = "";
codiceLetto += String (wg.getCode(), DEC);//bella soluzione di coversione
Serial.print("Wiegand HEX = ");
Serial.print(wg.getCode(), HEX);
Serial.print(", DECIMAL = ");
Serial.print(wg.getCode());
Serial.print(", Gate= ");
Serial.print(wg.getGateActive());
Serial.print(", Type W");
Serial.println(wg.getWiegandType());
Serial.print("codiceLetto=" );
Serial.println(codiceLetto );
//---//////////-----//////---------/////////-/-/-/
//---//////////-----//////---------/////////-/-/-/
for (i = 0; i < maxU; i++) {
if (verificaCodice(codiceLetto, codiceAutorizzato[i])) {
// if (codiceLetto.equals(codiceAutorizzato[i]))
if (codiceLetto == (codiceAutorizzato[i]))
{
Serial.println("Bella Apro - blocco codiceAutorizzato............");
Apri();
codiceLetto = "";
// Serial.println("codiceAutorizzatoArray[0]......");
// Serial.println(codiceAutorizzatoArray[0]);
break;
}
else
{
Serial.println("codice non trovato ...........");
}
}
}
for (i = 0; i < maxU; i++) {
if (verificaCodice(codiceLetto, codiceAutorizzato1[i])) {
// if (codiceLetto.equals(codiceAutorizzato[i]))
if (codiceLetto == (codiceAutorizzato1[i]))
{
Serial.println("Bella Apro - blocco codiceAutorizzato6............");
Apri();
codiceLetto = "";
// Serial.println("codiceAutorizzatoArray[0]......");
// Serial.println(codiceAutorizzatoArray[0]);
break;
}
else
{
Serial.println("codice non trovato ...........");
}
Serial.println("codice non trovato 1 ...........");
}
}
if (codiceLetto != ""){//se non ha trovato il codice fino a qui passa sull'altra scheda arduino a cercare il codice
Serial.println("cerco sull'altro arduino!!!");
}
}
}
// Questa funzione verifica se il codice Letto è autorizzato
boolean verificaCodice(String codiceLetto, String codiceAutorizzato) {
if (codiceLetto.equals(codiceAutorizzato)) { // if (codiceLetto.equals(codiceAutorizzato1) || (codiceLetto.equals(codiceAutorizzato2)) || (codiceLetto.equals(codiceAutorizzato3)) || (codiceLetto.equals(codiceAutorizzato4))) {
return true;
} else {
return false;
}
}
void Apri() {
digitalWrite(Releserratura, HIGH );
Serial.println("Releserratura, HIGH");
delay(delayserr);
digitalWrite(Releserratura, LOW );
Serial.println("Releserratura, LOW");
}