Advertisement
alveoten

Untitled

May 18th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1.  
  2. /*
  3.  *
  4. Intanto ti do alcuni consigli stilistici:
  5. - i nomi delle variabili generalmente si usano minuscoli
  6. - meglio un nome di variabile lungo che abbia un senso alla lettura che un acronimo
  7. - if else if sulla solita variabile รจ deprecabile, e meno leggibile del costrutto switch
  8. - le variabili dichiarale globali solo se ha senso usarle globalmente
  9. - gli indici quando puoi falli partire da 0 come per CO
  10. */
  11.  
  12.  
  13. #include <SoftwareSerial.h>
  14. #include <EEPROM.h>
  15.  
  16. SoftwareSerial rfid(7, 8);
  17.  
  18. int Indirizzo = 0;
  19. byte Valore;
  20. int Quante = 0;
  21. const int Serratura =  13;
  22. int CO = 0;
  23. int CA = 0;
  24. long Buona[10];
  25.  
  26. long bytesToLong(byte * letto){
  27.   long value = 0;
  28.   value += ((long)letto[0] << 24);
  29.   value += ((long)letto[1] << 16);
  30.   value += ((long)letto[2] << 8);
  31.   value += (long)letto[3];    
  32.   return value;
  33. }
  34.  
  35. void setup() {
  36.   Serial.begin(9600);
  37.   rfid.begin(9600);
  38.   pinMode(Serratura, OUTPUT);
  39.   Recupera();
  40. }
  41.  
  42. void loop() {
  43.   int i = 0;
  44.   byte buffer[4];
  45.   while(rfid.available()>0) { //verifico la presenza di dati in arrivo
  46.     buffer[i++] =  rfid.read();    
  47.   }
  48.   long numero_tessera = bytesToLong(buffer);
  49.  
  50.   switch(numero_tessera){
  51.     case 9559221L:
  52.           Serial.println("Tessera Bianca");
  53.           Abilita();
  54.     break;
  55.     case 11988333L:
  56.           Serial.println("Tessera Giallo 1");
  57.           Abilita();
  58.     break;
  59.     case 11912406L:
  60.           Serial.println("Tessera Giallo 2");
  61.           Abilita();
  62.     break;
  63.     case 17365799L:
  64.           Serial.println("Tessera Nespresso");
  65.           Abilita();
  66.     break;
  67.     default:
  68.       Serial.println("Tessera SCONOSCIUTA");
  69.   }
  70.    
  71. }
  72.  
  73. void Abilita() {   // Viene invocato quando ho una lettura valida
  74.     digitalWrite(Serratura, HIGH);
  75.     delay(600);
  76.     digitalWrite(Serratura, LOW);
  77. }  
  78.  
  79. void Recupera() {  // Legge dalla EEPROM le tessere valide e le mette nell'array
  80.   int Quante = EEPROM.read(0); // nร‚ยฐ di codici tessera presenti nella eeprom
  81.   Serial.println(Quante);
  82.  
  83.   for(int i = 0; i< Quante; i++){
  84.     byte lettura[4];
  85.     for(int j=0; j<4; j++){
  86.       //lettura dei numeri di tessera
  87.       //offsset= 1 (indirizzo di partenza)
  88.       //        + i*4  (inzio di ogni tessera)
  89.       //        + j (byte da 0 a 3 compreso)
  90.       lettura[j] = EEPROM.read( 1+(i*4)+j );
  91.     }
  92.     Buona[i] = bytesToLong(lettura);
  93.     Serial.println(Buona[i]);
  94.   }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement