之前说到局域网的通信,那么控制led的开关肯定不在话下,这里给你们看个例子
先看个视频吧
#include
const char *ssid = "南一游戏中心";//这里是我的wifi,你使用时修改为你要连接的wifi ssid
const char *password = "Tplinkwifi";//你要连接的wifi密码
WiFiServer server(8088);//你要的端口号,随意修改,范围0-65535
WiFiClient serverClient;//客户端
int i=0;//变量
int wifiLed=2,led=3;//wifiled显示wifi状态,led是我们要遥控的
char run='c';//储存命令
#define OPEN 'o'
#define CLOSE 'c'
void setup()
{
Serial.begin(115200); //设置波特率
pinMode(wifiLed,OUTPUT); //设置wifiled的输出口
pinMode(led,OUTPUT); //设置led的输出口
delay(10);
Serial.println();
Serial.println();
Serial.print("Connecting to ");//写几句提示,哈哈
Serial.println(ssid);
WiFi.begin(ssid, password);
int cnt=0;
while (WiFi.status() != WL_CONNECTED&&cnt<20)//WiFi.status() ,这个函数是wifi连接状态,返回wifi链接状态
//这里就不一一赘述它返回的数据了,有兴趣的到ESP8266WiFi.cpp中查看
{
digitalWrite(wifiLed, cnt%2==0?HIGH:LOW); //达到亮灭的目的
delay(500);//延时0.5秒
Serial.print(".");
cnt++;
}
if(cnt<20)//如果有连上wifi
{
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址
digitalWrite(wifiLed, HIGH); //wifi指示灯打开
server.begin();//启动服务
server.setNoDelay(true); //加上后才正常些
Serial.println("Working...");
}
else
{
Serial.println("WiFi disconnected,please check!");
digitalWrite(wifiLed, LOW); //wifi指示灯灭
}
}
void loop()
{
if(WiFi.status() != WL_CONNECTED)//监测wifi连接状态
{
Serial.println("WiFi disconnected,please check!");
digitalWrite(wifiLed, LOW);
delay(1000);
}
else
{
digitalWrite(wifiLed, HIGH);
if (server.hasClient())//如果有连接进来
{
if (!serverClient|| !serverClient.connected())
{
if (serverClient)
serverClient.stop();//未联接,就释放
serverClient= server.available();//分配新的
}
}
if (serverClient && serverClient.connected())
{
if (serverClient.available())
{
int r=1;//读取第一个,剩余的不要
while (serverClient.available())
{
if (r==1)
run=serverClient.read();//读取到的命令存起来
Serial.print(serverClient.read());//输出读取的内容
r++;
}
}
}
switch(run)//对命令进行判断,并操作
{
case OPEN:digitalWrite(led, HIGH);
break;
case CLOSE:digitalWrite(led, LOW);
break;
}
delay(10);
if (serverClient && serverClient.connected())
{
serverClient.write("LED已经"); //向客户端发送数据
serverClient.write(digitalRead(led)==0?"关闭":"打开");
serverClient.write("\n");
delay(1);
}
}
}