Initial working example

This commit is contained in:
Riyyi
2025-05-10 22:31:03 +02:00
parent 2b6ba48365
commit 830a4e2137
4 changed files with 106 additions and 32 deletions
+3
View File
@@ -25,3 +25,6 @@ lib_deps =
monitor_filters =
esp32_exception_decoder
time ; add timestamp with milliseconds for each new line
upload_port = /dev/ttyACM0
monitor_port = /dev/ttyACM0
+63 -19
View File
@@ -12,16 +12,25 @@
#define HIDDEN true
#define MAX_CONNECTION 1
#define SWITCH_PIN 2
#define POWER_PIN 2
#define RESET_PIN 3
WiFiServer server(PORT);
bool powerPressed = false;
bool resetPressed = false;
void processButtons();
void setPowerPin(bool enable);
void setResetPin(bool enable);
void setup()
{
Serial.begin(9600);
Serial.setDebugOutput(true);
pinMode(SWITCH_PIN, OUTPUT);
pinMode(POWER_PIN, OUTPUT);
pinMode(RESET_PIN, OUTPUT);
// Wait for a USB connection to be established
while (!Serial)
@@ -37,40 +46,75 @@ void setup()
void loop()
{
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
Serial.println("ESP32 loopy!");
// -------------------------------------
WiFiClient client = server.available();
if (client) {
Serial.println("Client connected");
// unsigned long start = 0;
unsigned long start = 0;
while (client.connected()) {
if (client.available()) {
String msg = client.readStringUntil('\n');
Serial.print("Received: ");
Serial.println(msg);
// Do something with the message, like toggling an LED
if (msg == "power_pressed") {
powerPressed = true;
}
else if (msg == "power_released") {
powerPressed = false;
}
else if (msg == "reset_pressed") {
resetPressed = true;
}
else if (msg == "reset_released") {
resetPressed = false;
}
client.print("ACK\n");
Serial.println("Sent ACK");
// start = millis();
start = millis();
}
// // Kill lingering connections
// if (start != 0 && millis() - start < 1000) {
// Serial.println("Client kill..");
// break;
// }
// Kill lingering connections
if (start != 0 && millis() - start > 200) {
Serial.println("Client kill..");
break;
}
processButtons();
}
setPowerPin(false);
setResetPin(false);
client.stop();
Serial.println("Client disconnected");
}
}
// -----------------------------------------
void processButtons()
{
if (powerPressed && resetPressed) {
Serial.println("Double input..");
setPowerPin(false);
setResetPin(false);
return;
}
setPowerPin(powerPressed);
setResetPin(resetPressed);
}
void setPowerPin(bool enable)
{
powerPressed = enable;
digitalWrite(POWER_PIN, (enable) ? HIGH : LOW);
}
void setResetPin(bool enable)
{
resetPressed = enable;
digitalWrite(RESET_PIN, (enable) ? HIGH : LOW);
}