#include #include #include #include #include constexpr uint8_t RST_PIN = 9; constexpr uint8_t SS_PIN = 10; MFRC522 mfrc522(SS_PIN, RST_PIN); Adafruit_SH1107 display = Adafruit_SH1107(64, 128, &Wire); unsigned long ret_data, ret_old=0; int off_count; int musicScale[] = {523,587,659,698,784,880,988,1047}; void setup() { Serial.begin(115200); SPI.begin(); mfrc522.PCD_Init(); mfrc522.PCD_DumpVersionToSerial(); display.begin(0x3C, true); display.clearDisplay(); display.display(); display.setRotation(1); display.setTextSize(2); display.setTextColor(SH110X_WHITE); display.setCursor(0,5); display.print("Start !"); display.display(); for(int i=3; i<8; i++) pinMode(i, OUTPUT); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); for(int i=0; i<9; i++){ tone(3, musicScale[i]); delay(100); } noTone(3); } void loop() { char sep_data[2]; RFID_check(); if(ret_data == 0){ if(++off_count > 3){ off_count = 0; display.clearDisplay(); display.setCursor(0,5); display.print("RFID ID:"); display.display(); digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, LOW); } } else{ display.clearDisplay(); display.setCursor(0,5); display.print("RFID ID:"); for(int i=0; i<4; i++){ display.setCursor(100-30*(3-i),40); sprintf(sep_data,"%02X",(ret_data>>(8*(3-i))) & 255); display.print(sep_data); } display.display(); off_count = 0; if(ret_data != ret_old){ ret_old = ret_data; digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, LOW); delay(100); digitalWrite(5, LOW); melody_new(); } else{ digitalWrite(6, LOW); digitalWrite(7, HIGH); melody_again(); } } delay(20); } void RFID_check(){ ret_data = 0; if (! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial()) return; ret_data = mfrc522.RFID_IDdata_getter(&(mfrc522.uid)); return; } void melody_new(){ tone(3, musicScale[1]); delay(100); tone(3, musicScale[3]); delay(100); tone(3, musicScale[5]); delay(100); tone(3, musicScale[7]); delay(100); noTone(3); } void melody_again(){ tone(3, musicScale[0]); delay(30); noTone(3); }