#include<ESP8266WiFi.h>
#define Echo D2
#define Trig D8
#define Dong1 D6
#define Dong2 D7
#define Zhuan1 D4
#define Zhuan2 D5
char* ssid = "Tenda_D82600"; //“wifi热点名称”
char* passwd = "123456789aa"; //”wifi热点密码”
int port = 8888; //端口号
WiFiServer server(port); // 设置服务器端口号
long getTime()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
return pulseIn(Echo, HIGH);
}
void initChaoShengBo()
{
pinMode(Echo, INPUT);
pinMode(Trig, OUTPUT);
}
void initWifiSta()
{
WiFi.mode(WIFI_STA); // 设置STA模式
WiFi.begin(ssid, passwd); //连接网络
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println(WiFi.localIP()); //通过串口打印wemos的IP地址
}
void dzoutput() {
pinMode(Dong1, OUTPUT);
pinMode(Dong2, OUTPUT);
pinMode(Zhuan1, OUTPUT);
pinMode(Zhuan2, OUTPUT);
}
void qian() {
digitalWrite(Dong1, HIGH);
digitalWrite(Dong2, LOW);
}
void hou() {
digitalWrite(Dong2, HIGH);
digitalWrite(Dong1, LOW);
}
void ting() {
digitalWrite(Dong1, LOW);
digitalWrite(Dong2, LOW);
}
void zuo() {
digitalWrite(Zhuan1, HIGH);
digitalWrite(Zhuan2, LOW);
}
void you() {
digitalWrite(Zhuan2, HIGH);
digitalWrite(Zhuan1, LOW);
}
void zheng() {
digitalWrite(Zhuan1, LOW);
digitalWrite(Zhuan2, LOW);
}
void setup() {
dzoutput();
initChaoShengBo();
Serial.begin(115200);//打开串口
initWifiSta();
server.begin();//启动服务器
}
void loop() {
char cmd;
long dis;
int mark = 0;
WiFiClient client = server.available(); //服务初始化
while (client.connected()) { //等待客户端连接
while (client.available() > 0) { //有数据到来,类似串口的那个函数
cmd = client.read();//读取数据
//cmd = Serial.read();
dis = getTime() / 58;
if (dis < 10) {
hou();
delay(500);
ting();
mark = 1;
} else {
mark = 0;
}
if (mark == 0) {
switch (cmd) { //串口调试
case 'q':
qian();
break;
case 'h':
hou();
break;
case 'z':
zuo();
break;
case 'y':
you();
break;
case 's':
ting();
break;
case 'd':
zheng();
break;
}
}
}
}
}
垃圾桶代码
#include <Servo.h>
#define DuoPIN D5 //1.舵机的引脚
#define Echo D2//1.定义两个引脚
#define Trig D8
Servo myDuoJi;
long getTime()//波在空气中运行的时间
{
digitalWrite(Trig,HIGH);
delayMicroseconds(10); //10微秒高电平
digitalWrite(Trig,LOW);//10微秒后低电平
return pulseIn(Echo,HIGH);//获取时间
}
void initChaoShengBo()//超声波的初始化
{
pinMode(Echo,INPUT);//定义输入引脚
pinMode(Trig,OUTPUT);//定义输出引脚
}
void setup() {//1.一上电调用setup函数一次
initChaoShengBo();//2.超声波的初始化
myDuoJi.attach(DuoPIN);//3.舵机的连接
Serial.begin(115200);//没用到,但作为调试
}
void loop() {//4.不断的获取距离
long dis;
dis = getTime()/58;
if(dis<=10)
{
myDuoJi.write(90);//5.小于10cm转90开盖
delay(1000);//6. 2秒的延时
}
else
{
myDuoJi.write(180);//7.关盖转180
}
}