新手发帖。ESP32局域网控制32路mos管
大家好,本人是新手,刚接触ESP32,发现这东西是真的香啊。正好朋友的密室逃脱店里想要做个wifi控制机关的道具。刚开始的时候用ESP32开发板和继电器板
从淘宝上找到发觉价格太贵。于是自己画了个去打样
一通焊接,再通过点灯科技的例程修改下做了个控制16路继电器的。
以为完事了。结果朋友说16路太少了。而且他需要用电脑控制。
于是便想到用74HC595.然后就从新画了板子。
发觉视频不知道怎么传。多发几张照片吧
板子我这还有,如果有想要了可以联系我哦。
图没啥看的,吧程序发来看看 #include <WiFi.h>
#include <WebServer.h> //引入相应库
const char *ssid = "";
const char *password = "";
int t=0;
byte Sta;
int latchPin = 15;
int clockPin = 2;
int dataPin = 4;
hw_timer_t * timer = NULL;
WebServer server(80); //声明WebServer对象
void handleArg1() //回调函数
{
String arg = server.pathArg(0);
int a=arg.toInt();
if(a==100){Sta=0;
Sta=0;
Sta=0;
Sta=0;
t=10;
}
else if(a==101){Sta=255;
Sta=255;
Sta=255;
Sta=255;
t=10;
}
String c= String(Sta)+","+ String(Sta)+","+ String(Sta)+","+ String(Sta);
server.send(200, "text/plain", c);
}
void IRAM_ATTR onTimer(){
if(t>=10){
digitalWrite(latchPin, LOW);
shiftOut(dataPin,clockPin,MSBFIRST,Sta);
shiftOut(dataPin,clockPin,MSBFIRST,Sta);
shiftOut(dataPin,clockPin,MSBFIRST,Sta);
shiftOut(dataPin,clockPin,MSBFIRST,Sta);
digitalWrite(latchPin, HIGH);
t=0;
}
else{t++;}
}
void handleArg2() //回调函数
{
String arg0 = server.pathArg(0);
String arg1 = server.pathArg(1);
int a=arg0.toInt();
int s=arg1.toInt();
if(a<8&s<=1)
{ bitWrite(Sta, a, s);
t=10;
//String c= String(Sta);
// server.send(200, "text/plain", c);
}
else if(a<16&s<=1)
{ bitWrite(Sta, a-8, s);
t=10;
}
else if(a<24&s<=1)
{ bitWrite(Sta, a-16, s);
t=10;
}
else if(a<32&s<=1)
{ bitWrite(Sta, a-24, s);
t=10;
}
else if(a==200)
{ unsigned char hexdata={170,7,2,0,0,0};
hexdata=s;
hexdata=hexdata+hexdata+hexdata+hexdata+hexdata;
Serial2.write(hexdata, 6);
}
else if(a==201)
{ unsigned char hexdata={170,22,3,2,0,0,0};
hexdata=s;
hexdata=hexdata+hexdata+hexdata+hexdata+hexdata+hexdata;
Serial2.write(hexdata, 7);
}
else if(a==202)
{ unsigned char hexdata={170,24,1,0,0};
hexdata=s;
hexdata=hexdata+hexdata+hexdata+hexdata;
Serial2.write(hexdata, 5);
}
else if(a==203)
{ unsigned char hexdata={170,19,1,0,0};
hexdata=s;
hexdata=hexdata+hexdata+hexdata+hexdata;
Serial2.write(hexdata, 5);
}
String c= String(Sta)+","+ String(Sta)+","+ String(Sta)+","+ String(Sta);
server.send(200, "text/plain", c);
//IRAM_ATTR onTimer();
}
void setup()
{
Serial.begin(115200);
Serial2.begin(9600);
Serial.println();
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.setSleep(false);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Connected");
Serial.print("IP Address:");
Serial.println(WiFi.localIP());
server.on("/{}", handleArg1); //注册链接与回调函数
server.on("/{}/{}", handleArg2);
server.begin(); //启动服务器
Serial.println("Web server started");
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 500000, true);
timerAlarmEnable(timer);
}
void loop()
{
server.handleClient(); //处理来自客户端的请求
} 电脑端是怎么做的?能分享下吗? keliyuan 发表于 2020-11-4 17:39
电脑端是怎么做的?能分享下吗?
https://blog.csdn.net/Naisu_kun/article/details/88572129
看看这个就懂了
:lol先收下了
页:
[1]