ESP32 ボードを MOSFET トランジスタを使用して 12V LED に接続し、touchPin を使用して操作します。アイデアは、2つの同一のボードを持つことであり、一方のボードでランプをオンにすると、Wifiを使用してもう一方のボードでも点灯するはずです(ボードは同じ物理的な場所に配置されず、異なるネットワークに接続されるため)。
それ自体は魅力のように機能しますが、GET 要求を介して他のボードのトランジスタ状態を取得しようとすると、意図したとおりに動作しません。つまり、トランジスタの状態が他のボードに渡されないため、LED には影響しません。 . エラーは私の void setup() にあるのではないかと思います。以下を参照してください
void setup() {
Serial.begin(1155200);
delay(1000);
// Initialise the LED Pin as an output
pinMode(transistor, OUTPUT);
// Send a GET request to <IP>/led/<number>/state/<0 or 1>
server.on("^\\/led\\/([0-9]+)\\/state\\/([0-9]+)$", HTTP_GET, [] (AsyncWebServerRequest *request) {
String ledNumber = request->pathArg(0); // currently unused - we use only a predefined LED number
String state = request->pathArg(1);
request->send(200, "text/plain", "LED: " + ledNumber + ", with state: " + state);
});
または、以下に示すように、void loop() の for ループで:
void loop() {
while (1) {
touchValue = touchRead(touchPin);
//Serial.print(touchValue);
if (millis() - lastTimeButtonStateChanged > debounceDuration) {
// check if the touchValue is below the threshold
// if it is, set ledPin to HIGH
buttonState = (touchValue < threshold) ? HIGH: LOW;
if (buttonState != lastButtonState) {
lastTimeButtonStateChanged = millis();
lastButtonState = buttonState;
if (buttonState == LOW) {
transistorState = (transistorState == HIGH) ? LOW: HIGH;
digitalWrite(transistor, transistorState);
if(transistorState == LOW){
transistorStateInt = 0;
} else{
transistorState = 1;
}
}
}
}
for (auto const &host : Husarnet.listPeers()) {
IPv6Address peerAddr = host.first;
if(host.second == "master") {
;
} else {
AsyncClient* client_tcp = new AsyncClient;
client_tcp->onConnect([](void *arg, AsyncClient *client) {
String requestURL = "/led/1/state/" + String(transistorStateInt);
String GETreq = String("GET ") + requestURL + " HTTP/1.1\r\n" + "Host: esp32\r\n" + "Connection: close\r\n\r\n";
if ( client->canSend() && (client->space() > GETreq.length())){
client->add(GETreq.c_str(), strlen(GETreq.c_str()));
client->send();
} else {
Serial.printf("\r\nSENDING ERROR!\r\n");
}
}, client_tcp);
}
}