質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

3回答

8589閲覧

arduinoプログラム、〜does not name a typeのエラーの解消方法

Nicoa

総合スコア10

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/10/15 09:02

編集2022/01/12 10:55

現在、下記に示すプログラムを書いており、

'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(); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

少なくとも、

rfid.PCD_Init(); // Init MFRC522

は、関数の中に入れる必要があるのではないでしょうか。

ということで、以下の2行を、setup()の前に持っていき、

arduino

1MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class 2MFRC522::MIFARE_Key key;

この行を、setup()の中に入れてみてはどうでしょうか。

arduino

1rfid.PCD_Init(); // Init MFRC522

投稿2018/11/04 08:13

mkgt00

総合スコア165

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://dotstud.io/blog/arduino-use-rfid-reader/

こちらを参考にまず、RC522の動作を確認したほうがよろしいかと思います。

投稿2018/10/17 14:27

mappy

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

rfidというキーワードがどこにも定義されていないためにそのエラーが出ています

投稿2018/10/15 09:17

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問