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

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

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

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

Q&A

解決済

2回答

2550閲覧

ESP8266でWiFiしたい

HiroPokeHero

総合スコア45

Arduino

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

0グッド

0クリップ

投稿2019/07/10 13:37

編集2019/07/14 02:41

前提・実現したいこと

ESP8266を積んだNodeモジュールをArduinoとして使おうとしています。

ピリオドの前に何か問題があるということはわかりますが、
そのあたりのヘッダファイルをのぞいてみたりしましたが、
結局Grepなどを使ってもたどり着けませんでした。

発生している問題・エラーメッセージ

D:\Arduino\ESP32_LED_Train\ESP32_LED_Train.ino: In function 'void setup()': ESP32_LED_Train:39:10: error: 'class WiFiServer' has no member named 'on' server.on("/RH", handleon(LED_R)); // IPアドレス+/Hの時 handleon()関数の起動を設定 ESP32_LED_Train:47:9: error: expected unqualified-id before '.' token Server.begin(); // サーバを開始 ^ D:\Arduino\ESP32_LED_Train\ESP32_LED_Train.ino: In function 'void loop()': ESP32_LED_Train:53:9: error: expected unqualified-id before '.' token Server.handleClient(); // ブラウザへのアクセスに応じて適切な関数を起動処理する ^ D:\Arduino\ESP32_LED_Train\ESP32_LED_Train.ino: In function 'void handleRoot()': ESP32_LED_Train:61:9: error: expected unqualified-id before '.' token Server.Send(200, "text/HTML", temp); ^

該当のソースコード

#include <ESP8266WebServer.h> #include <ESP8266WebServerSecure.h> //#include <ESP8266WebServerSecureAxTLS.h> //#include <ESP8266WebServerSecureBearSSL.h> #include <SPI.h> #include <WiFi.h> #include <WiFiServer.h> const char ssid[] = "SPWN_N34_3e32a6"; const char password[] = "6046e5d4b0d04"; WiFiServer server(80); IPAddress ipadr; #define LED_G 4 #define LED_R 5 void setup() { // put your setup code here, to run once: pinMode(LED_G, OUTPUT); // LED接続ポートを出力に設定 pinMode(LED_R, OUTPUT); // LED接続ポートを出力に設定 digitalWrite(LED_G, LOW); // 出力をLOWにしてLEDを消灯する digitalWrite(LED_R, LOW); // 出力をLOWにしてLEDを消灯する Serial.begin(9600); // シリアルモニタを115200bpsで初期化 WiFi.mode(WIFI_STA); // Wi-Fiのモードを設定 WiFi.begin(ssid, password); // 接続するSSID キーを指定してWi-Fiを開始 Serial.println("Now Connecting"); // シリアルプリントの出力改行のみ while (WiFi.status() != WL_CONNECTED) { // 接続が完了するまで待つ delay(500); // 各回500msの時間待つ //Serial.print("."); // 待ち時間500msごとに1ドット表示 接続が完了すると抜ける } ipadr = WiFi.localIP(); Serial.println(""); Serial.print("Connected to "); // Wi-Fi接続を表示 Serial.println(ssid); // SSID表示 Serial.print("IP address: "); Serial.println(ipadr); // シリアルモニタにIPアドレスを表示 Server.on("/", handleRoot); // IPアドレスのみのアクセス時はhandleRoot()を起動 Server.on("/RH", handleon(LED_R)); // IPアドレス+/Hの時 handleon()関数の起動を設定 Server.on("/RL", handleoff(LED_R)); // IPアドレス+/Lの時 handleoff()関数の起動を設定 Server.on("/GH", handleon(LED_G)); // IPアドレス+/Hの時 handleon()関数の起動を設定 Server.on("/GL", handleoff(LED_G)); // IPアドレス+/Lの時 handleoff()関数の起動を設定 Server.begin(); // サーバを開始 Serial.println("HTTP server started"); } void loop() { // put your main code here, to run repeatedly: Server.handleClient(); // ブラウザへのアクセスに応じて適切な関数を起動処理する } void handleRoot() { String temp = "Click <a href=\"/RH\">here</a> to turn the LED RED on.<br />"; temp += "Click <a href=\"/RL\">here</a> to turn the LED RED off.<br />\n"; temp += "Click <a href=\"/GH\">here</a> to turn the LED GREEN on.<br />"; temp += "Click <a href=\"/GL\">here</a> to turn the LED GREEN off.\n"; ~~server.send(200, "text/HTML", temp)~~; Server.send(200, "text/HTML", temp); } void handleon(int led) { digitalWrite(led, HIGH); // GET /H turns the LED on handleRoot(); } void handleoff(int led) { digitalWrite(led, LOW); // GET /L turns the LED off handleRoot(); }

試したこと

WiFiServerのサンプルにしました。
書き込み官僚となりましたが、文字が赤色でした。

回答者の方のアドバイスにより
ServerのSを小文字から大文字に変更しました。

補足情報(FW/ツールのバージョンなど)

Windows10、
Arduino1.8.9

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

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

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

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

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

thkana

2019/07/14 09:59 編集

前にも言ったと思いますが、2016年の情報ではESP-12Eは日本でWiFiを使うと法律違反になるはずですが、その辺は大丈夫ですね? (最近技適を取ったとかいうことであればよいのですが)
HiroPokeHero

2019/07/14 10:27

thkanaさん、 ご指摘ありがとうございます。 現時点では技適取得済みとのことです。 ただ、そういった法律があることも今回知ることができて勉強になりました。
thkana

2019/07/14 12:38

参考までに、Web上で「技適取得済」の情報が確認出来るところがありますか?
guest

回答2

0

ベストアンサー

回答者の方のアドバイスにより

ServerのSを小文字から大文字に変更しました。

誰もそうしろなんて言ってなくて、エラーの内容を説明されただけでしょう。
なぜ、そうしたのですか?

で、「新しいエラー」はなんと言っているのか読みましたか? 英語だからダメ、とか言わないですよね。エラーメッセージが読めるようにならなくてはプログラミングなんて無理、と言っても過言ではありません。ちなみに、google翻訳に'expected unqualified'まで入れたら、サジェスチョンとして'expected unqualified-id before '' token'->「トークンの前には修飾されていないIDが必要です」まで出てきましたよ。その他、そのメッセージのままググってもいろいろヒットします。とにかく、.の前にあるものつまり'Select'がID(クラスとか変数とか関数とかの名前)として認められていない、ということです。

その他いろいろ目茶苦茶なので、今のプログラムは一旦忘れて、まずはArduinoのIDE(ESP8266ボード)に含まれているサンプルプログラムを動かして、そこから一歩ずつ改造していくのがよいのでは。(「試したこと:WiFiServerのサンプルにしました」がそういう意味なのかしら? よくわからないけど)
IDEのメニュー[ファイル]-[スケッチ例]-(Generic ESP8266 Module用のスケッチ例)[ESP8266WebServer]-[HelloServer]
あたりがベースにするのによさそうに思いますけれど。server.on()もコンパイルを通っていますよ。
イメージ説明

投稿2019/07/14 08:25

thkana

総合スコア7629

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

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

0

ESP32_LED_Train:39:10: error: 'class WiFiServer' has no member named 'on'

WiFiServerクラスには、onという名前のメンバはありません
というエラーですね。そこんところをどうにかしましょう

投稿2019/07/10 23:37

y_waiwai

総合スコア87747

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

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

HiroPokeHero

2019/07/11 22:04

ヒントをいただき、 ありがとうございます。 ヘッダファイルの違いでしょうか、 本プログラムの参考にしたサイトをもう一度確認してみます。
HiroPokeHero

2019/07/14 02:15

クラスの綴り(大文字小文字)が間違っていたようです。 最初 ```ここに言語を入力 server.on("/", handleRoot); // IPアドレスのみのアクセス時はhandleRoot()を起動 server.on("/RH", handleon(LED_R)); // IPアドレス+/Hの時 handleon()関数の起動を設定 server.on("/RL", handleoff(LED_R)); // IPアドレス+/Lの時 handleoff()関数の起動を設定 ``` 変更後 ```ここに言語を入力 Server.on("/", handleRoot); // IPアドレスのみのアクセス時はhandleRoot()を起動 Server.on("/RH", handleon(LED_R)); // IPアドレス+/Hの時 handleon()関数の起動を設定 Server.on("/RL", handleoff(LED_R)); // IPアドレス+/Lの時 handleoff()関数の起動を設定 ``` そこで、新しいエラーが出てきました。 以下
HiroPokeHero

2019/07/14 02:15

ピリオドの前に何か問題があるということはわかりますが、 そのあたりのヘッダファイルをのぞいてみたりしましたが、 結局Grepなどを使ってもたどり着けませんでした。 ``` ESP32_LED_Train:47:9: error: expected unqualified-id before '.' token Server.begin(); // サーバを開始 ^ D:\Arduino\ESP32_LED_Train\ESP32_LED_Train.ino: In function 'void loop()': ESP32_LED_Train:53:9: error: expected unqualified-id before '.' token Server.handleClient(); // ブラウザへのアクセスに応じて適切な関数を起動処理する ^ D:\Arduino\ESP32_LED_Train\ESP32_LED_Train.ino: In function 'void handleRoot()': ESP32_LED_Train:61:9: error: expected unqualified-id before '.' token Server.Send(200, "text/HTML", temp); ^ ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問