HOME >> 鉄道模型実験室 > 登山鉄道レイアウトとモニタ式操作盤 > ESP32モジュールのスケッチ内容

鉄道模型実験室 No.227  登山鉄道レイアウトとモニタ式操作盤 ESP32モジュールのスケッチ内容    

 通信モジュールESP32のスケッチの内容である。

//ESP32 テスト45

#include <WiFi.h>
#include <WebServer.h>

#define PTS1 12
#define PTS2 14
#define LEFT 32
#define RIGHT  25
#define SPD 26

const char* ssid = "ooooooooooooo";   //ssidを入力
const char* passwd = "oooooooooooo";  //ネットワークパスワード入力
const IPAddress ip(192,xxx,xxx,yyy);
const IPAddress gateway(192,xxx,xxx,zzz);
const IPAddress subnet(255,255,255,0);

WebServer server(80);           //通信を受けるポート番号(通常は80に設定)
int spd=0 ;
    
void setup(){
  Serial.begin(115200);       //シリアル通信のデータ転送レートを115200bpsで指定
  pinMode(PTS1, OUTPUT);
  pinMode(PTS2, OUTPUT); 
  pinMode(LEFT, OUTPUT); 
  pinMode(RIGHT, OUTPUT); 
  pinMode(SPD, OUTPUT); 
  digitalWrite(PTS1, LOW);
  digitalWrite(PTS2, LOW); 
  digitalWrite(LEFT, LOW); 
  digitalWrite(RIGHT, LOW); 
  dacWrite(SPD, 0); 

  WiFi.config(ip,gateway,subnet);
  delay(100);
  WiFi.begin(ssid, passwd);       //アクセスポイント接続のためのIDとパスワードの設定
  while (WiFi.status() != WL_CONNECTED){  //接続状態の確認
    delay(300);                           //接続していなければ0.3秒待つ
    Serial.print(".");                    //接続しなかったらシリアルモニタに「.」と表示
  }

  Serial.println("");                     //シリアルモニタ改行
  Serial.println("WiFi Connected");       //接続したらシリアルモニタに「WiFi Connected」と表示
  Serial.print("IP Address : ");          //シリアルモニタに表示
  Serial.println(WiFi.localIP());         //割り当てられたIPアドレスをシリアルモニタに表示

  server.on("/", handleLedOnOff);         //TOPページのアドレスにアクセスしたときの処理関数
  server.onNotFound(handleNotFound);      //存在しないアドレスにアクセスしたときの処理関数
  server.begin();                         //WebServer起動
}

void loop(){
  server.handleClient();
}

void handleLedOnOff(){              //アクセスしたときの処理関数
  if (server.hasArg("point1")){
    if (server.arg("point1").equals("on")){
      digitalWrite(PTS1, HIGH);
      server.send(200, "text/html", "Point No1 is Revers Position");
    }
    else if (server.arg("point1").equals("off")){
      digitalWrite(PTS1, LOW);
      server.send(200, "text/html", "Point No1 is Normal Position");
    }
  }
  if (server.hasArg("point2")){
    if (server.arg("point2").equals("on")){
      digitalWrite(PTS2, HIGH);
      server.send(200, "text/html", "Point No2 is Revers Position");
    } else if (server.arg("point2").equals("off")){
      digitalWrite(PTS2, LOW);
      server.send(200, "text/html", "Point No2 is Normal Position");
    }
  }
  if (server.hasArg("direction")){
    if (server.arg("direction").equals("left")){
      digitalWrite(LEFT, HIGH);
      server.send(200, "text/html", "LEFT Direction !");
    } else if (server.arg("direction").equals("right")){
      digitalWrite(RIGHT, HIGH);
      server.send(200, "text/html", "RIGHT Direction !");
    } else if (server.arg("direction").equals("stop")){
      digitalWrite(LEFT, LOW);
      digitalWrite(RIGHT, LOW);
      server.send(200, "text/html", "Now STOP");
    }
  }
  if (server.hasArg("speed")){ 
    if (server.arg("speed").equals("up")){
      spd = spd + 10;             //速度の計算
      if (spd >= 255 ){
        spd = 255;
      }
      dacWrite(SPD, spd);
      server.send(200, "text/html", "Speed UP !");
    } else if (server.arg("speed").equals("down")){
      spd = spd - 10;             //速度の計算
      if (spd <= 0 ){
        spd = 0 ;
      }
      dacWrite(SPD, spd);
      server.send(200, "text/html", "Speed DOWN !");
    }
  }
}

void handleNotFound(void) {               //存在しないアドレスへアクセスしたときの処理関数
  server.send(404, "text/plain", "Not Found");
}

 

ページトップへ戻る  .


 2022/11/10