ivolff

ArduinoBASH 1.0

Dec 22nd, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.34 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #include <FastLED.h>
  4. #include <EEPROM.h>
  5.  
  6. #define BUZZ_PIN 8
  7. #define RST_PIN 9
  8. #define SS_PIN 10
  9.  
  10. #define NUM_LEDS 8
  11. #define MAX_CARDS 8
  12. #define LED_PIN 5
  13. MFRC522 mfrc522(SS_PIN, RST_PIN);
  14. CRGB leds[NUM_LEDS];
  15. byte reading_card[4];
  16.  
  17. byte master[4] = {43, 151, 116, 50};
  18. byte cards_count;
  19. void setup() {
  20.   Serial.begin(9600); // инициализация последовательного порта
  21.   SPI.begin(); // инициализация SPI
  22.   mfrc522.PCD_Init(); // инициализация MFRC522
  23.   FastLED.addLeds<WS2812, LED_PIN, RGB>(leds, NUM_LEDS);
  24.   leds[0] = CRGB::Black;
  25.   FastLED.show();
  26.   //EEPROM.write(0, 0);
  27.   byte b;
  28.   EEPROM.get(0, cards_count);
  29. }
  30.  
  31. void loop() {
  32.   delay(100);
  33.   if (mfrc522.PICC_IsNewCardPresent())
  34.   {
  35.     if (mfrc522.PICC_ReadCardSerial())
  36.     {
  37.       Serial.println(" ");
  38.       Serial.println("Card is found");
  39.       Serial.println("Cardnumber:");
  40.       for (int i = 0; i < 4; i++)
  41.       {
  42.         Serial.print(mfrc522.uid.uidByte[i]);
  43.         Serial.println();
  44.         reading_card[i] = mfrc522.uid.uidByte[i];
  45.       }
  46.       Serial.println();
  47.       int i;
  48.       for (i = 0; i < 4; i++) {
  49.         if (reading_card[i] != master[i])
  50.           break;
  51.       }
  52.       if (i == 4) {
  53.         Serial.println("Master card is found");
  54.         tone(BUZZ_PIN, 4500, 100);
  55.         showColor(CRGB::Blue);
  56.         while (true) {
  57.           if (mfrc522.PICC_IsNewCardPresent())
  58.             if (mfrc522.PICC_ReadCardSerial())
  59.             {
  60.               for (int q = 0; q < 4; q++) {
  61.                 Serial.print(mfrc522.uid.uidByte[q]);
  62.                 Serial.println();
  63.                 reading_card[q] = mfrc522.uid.uidByte[q];
  64.               }
  65.               break;
  66.             }
  67.         }
  68.  
  69.         if (reading_card[0] == master[0] && reading_card[1] == master[1] && reading_card[2] == master[2] && reading_card[3] == master[3]) {
  70.           tone(BUZZ_PIN, 4500, 1000);
  71.           for (i = 0; i < 2048; i++) {
  72.             EEPROM.write(i, 0);
  73.           }
  74.           tone(BUZZ_PIN, 4500, 100);
  75.           showColor(CRGB::Blue);
  76.           cards_count = 0;
  77.         } else {
  78.           for (i = 0; i < 4; i++) {
  79.             EEPROM.write(1+cards_count*4+i, (byte)reading_card[i]);
  80.           }
  81.         }
  82.         cards_count++;
  83.         Serial.print(cards_count);
  84.         Serial.println("Card is added");
  85.         return;
  86.       }
  87.       Serial.println("I am here :D");
  88.      
  89.       bool found = findCard(reading_card);
  90.       if (!found) {
  91.         tone(BUZZ_PIN, 1500, 300);
  92.         showColor(CRGB::Green);
  93.       } else {
  94.         tone(BUZZ_PIN, 3500, 100);
  95.         showColor(CRGB::Red);
  96.       }    
  97.     }
  98.   }
  99. }
  100.  
  101. void showColor(CRGB color) {
  102.   for (int i = 0; i < NUM_LEDS; i++) {
  103.     leds[i] = color;
  104.   }
  105.   FastLED.show();
  106.   delay(2000);
  107.   for (int i = 0; i < NUM_LEDS; i++) {
  108.     leds[i] = CRGB::Black;
  109.   }
  110.   FastLED.show();
  111. }
  112.  
  113. bool findCard(byte card[]) {
  114.   byte buf1, buf2, buf3, buf4;
  115.   bool found = false;
  116.   for (int i = 0; i < MAX_CARDS; i++) {
  117.     EEPROM.get(1+i*4, buf1);
  118.     EEPROM.get(1+i*4+1, buf2);
  119.     EEPROM.get(1+i*4+2, buf3);
  120.     EEPROM.get(1+i*4+3, buf4);
  121.     if (buf1 == card[0] && buf2 == card[1] && buf3 == card[2] && buf4 == card[3]) {
  122.       found = true;
  123.       break;
  124.     }
  125.     if (found) break;
  126.   }
  127.   return found;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment