Arduino UNO コンパイルエラー error: 'Serial1' was not declared in this scope
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 4,428
前提・実現したいこと
Arduino M0 Proではコンパイル出来ていたプログラムが、
Arduino UNOではエラーとなり、困っています。
Serialの箇所の記入が良くないようなのですが、アイデアやアドバイスなどございましたらお教えいただけますと幸甚に存じます。
(※ESP WROOM-02は、Arduino M0 Proには配線していますが、Arduino UNOには配線していません。∵配線しないとコンパイルできないということもないと思うので。。。)
発生している問題・エラーメッセージ
C:\Users\y.y\Documents\Arduino\sketch_feb27a\sketch_feb27a.ino: In function 'void setupWiFi()':
sketch_feb27a:58: error: 'Serial1' was not declared in this scope
wifi.begin(Serial1);
^
exit status 1
'Serial1' was not declared in this scope
該当のソースコード(長いので該当箇所のみの入力です)
#include "ESP8266.h"
#include "Milkcocoa.h"
#include "Client_ESP8266.h"
// 転送スピード
#define SERIAL_SPEED 115200
/************************* WiFi Access Point *********************************/
// Wi-Fi SSID
#define WLAN_SSID "Daimon5"
// Wi-Fi PASSWORD
#define WLAN_PASS "e9792f9"
/************************* Your Milkcocoa Setup *********************************/
// MilkcocoaのアプリID
#define MILKCOCOA_APP_ID "readiy"
// Data Store名
#define MILKCOCOA_DATASTORE "Machin"
/************* Milkcocoa Setup (you don't need to change this!) ******************/
#define MILKCOCOA_SERVERPORT 1883
/************ Global State (you don't need to change this!) ******************/
// Create an ESP8266Client class to connect to the MQTT server.
ESP8266Client wifi;
const char MQTT_SERVER[] PROGMEM = MILKCOCOA_APP_ID ".mlkcca.com";
const char MQTT_CLIENTID[] PROGMEM = __TIME__ MILKCOCOA_APP_ID;
Milkcocoa milkcocoa = Milkcocoa(&wifi, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
void setup() {
// パソコンとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
// Wi-Fiモジュールとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
// Wi-Fi設定
setupWiFi();
// Milkcocoaへ光センサーの値がpushされた
// milkcocoa.on(MILKCOCOA_DATASTORE, "push", milkcocoaPushDataHandler);
}
/*
Wi-Fiを設定します
*/
void setupWiFi() {
Serial.print("Connecting to");
Serial.println(WLAN_SSID);
// シリアルポートの指定
wifi.begin(Serial1);
// Wi-Fiへ接続(成功するまで処理を繰り返す)
while (!wifi.joinAP(WLAN_SSID, WLAN_PASS)) {
delay(500);
Serial.print(".");
}
Serial.println("Wi-Fi connected");
Serial.println("IP address: ");
// Wi-FiのローカルIPアドレスをシリアルモニターへ表示
Serial.println(wifi.getLocalIP().c_str());
}
/**
* ループ処理
*/
void loop() {
// Milkcocoaのループ処理を実行
milkcocoa.loop();
}
試したこと
http://qiita.com/risekichi/items/ea6fe852b0596908484e
上記のサイトを参考に、Serial1やSerial5, Serial0など書き換えトライしてみましたがどれも同様の結果となってしまいました。
補足情報(言語/FW/ツール等のバージョンなど)
Arduino IDE 1.8.0
Arduino UNO
Arduino M0 Pro
ESP-WROOM-02
(※ESP WROOM-02は、Arduino UNOには配線していません。)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.13%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/02/28 10:14
こんにちはご回答いただき誠にありがとうございます。
Wifi.beginに該当する箇所をご提案通り修正しますと、コンパイル→書き込みはできるのですが、
シリアルモニタ上に出力される文字が9600bpsだと文字化けし(プログラムに指定した速度は9600にも関わらず)、115200bpsだと文字化け混じりながら以下のように出力されます。
Serialの宣言が、「パソコンとのシリアル通信」と「Wifiモジュールとのシリアル通信」とで重複しているからでしょうか。(※ちなみにWifiモジュールとは配線はまだしておりません)
お手数おかけいたしますが、どうかアドバイスやご提案などございましたらご教授いただけますと幸甚に存じます。
// パソコンとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
// Wi-Fiモジュールとのシリアル通信のポートを開ける
Serial.begin(SERIAL_SPEED);
結果(シリアルモニタを115200bpsに設定した際)
AT+CWJAP="Daimon5","e9799b94b2f9"9.9AT+CWJAP="Daimon5","e9799"9.9AT+CWJAP="on5","799"9.9AT+CWJAP="on5","799"9.9AT+CWJAP="on5","799"9
2017/02/28 10:27
http://blog.kur.jp/entry/2016/06/11/%E6%A0%BC%E5%AE%89WIFI%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%ABESP8266%E3%82%92Arduino_Uno%E3%81%A7%E4%BD%BF%E3%81%86_1
こちらを参考にしてはいかがでしょう。
2017/02/28 18:56 編集
コメントいただきまして誠にありがとうございます。
ESP-WROOM-02を新たに購入し、ATコマンドにてモードを3に変更しました。
(※AT+CWMODE_DEF=3 WIFI default mode(1:sta/2:AP/3:sta+AP)Save to Flash)
また、シリアル通信のスピードも9600に変更し、Arduinoに上記のプログラムを書き込み実行したのですが、症状としては変わらず、上記の結果が出るのみとなってしまいました。
RTCを用いた通信の箇所と、相性がよくないのでしょうか。
ESP-WROOM-02単体は、ATコマンドによってWifiへ接続することが可能であることは確認済みです。
不思議なのは、プログラム中には9600と指定しているのにも関わらず、シリアルモニタの速度が9600だと文字化けし、115200だと文字化けが少し解消する点です。
2017/02/28 19:30
AT+UART_DEF=9600,8,1,0,0
2017/03/01 09:11
コメントいただきありがとうございます。
おっしゃる通り、接続速度は設定済みでございます。
2017/03/01 11:40
私の環境(Win10)では文字化けは発生しません。
ただ、USBで電力供給してた場合は時々供給電力少ないためか文字化け起こしてしまいますが。