#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. // from _75 hc, setting up on/off mapping to make each digit in 7-seg display byte seven_seg_digits[10] = { B11111100, // = 0 B01100000, // = 1 B11011010, // = 2 B11110010, // = 3 B01100110, // = 4 B10110110, // = 5 B10111110, // = 6 B11100000, // = 7 B11111110, // = 8 B11100110 // = 9 }; //7-seg display pin assignments int latchPin = 3; int clockPin = 4; int dataPin = 2; void setup() { Serial.begin(9600); SPI.begin(); // Initiate SPI bus mfrc522.PCD_Init(); // Initiate MFRC522 Serial.println("Break time, Human!"); delay(500); Serial.println("Select difficulty for your 'Super Fun Break' game:"); delay(500); Serial.println("1: Easy"); delay(500); Serial.println("2: Medium"); delay(1000); Serial.println("3: Brutal >:)"); // Set latchPin, clockPin, dataPin as output pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } // display a number on the digital segment display void numba(byte digit) { // set the latchPin to low potential, before sending data digitalWrite(latchPin, LOW); // the original data (bit pattern) shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]); // set the latchPin to high potential, after sending data digitalWrite(latchPin, HIGH); } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) { //return; if(Serial.available() > 0) { char x = Serial.read(); Serial.println(x); if(x == '1') { Serial.println("Lame..."); delay(1000); //makes the timer "act weird" for (byte digit = 10; digit > 0; --digit) { delay(100); numba(digit - 1); } numba(7); delay(100); numba(3); delay(100); numba(5); delay(100); numba(2); delay(100); numba(8); delay(100); numba(1); delay(100); numba(9); delay(100); numba(4); delay(100); numba(2); delay(100); numba(8); delay(100); numba(8); delay(100); numba(1); delay(100); numba(9); delay(100); numba(4); delay(100); numba(2); delay(100); Serial.println("Oops! Looks like that difficulty doesn't work yet. Try again!"); } if(x == '2') { Serial.println("Let's see..."); delay(1000); //makes the timer "act weird" for (byte digit = 0; digit < 10; ++digit) { delay(100); numba(digit + 1); } for (byte digit = 0; digit < 10; ++digit) { delay(100); numba(digit + 1); } for (byte digit = 0; digit < 10; ++digit) { delay(100); numba(digit + 1); } Serial.println("Huh"); delay(2000); Serial.println("Looks like there are some technical issues going on."); delay(2000); Serial.println("So weird."); delay(750); Serial.println("Well, guess you need to select a different option!"); } if(x == '3') { Serial.println("AWWWWWWWWWWW YEAH!"); delay(3000); Serial.println("Ahem."); delay(500); Serial.println("Difficulty set. Activate your play session by scanning your 'FUN' card where instructed."); Serial.println("Check the countdown timer - your time starts now!"); for (byte digit = 10; digit > 0; --digit) { delay(3500); numba(digit - 1); } delay(10000); Serial.println("Um... did you read the instructions?"); } } } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Show UID on serial monitor //Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { //Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); //Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } //Serial.println(); //Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "9B 95 EB 0A") //change here the UID of the card/cards that you want to give access { Serial.println("Wow, you figured it out! Nice job!"); Serial.println(); Serial.println("Now it's time to play the REAL game!"); delay(3000); //keeps from spamming the serial monitor Serial.println("Oh, break time's over! Wasn't that fun??"); delay(1000); Serial.println("Now get back to work! ^_^"); delay(3000); } else { //if you try a different card or tag Serial.println("Um, no. I said 'FUN' card, remember?"); delay(3000); } } /*some extra code I tried and either didn't figure out or didn't need: Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "9B 95 EB 0A") //change here the UID of the card/cards that you want to give access { Serial.println("Authorized access"); Serial.println(); Display(9); delay(5000); Display(10); delay(5000); Display(11); delay(5000); Display(12); delay(5000); Display(13); delay(5000); Display(14); delay(5000); Display(15); delay(5000); } else { Serial.println(" Access denied"); delay(3000); }*/ /*int latch=5; //74HC595 pin 9 STCP int clock=6; //74HC595 pin 10 SHCP int data=4; //74HC595 pin 8 DS /*unsigned char table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c ,0x39,0x5e,0x79,0x71,0x00};*/ /*const byte numbers[10][7] = { // 0: segment lit, 1: unlit // a b c d e f g {0, 0, 0, 0, 0, 0, 1}, // 0 {1, 0, 0, 1, 1, 1, 1}, // 1 {0, 0, 1, 0, 0, 1, 0}, // 2 {0, 0, 0, 0, 1, 1, 0}, // 3 {1, 0, 0, 1, 1, 0, 0}, // 4 {0, 1, 0, 0, 1, 0, 0}, // 5 {0, 1, 0, 0, 0, 0, 0}, // 6 {0, 0, 0, 1, 1, 1, 1}, // 7 {0, 0, 0, 0, 0, 0, 0}, // 8 {0, 0, 0, 1, 1, 0, 0}, // 9 };*/ /*void Display(unsigned char num) //this is a function for the LED display { digitalWrite(latch,LOW); shiftOut(data,clock,MSBFIRST,table[num]); digitalWrite(latch,HIGH); }*/ //THIS IS THE SECOND SET OF CODE FOR SIMON SAYS WITH THE RFID!!!!!!!! #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 #define greenLED 2 #define blueLED 3 #define yellowLED 4 #define gButton 5 #define bButton 6 #define yButton 7 #define start 8 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. void setup() { Serial.begin(9600); // Initiate a serial communication SPI.begin(); // Initiate SPI bus mfrc522.PCD_Init(); // Initiate MFRC522 Serial.println("Approximate your card to the reader..."); Serial.println(); pinMode(greenLED, OUTPUT); pinMode(blueLED, OUTPUT); pinMode(yellowLED, OUTPUT); pinMode(gButton, INPUT_PULLUP); pinMode(bButton, INPUT_PULLUP); pinMode(yButton, INPUT_PULLUP); pinMode(start, INPUT_PULLUP); } void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Show UID on serial monitor //Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { //Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); //Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } //Serial.println(); //Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "9B 95 EB 0A") //change here the UID of the card/cards that you want to give access { //that time I wrote snarky dialogue and then remembered this would never be seen :'( Serial.println("Oh, you want to play Simon Says?"); delay(200); Serial.println("BRING IT"); Serial.println(); delay(200); //simon says sequence digitalWrite(blueLED, HIGH); delay(200); digitalWrite(blueLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); digitalWrite(yellowLED, HIGH); delay(200); digitalWrite(yellowLED, LOW); delay(200); digitalWrite(blueLED, HIGH); delay(200); digitalWrite(blueLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); digitalWrite(yellowLED, HIGH); delay(200); digitalWrite(yellowLED, LOW); delay(200); digitalWrite(blueLED, HIGH); delay(200); digitalWrite(blueLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); digitalWrite(yellowLED, HIGH); delay(200); digitalWrite(yellowLED, LOW); delay(200); digitalWrite(blueLED, HIGH); delay(200); digitalWrite(blueLED, LOW); delay(200); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(greenLED, LOW); delay(200); Serial.print("YOUR TURN >:)"); Serial.print("Press the 3 leftmost buttons to replay the sequence. Press the right button to reset, then rescan"); Serial.print("and prepare to lose again!!!!!"); while (digitalRead(start) == HIGH) { if (digitalRead(gButton) == LOW) { digitalWrite(blueLED, LOW); digitalWrite(greenLED, HIGH); digitalWrite(yellowLED,LOW); } if (digitalRead(bButton) == LOW) { digitalWrite(blueLED, HIGH); digitalWrite(greenLED, LOW); digitalWrite(yellowLED,LOW); } if (digitalRead(yButton) == LOW) { digitalWrite(blueLED, LOW); digitalWrite(greenLED, LOW); digitalWrite(yellowLED,HIGH); } if (digitalRead(start) == LOW) { digitalWrite(blueLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(blueLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); delay(200); digitalWrite(blueLED, HIGH); digitalWrite(yellowLED, HIGH); digitalWrite(greenLED, HIGH); delay(200); digitalWrite(blueLED, LOW); digitalWrite(yellowLED, LOW); digitalWrite(greenLED, LOW); return; } else { digitalWrite(blueLED, LOW); digitalWrite(greenLED, LOW); digitalWrite(yellowLED,LOW); } } } else { Serial.println(" Access denied"); delay(3000); } }