Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include <MFRC522.h>
- #include <FastLED.h>
- #include <EEPROM.h>
- #define BUZZ_PIN 8
- #define RST_PIN 9
- #define SS_PIN 10
- #define NUM_LEDS 8
- #define MAX_CARDS 8
- #define LED_PIN 5
- MFRC522 mfrc522(SS_PIN, RST_PIN);
- CRGB leds[NUM_LEDS];
- byte reading_card[4];
- bool flag;
- byte master[4] = {43, 151, 116, 50};
- byte cards_count;
- void setup() {
- Serial.begin(9600); // инициализация последовательного порта
- SPI.begin(); // инициализация SPI
- mfrc522.PCD_Init(); // инициализация MFRC522
- FastLED.addLeds<WS2812, LED_PIN, RGB>(leds, NUM_LEDS);
- leds[0] = CRGB::Black;
- FastLED.show();
- //EEPROM.write(0, 0);
- byte b;
- EEPROM.get(0, cards_count);
- }
- void loop() {
- delay(100);
- if (mfrc522.PICC_IsNewCardPresent())
- {
- if (mfrc522.PICC_ReadCardSerial())
- {
- Serial.println(" ");
- Serial.println("Card is found");
- Serial.println("Cardnumber:");
- for (int i = 0; i < 4; i++)
- {
- Serial.print(mfrc522.uid.uidByte[i]);
- Serial.println();
- reading_card[i] = mfrc522.uid.uidByte[i];
- }
- Serial.println();
- int i;
- for (i = 0; i < 4; i++) {
- if (reading_card[i] != master[i])
- break;
- }
- if (i == 4) {
- Serial.println("Master card is found");
- tone(BUZZ_PIN, 4500, 100);
- showColor(CRGB::Blue);
- while (true) {
- if (mfrc522.PICC_IsNewCardPresent())
- if (mfrc522.PICC_ReadCardSerial())
- {
- for (int q = 0; q < 4; q++) {
- Serial.print(mfrc522.uid.uidByte[q]);
- Serial.println();
- reading_card[q] = mfrc522.uid.uidByte[q];
- }
- break;
- }
- }
- if (reading_card[0] == master[0] && reading_card[1] == master[1] && reading_card[2] == master[2] && reading_card[3] == master[3]) {
- tone(BUZZ_PIN, 4500, 1000);
- for (i = 0; i < 2048; i++) {
- EEPROM.write(i, 0);
- }
- tone(BUZZ_PIN, 4500, 100);
- showColor(CRGB::Blue);
- cards_count = 0;
- } else {
- int i;
- byte buf1, buf2, buf3, buf4;
- bool F2 = false;
- for ( i = 0; i < MAX_CARDS; i++) {
- EEPROM.get(1+i*4, buf1);
- EEPROM.get(1+i*4+1, buf2);
- EEPROM.get(1+i*4+2, buf3);
- EEPROM.get(1+i*4+3, buf4);
- if (buf1 == reading_card[0] && buf2 == reading_card[1] && buf3 == reading_card[2] && buf4 == reading_card[3]) {
- F2 = true;
- break;
- }
- if (F2) break;
- }
- if(!F2){
- for (i = 0; i < 4; i++) {
- EEPROM.write(1+cards_count*4+i, (byte)reading_card[i]);
- }
- cards_count++;
- Serial.print(cards_count);
- Serial.println("Card is added");
- return;
- }
- else{
- i++;
- if(cards_count>1){
- EEPROM.get(cards_count*4,buf4);
- EEPROM.get(cards_count*4-1,buf3);
- EEPROM.get(cards_count*4-2,buf2);
- EEPROM.get(cards_count*4-3,buf1);
- EEPROM.write(i*4,buf4);
- EEPROM.write(i*4-1,buf3);
- EEPROM.write(i*4-2,buf2);
- EEPROM.write(i*4-3,buf1);}
- EEPROM.write(cards_count*4,0);
- EEPROM.write(cards_count*4-1,0);
- EEPROM.write(cards_count*4-2,0);
- EEPROM.write(cards_count*4-3,0);
- cards_count--;
- }
- }
- }
- Serial.println("I am here :D");
- if(reading_card[0] == master[0] && reading_card[1] == master[1] && reading_card[2] == master[2] && reading_card[3] == master[3]) { } else {
- bool found = findCard(reading_card);
- if (!found) {
- tone(BUZZ_PIN, 1500, 300);
- showColor(CRGB::Green);
- } else {
- if(reading_card[0] == 16 && reading_card[1] == 238 && reading_card[2] == 42 && reading_card[3] == 176){
- Stigmata();}
- else{
- tone(BUZZ_PIN, 3500, 100);}
- showColor(CRGB::Red);
- }
- }
- }
- }
- }
- void showColor(CRGB color) {
- for (int i = 0; i < NUM_LEDS; i++) {
- leds[i] = color;
- }
- FastLED.show();
- delay(2000);
- for (int i = 0; i < NUM_LEDS; i++) {
- leds[i] = CRGB::Black;
- }
- FastLED.show();
- }
- bool findCard(byte card[]) {
- byte buf1, buf2, buf3, buf4;
- bool found = false;
- for (int i = 0; i < MAX_CARDS; i++) {
- EEPROM.get(1+i*4, buf1);
- EEPROM.get(1+i*4+1, buf2);
- EEPROM.get(1+i*4+2, buf3);
- EEPROM.get(1+i*4+3, buf4);
- if (buf1 == card[0] && buf2 == card[1] && buf3 == card[2] && buf4 == card[3]) {
- found = true;
- break;
- }
- if (found) break;
- }
- return found;
- }
- void Stigmata(){
- const int t=220,k=400;
- for(int i=0;i<1;i++){
- tone(BUZZ_PIN, k+1500, t);//10
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1250, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t+20);
- tone(BUZZ_PIN, k+1000, t);//11
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1250, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t/2);
- tone(BUZZ_PIN, k+1250, t);
- delay(t/2);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+875, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);//12
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1250, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t+20);
- tone(BUZZ_PIN, k+1000, t);//13
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+1000, t);
- delay(t);
- tone(BUZZ_PIN, k+1500, t);
- delay(t);
- tone(BUZZ_PIN, k+875, t);
- delay(t);
- tone(BUZZ_PIN, k+1250, t);
- delay(t);
- tone(BUZZ_PIN, k+875, t);
- delay(t);
- tone(BUZZ_PIN, k+725, t);
- delay(t+10);
- tone(BUZZ_PIN, k+650, t);
- delay(t+10);}
- }
Advertisement
Add Comment
Please, Sign In to add comment