Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- Intanto ti do alcuni consigli stilistici:
- - i nomi delle variabili generalmente si usano minuscoli
- - meglio un nome di variabile lungo che abbia un senso alla lettura che un acronimo
- - if else if sulla solita variabile รจ deprecabile, e meno leggibile del costrutto switch
- - le variabili dichiarale globali solo se ha senso usarle globalmente
- - gli indici quando puoi falli partire da 0 come per CO
- */
- #include <SoftwareSerial.h>
- #include <EEPROM.h>
- SoftwareSerial rfid(7, 8);
- int Indirizzo = 0;
- byte Valore;
- int Quante = 0;
- const int Serratura = 13;
- int CO = 0;
- int CA = 0;
- long Buona[10];
- long bytesToLong(byte * letto){
- long value = 0;
- value += ((long)letto[0] << 24);
- value += ((long)letto[1] << 16);
- value += ((long)letto[2] << 8);
- value += (long)letto[3];
- return value;
- }
- void setup() {
- Serial.begin(9600);
- rfid.begin(9600);
- pinMode(Serratura, OUTPUT);
- Recupera();
- }
- void loop() {
- int i = 0;
- byte buffer[4];
- while(rfid.available()>0) { //verifico la presenza di dati in arrivo
- buffer[i++] = rfid.read();
- }
- long numero_tessera = bytesToLong(buffer);
- switch(numero_tessera){
- case 9559221L:
- Serial.println("Tessera Bianca");
- Abilita();
- break;
- case 11988333L:
- Serial.println("Tessera Giallo 1");
- Abilita();
- break;
- case 11912406L:
- Serial.println("Tessera Giallo 2");
- Abilita();
- break;
- case 17365799L:
- Serial.println("Tessera Nespresso");
- Abilita();
- break;
- default:
- Serial.println("Tessera SCONOSCIUTA");
- }
- }
- void Abilita() { // Viene invocato quando ho una lettura valida
- digitalWrite(Serratura, HIGH);
- delay(600);
- digitalWrite(Serratura, LOW);
- }
- void Recupera() { // Legge dalla EEPROM le tessere valide e le mette nell'array
- int Quante = EEPROM.read(0); // nรยฐ di codici tessera presenti nella eeprom
- Serial.println(Quante);
- for(int i = 0; i< Quante; i++){
- byte lettura[4];
- for(int j=0; j<4; j++){
- //lettura dei numeri di tessera
- //offsset= 1 (indirizzo di partenza)
- // + i*4 (inzio di ogni tessera)
- // + j (byte da 0 a 3 compreso)
- lettura[j] = EEPROM.read( 1+(i*4)+j );
- }
- Buona[i] = bytesToLong(lettura);
- Serial.println(Buona[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement