差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
public:理数研究ラボ2018補助教材 [2018/08/23 19:12] suda [ESP8266を利用したネットワークプログラミング] |
public:理数研究ラボ2018補助教材 [2018/08/23 23:41] (現在) suda [ESP8266を利用したネットワークプログラミング] |
||
---|---|---|---|
行 138: | 行 138: | ||
----- | ----- | ||
- | + | < | |
- | **音を鳴らすプログラム** | + | |
<code cpp speaker.ino> | <code cpp speaker.ino> | ||
int speaker = 9; // スピーカーをつないだピンは9番 | int speaker = 9; // スピーカーをつないだピンは9番 | ||
行 168: | 行 167: | ||
} | } | ||
</ | </ | ||
+ | < | ||
----- | ----- | ||
行 189: | 行 189: | ||
void loop() { | void loop() { | ||
- | led.setPixelColor(0, | + | led.setPixelColor(0, |
led.show(); // 設定を反映させる | led.show(); // 設定を反映させる | ||
delay(duration); | delay(duration); | ||
行 204: | 行 204: | ||
- | **ふわっと光らせるしくみ** | + | < |
<code cpp fade2.ino> | <code cpp fade2.ino> | ||
#include < | #include < | ||
行 229: | 行 229: | ||
} | } | ||
</ | </ | ||
+ | < | ||
**for文**は,繰り返し処理の書き方です.'' | **for文**は,繰り返し処理の書き方です.'' | ||
行 234: | 行 235: | ||
----- | ----- | ||
- | **Fujichan用の色と時間を指定してLEDをふわっと光らせるプログラム** | + | < |
Fujichanのプログラムでは,色と時間を指定してLEDをふわっと光らせるプログラムを用意しています.'' | Fujichanのプログラムでは,色と時間を指定してLEDをふわっと光らせるプログラムを用意しています.'' | ||
行 258: | 行 259: | ||
} | } | ||
</ | </ | ||
+ | < | ||
+ | |||
----- | ----- | ||
行 316: | 行 319: | ||
{{ : | {{ : | ||
+ | < | ||
<code cpp> | <code cpp> | ||
#include " | #include " | ||
行 385: | 行 389: | ||
} | } | ||
</ | </ | ||
+ | < | ||
if文をいくつかの条件に分岐させるときは,**else文**を使います.最初のif文の後に,'' | if文をいくつかの条件に分岐させるときは,**else文**を使います.最初のif文の後に,'' | ||
行 405: | 行 410: | ||
----- | ----- | ||
+ | |||
+ | <wrap lo> | ||
**Wi-Fiに接続するには** | **Wi-Fiに接続するには** | ||
行 446: | 行 453: | ||
{{ : | {{ : | ||
- | 以下の部分を,上で確認したものに書き換えます. | + | 以下の,Wi-Fiネットワーク設定と,取得したい場所のアメダス・火山情報のURLの部分を,上で確認したものに書き換えます. |
<code cpp> | <code cpp> | ||
行 463: | 行 470: | ||
このプログラムでは,指定したSSIDとパスワードを使ってWi-Fiへ接続する'' | このプログラムでは,指定したSSIDとパスワードを使ってWi-Fiへ接続する'' | ||
+ | |||
< | < | ||
<code cpp> | <code cpp> | ||
行 568: | 行 576: | ||
{{ : | {{ : | ||
- | シリアルモニターを開いて,インターネットから取得した,気温,噴火警戒レベル,降水量の情報が表示されればOKです.この情報を,先ほど作ったデータに応じた音や光の変化に反映させましょう. | + | シリアルモニターを開いて,インターネットから取得した,気温,噴火警戒レベル,降水量の情報が表示されればOKです.この情報を,先ほど作ったデータに応じた音や光の変化の処理に反映させましょう.(スピーカーのピン番号が9から16に変わっています.直接ピン番号を指定する場合は注意) |
----- | ----- | ||
- | ダウンロードしたプログラム(sketch_final)の大部分は,先ほどシリアルモニターでデータを送ったプログラム(sketch_simpleFujichanDev)と同じです. | + | **プログラムを一つにまとめる** |
+ | |||
+ | ダウンロードしたプログラム(sketch_final)の大部分は,先ほどシリアルモニターでデータを送ったプログラム(sketch_simpleFujichanDev)と同じです.< | ||
+ | |||
+ | '' | ||
+ | |||
+ | <code cpp> | ||
+ | #include " | ||
+ | |||
+ | #define UPDATE_INTERVAL 60*5 // 更新間隔[秒] | ||
+ | |||
+ | float temperature | ||
+ | int | ||
+ | float precipitation = 0; // 降水量(単位は[mm/ | ||
+ | |||
+ | void setup() { | ||
+ | led.setup(); | ||
+ | Serial.begin(115200); | ||
+ | Serial.println(" | ||
+ | |||
+ | // Wi-Fiへ接続する関数 | ||
+ | connect(); | ||
+ | // Webサーバからデータを取得する関数 | ||
+ | update(& | ||
+ | update2(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | ~中略~ | ||
+ | |||
+ | if ( metro(UPDATE_INTERVAL) == true ) { // 更新時間が来たら | ||
+ | update(& | ||
+ | update2(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void update2(){ | ||
+ | /* 気温が更新された時の処理.ここから */ | ||
+ | |||
+ | |||
+ | /* ここまで */ | ||
+ | } | ||
+ | |||
+ | // 更新時間を教えてくれる関数 | ||
+ | static unsigned long int time = 0; | ||
+ | bool metro(int seconds) { | ||
+ | if ( (millis() - time) > seconds * 1000 ) { | ||
+ | time = millis(); | ||
+ | return true; | ||
+ | } | ||
+ | else { | ||
+ | return false; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ----- | ||
+ | |||
+ | **補足:データ更新の間隔** | ||
+ | |||
+ | データ更新の間隔は,一番下の更新時間を教えてくれる関数で管理しています.'' | ||
+ | |||
+ | < | ||
+ | #define UPDATE_INTERVAL 60*5 // 更新間隔[秒] | ||
+ | </ | ||
+ | |||
+ | 手動で情報更新する場合は,シリアルモニターから「3001」を送信します. | ||
----- | ----- | ||
- | **補足資料:開発環境を整える** | + | **補足:開発環境を整える** |
Arduino IDEでESP8266を開発するためには,以下の作業が必要です.自宅のWi-Fiに接続するにはArduinoプログラムを書き換える必要があるので,参考にしてください. | Arduino IDEでESP8266を開発するためには,以下の作業が必要です.自宅のWi-Fiに接続するにはArduinoプログラムを書き換える必要があるので,参考にしてください. |