ESP−WROOM−02用スケッチ
ESP−WROOM−02用スケッチは以下としました。
//SG90_V1
#include <stdlib.h>
#include <ESP8266WiFi.h>
const char* ssid = "SSID";//無線LANのSSIDを設定します。
const char* password = "password";//無線LANのpasswordを設定します。
const char* host = "192.168.11.2";//パソコンのIPアドレスを設定します。
const int httpPort = 13000;//TCPサーバのポート
static String gSendText="";
void WiFi_loop();
void SG90_Servo();
void serialEvent();
int gX_T=0,gX_N=0;
int gY_T=0,gY_N=0;
void setup()
{
Serial.begin(115200);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
WiFi.begin(ssid, password);//無線LANに接続要求
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
int i;
for(i=0;i<10;i++)
{
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
delayMicroseconds(1500);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
delay(10);
}
}
void loop()
{
SG90_Servo();
serialEvent();
WiFi_loop();
if(gX_T>8){gX_T=8;}
if(gX_T<-8){gX_T=-8;}
if(gY_T>8){gY_T=8;}
if(gY_T<-8){gY_T=-8;}
}
void SG90_Servo()
{
int i;
if(gX_T-gX_N>0)
{
for(i=0;i<gX_T-gX_N;i++)
{
digitalWrite(4,HIGH);
delay(2);
digitalWrite(4,LOW);
delay(10);
}
gX_N=gX_T;
}
else
{
if(gX_T-gX_N<0)
{
for(i=0;i<gX_N-gX_T;i++)
{
digitalWrite(4,HIGH);
delay(1);
digitalWrite(4,LOW);
delay(11);
}
gX_N=gX_T;
}
}
if(gY_T-gY_N>0)
{
for(i=0;i<gY_T-gY_N;i++)
{
digitalWrite(5,HIGH);
delay(2);
digitalWrite(5,LOW);
delay(10);
}
gY_N=gY_T;
}
else
{
if(gY_T-gY_N<0)
{
for(i=0;i<gY_N-gY_T;i++)
{
digitalWrite(5,HIGH);
delay(1);
digitalWrite(5,LOW);
delay(11);
}
}
gY_N=gY_T;
}
}
void serialEvent()
{
int gi=0;
char inputString[50];
while (Serial.available())
{
String line = Serial.readStringUntil('\n');//受信します。
Serial.println(line+"\r\n");
if(line.indexOf("BT") == 0)
{
int Bracket2 = line.indexOf('#', 2 );
int Bracket3 = line.indexOf('#',Bracket2+1);
int Bracket4 = line.indexOf('#',Bracket3+1);
String inString_gX =line.substring(Bracket2+1,Bracket3);
String inString_gY =line.substring(Bracket3+1,Bracket4);
gX_T = inString_gX.toInt();
gY_T = inString_gY.toInt();
Serial.println(gX_T)/10;
Serial.println(gY_T)/10;
}
}
}
void WiFi_loop()
{
WiFiClient client;
if (client.connect(host, httpPort))
{
if(gSendText.length() > 0)
{
client.print(gSendText);//データを送信
Serial.print(gSendText);
gSendText="";
delay(500);
}
else
{
client.print("NG\r\n");
Serial.print("NG\r\n");
delay(1000);
}
while(client.available())
{
String line = client.readStringUntil('\n');//受信します。
if(line.indexOf("BT") == 0)
{
int Bracket2 = line.indexOf('#', 2 );
int Bracket3 = line.indexOf('#',Bracket2+1);
int Bracket4 = line.indexOf('#',Bracket3+1);
String inString_gX =line.substring(Bracket2+1,Bracket3);
String inString_gY =line.substring(Bracket3+1,Bracket4);
gX_T = inString_gX.toInt()/10;
gY_T = inString_gY.toInt()/10;
Serial.println(gX_T);
Serial.println(gY_T);
}
Serial.print(line+"\r\n");
gSendText=line + "=OK\r\n";//送信データのセット
}
}
}
processing用スケッチ
processing用スケッチは以下としました。
//TCP_Server
import processing.net.*;
int port = 13000;
Server myServer;
Client thisClient;
float Mx,My;
int gM=0;
void setup()
{
size(400,400,P3D);
noStroke();
myServer = new Server(this, port);
}
void draw()
{
//thisClient = myServer.available();
Mx=map(mouseX, 0, width, -PI/2, PI/2);
My=map(mouseY, 0, height, PI/2, -PI/2);
if(abs(Mx)>abs(My))
{
if(abs(Mx)<0.3)
{gM=0;}
else
{
if(abs(Mx)<0.5)
{gM=3;}
else{gM=1;}
}
}
else
{
if(abs(My)<0.3)
{gM=0;}
else
{
if(abs(My)<0.5)
{gM=4;}
else{gM=2;}
}
}
//thisClient = myServer.available();
thisClient = myServer.available();
if (thisClient != null)
{
if (thisClient.available() > 0)
{
//println(thisClient.ip() + " : " + thisClient.readString());
println(thisClient.readString());
int MX=(int)(100*Mx);
int MY=(int)(100*My);
thisClient.write("BT"+gM+"#"+MX+"#"+MY+"#\r\n");
}
}
pushMatrix();
lights();
background(255);
fill(0,255,0);
translate(width / 2, height / 2);
rotateZ(Mx);
rotateX(My);
box(100,20,200);
popMatrix();
}