参考
↓クリック
↑クリック
x 過去ログを見よ!!
x 3.0.7
x Arduino IDE
x Grove自作クロスケーブル
x ロジカラプログ様のプログラムを非営利、研究調査目的で引用しました。
x なぜかUSBシリアルで起動が失敗するぼいので何度かシリアルターミナルを開く事。
修正してください
const char ssid[] = "自宅のWi-FiルーターのSSIDを設定"; // 接続先SSID
const char pass[] = "自宅のWi-Fiルーターのパスワードを設定"; // 接続先パスワード
いろいろ
HTMLをやらないと、わすれる
直接編集するのは、インターネット老人会で言われてバカにされる風潮。
#include "Arduino.h"
#include <WiFi.h> // Wi-Fi接続用
#include <WebServer.h> // サーバー設定用
#include <ESPmDNS.h> // ドメインネームでIPアドレス取得用
#define BLUE_LED_PIN 7 // 青色LED端子番号
#define BTN_PIN 9 // 本体ボタン端子番号
#define OUT_PIN 2 // 外部出力端子番号
#define OUT2_PIN 1 // 外部出力端子番号
// 変数宣言
bool state = false; // ボタン状態保持用
// Wi-Fiローカル接続先設定
const char ssid[] = "自宅のWi-FiルーターのSSIDを設定"; // 接続先SSID
const char pass[] = "自宅のWi-Fiルーターのパスワードを設定"; // 接続先パスワード
const char mdnsName[] = "nano1"; // mDNS Name(mdnsName.localで接続可能)
// サーバー設定ポート80で接続
WebServer server(80);
// htmlメイン画面データ ※R"この中の文字列は改行は無視され連続した文字列として扱われる"
char html[] = R"(
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>REMOTE-SWITCH</title>
<style>
body { display: flex; justify-content: center; height: 100vh; }
.container { margin-top: 20px;text-align: center; }
button { height:50px }
</style>
</head>
<body>
<div class="container">
<h1>REMOTE-SWITCH</h1>
<div>
<button onclick="location.href='/get/btn_on'"> ON1 </button>
<button onclick="location.href='/get/btn_off'"> OFF1 </button>
</div>
<div>-------------------</div>
<div>
<button onclick="location.href='/get/btn_on2'"> ON2 </button>
<button onclick="location.href='/get/btn_off2'"> OFF2 </button>
</div>
</div>
</body>
</html>
)";
/******************サーバーリクエスト時処理関数 ******************/
// ルートアクセス時の応答関数
void handleRoot() {
server.send(200, "text/html", html); //レスポンス200を返しhtml送信
}
// エラー(Webページが見つからない)時の応答関数
void handleNotFound() {
server.send(404, "text/plain", "404 Not Found!"); //text送信
}
// ブラウザONボタン処理
void btnOn() {
digitalWrite(BLUE_LED_PIN, HIGH); // 本体LED点灯
digitalWrite(OUT_PIN, HIGH); // 外部出力ON
Serial.println("get:/get/btn_on");
server.send(200, "text/html", html); //レスポンス200を返しhtml送信
}
// ブラウザOFFボタン処理
void btnOff() {
digitalWrite(BLUE_LED_PIN, LOW); // 本体LED消灯
digitalWrite(OUT_PIN, LOW); // 外部出力OFF
Serial.println("get:/get/btn_off");
server.send(200, "text/html", html); //レスポンス200を返しhtml送信
}
// ブラウザONボタン処理
void btnOn2() {
//digitalWrite(BLUE_LED_PIN, HIGH); // 本体LED点灯
digitalWrite(OUT2_PIN, HIGH); // 外部出力ON
Serial.println("get:/get/btn_on2");
server.send(200, "text/html", html); //レスポンス200を返しhtml送信
}
// ブラウザOFFボタン処理
void btnOff2() {
//digitalWrite(BLUE_LED_PIN, LOW); // 本体LED消灯
digitalWrite(OUT2_PIN, LOW); // 外部出力OFF
Serial.println("get:/get/btn_off2");
server.send(200, "text/html", html); //レスポンス200を返しhtml送信
}
// 初期設定 ---------------------------------------------------
void setup() {
Serial.begin(9600); // シリアル通信初期化(ArduinoIDEの「USB CDC On Boot:」設定は"Enable"にしておく)
// Wi-Fi接続開始
while (WiFi.localIP()[0] == 0) { // IPアドレスが取得されるまで繰り返し
WiFi.begin(ssid, pass); //ローカル Wi-Fi接続実行
//delay(3000); // 再接続待ち
for(int i=0;i<6;i++){
Serial.print(".");
delay(500); // 再接続待ち
}
Serial.println();
}
// mDNS設定(mdnsName.localでアクセス)
MDNS.begin(mdnsName);
// 接続情報シリアル出力表示
Serial.print("IP:");
Serial.println(WiFi.localIP()); // IPアドレス(配列)表示
Serial.printf("mDNS:%S\n", mdnsName); // mDNS名表示
// サーバー設定
server.on("/", handleRoot); //ルートアクセス時の応答関数を設定
server.onNotFound(handleNotFound); //Webページが見つからない時の応答関数を設定
server.on("/get/btn_on", btnOn); //ボタンオン受信処理
server.on("/get/btn_off", btnOff); //ボタンオフ受信処理
server.on("/get/btn_on2", btnOn2); //ボタンオン受信処理
server.on("/get/btn_off2", btnOff2); //ボタンオフ受信処理
server.begin(); //Webサーバー開始
// 入力設定
pinMode(BTN_PIN, INPUT_PULLUP); // 本体ボタン
// 出力設定
pinMode(BLUE_LED_PIN, OUTPUT); // 本体LED青
pinMode(OUT_PIN, OUTPUT); // 外部出力
pinMode(OUT2_PIN, OUTPUT); // 外部出力
}
// メイン -----------------------------------------------------
void loop() {
if (digitalRead(BTN_PIN) == LOW && state == false) { // 本体ボタンがON で stateがfalseなら
digitalWrite(BLUE_LED_PIN, HIGH); // 本体LED点灯
digitalWrite(OUT_PIN, HIGH); // 外部出力ON
state = true; // stateをtrueへ
}
if (digitalRead(BTN_PIN) == HIGH && state == true) { // 本体ボタンがOFFなら
digitalWrite(BLUE_LED_PIN, LOW); // 本体LED消灯
digitalWrite(OUT_PIN, LOW); // 外部出力OFF
state = false; // stateをfalseへ
}
server.handleClient(); //クライアントからのアクセス確認
delay(100); //遅延時間(ms)
}