差分
このページの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プログラムを書き換える必要があるので,参考にしてください. | ||