現在、下記に示すプログラムを書いており、
'rfid'does not name a typeのエラーが出ております。
エラー行は”rfid.PCD_Init(); // Init MFRC522”の
行です。(太字にしております)
配線及び機器構成はWROOM02とRC522(NFCリーダー)と
OLED(表示器)を接続。また、WROOM02をアクセスポイントにしています。
どなたか御教授頂けますと幸いです。
コード ```#include <MFRC522.h> #include <SPI.h> #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <ESP_Adafruit_SSD1306.h> #include <SPI.h> #define OLED_RESET 4 #define SCL_PIN 14 #define SS_PIN 2 #define RST_PIN 16 int code[] = {69,141,8,136}; //This is the stored UID int codeRead = 0; String uidString; Adafruit_SSD1306 display(OLED_RESET); //void setup() { //} //SSID and Password to your ESP Access Point const char* ssid = "ESPWebServer"; const char* password = "12345678"; ESP8266WebServer server(80); //Server on port 80 //============================================================== // This rutine is exicuted when you open its IP in browser //============================================================== void handleRoot() {server.send(200, "text/plain", "hello from esp8266!"); } //=============================================================== // SETUP //=============================================================== void setup(void){ Serial.begin(9600); Serial.println(""); WiFi.mode(WIFI_AP); //Only Access point WiFi.softAP(ssid, password); //Start HOTspot removing password will disable security IPAddress myIP = WiFi.softAPIP(); //Get IP address Serial.print("HotSpt IP:"); Serial.println(myIP); server.on("/", handleRoot); //Which routine to handle at root location server.begin(); //Start server Serial.println("HTTP server started"); Wire.begin(5,4); SPI.begin(); // Init SPI bus display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64) // Clear the buffer. display.clearDisplay(); display.display(); display.setTextColor(WHITE); // or BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("PUT ON ID"); display.display(); } MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class MFRC522::MIFARE_Key key; rfid.PCD_Init(); // Init MFRC522 //=============================================================== // LOOP //=============================================================== void loop(void){ server.handleClient(); //Handle client requests if(rfid.PICC_IsNewCardPresent()) { readRFID(); //2秒後、表示をクリアする } delay(6000); display.clearDisplay(); } //void loop() { // if( rfid.PICC_IsNewCardPresent()) // { // readRFID(); //2秒後、表示をクリアする // } //delay(6000); //display.clearDisplay(); //} void readRFID() { rfid.PICC_ReadCardSerial(); Serial.print(F("\nPICC type: ")); MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE type if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } Serial.println("Scanned PICC's UID:"); printDec(rfid.uid.uidByte, rfid.uid.size); // uidString = String(rfid.uid.uidByte[0])+" "+String(rfid.uid.uidByte[1])+" "+String(rfid.uid.uidByte[2])+ " "+String(rfid.uid.uidByte[3]); uidString = String(9999)+" "+String(rfid.uid.uidByte[1])+" "+String(rfid.uid.uidByte[2])+ " "+String(rfid.uid.uidByte[3]); printUID(); int i = 0; boolean match = true; while(i<rfid.uid.size) { if(!(rfid.uid.uidByte[i] == code[i])) { match = false; } i++; } if(match) { Serial.println("\nI know this card!"); printUnlockMessage(); clearUID(); }else { Serial.println("\nUnknown Card"); clearUID(); } // Halt PICC rfid.PICC_HaltA(); // Stop encryption on PCD rfid.PCD_StopCrypto1(); } void printDec(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], DEC); } } void clearUID() { display.setTextColor(BLACK); // or BLACK); display.setTextSize(2); display.setCursor(30,20); display.print(uidString); display.display(); } void printUID() { display.setTextColor(WHITE); // or BLACK); display.setTextSize(2); display.setCursor(0,20); display.print("UID: "); display.setCursor(50,20); display.print(uidString); display.display(); } void printUnlockMessage() { display.display(); display.setTextColor(BLACK); // or BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("RFID Lock"); display.display(); display.setTextColor(WHITE); // or BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("Unlocked"); display.display(); delay(2000); display.setTextColor(BLACK); // or BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("Unlocked"); display.setTextColor(WHITE); // or BLACK); display.setTextSize(2); display.setCursor(10,0); display.print("RFID Lock"); display.display(); }

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。