#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static const uint8_t D1 = 5; static const uint8_t D2 = 4; static const char* ssid = "MINOLTA_REMOTE_CONTROL"; static const char* password = "12345678"; bool isFocusPressed = false; IPAddress local_IP(192,168,1,200); IPAddress gateway(192,168,1,1); IPAddress subnet(255,255,255,0); AsyncWebServer server(80); void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); // Initialize the LED_BUILTIN pin as an output pinMode(D1, OUTPUT); pinMode(D2, OUTPUT); digitalWrite(LED_BUILTIN, LOW); digitalWrite(D1, LOW); digitalWrite(D2, LOW); if (!WiFi.softAPConfig (local_IP, gateway, subnet)) { Serial.println("Failed to config IP"); } WiFi.softAP(ssid, password); Serial.println(WiFi.softAPIP()); Serial.println("Waiting for connect"); /*while(WiFi.status() != WL_CONNECTED) { digitalWrite(LED_BUILTIN, HIGH); delay(500); Serial.print("."); Serial.print(WiFi.status()); digitalWrite(LED_BUILTIN, LOW); }*/ Serial.println("Client connected"); server.on("/api/focus",HTTP_GET, [](AsyncWebServerRequest *request) { Serial.println("api/focus"); digitalWrite(LED_BUILTIN, HIGH); halfPress(); digitalWrite(LED_BUILTIN, LOW); request->send(200,"application/json","{\"result\":\"true\"}"); }); server.on("/api/takePhoto",HTTP_GET, [](AsyncWebServerRequest *request) { Serial.println("api/takePhoto"); digitalWrite(LED_BUILTIN, HIGH); if (request->hasParam("msec")) { int ms = request->getParam("msec")->value().toInt(); } else { pressFullWithDelay(1000); } digitalWrite(LED_BUILTIN, LOW); request->send(200,"application/json","{\"result\":\"true\"}"); }); server.on("/api/reset",HTTP_GET, [](AsyncWebServerRequest *request) { Serial.println("api/reset"); digitalWrite(LED_BUILTIN, HIGH); unPress(); digitalWrite(LED_BUILTIN, LOW); request->send(200,"application/json","{\"result\":\"true\"}"); }); server.on("/api/multiple",HTTP_GET, [](AsyncWebServerRequest *request) { Serial.println("api/multiple"); digitalWrite(LED_BUILTIN, HIGH); if (request->hasParam("count") && request->hasParam("delay")) { int ms = 1000; int count = request->getParam("count")->value().toInt(); int delayMs = request->getParam("delay")->value().toInt(); if (request->hasParam("msec")) { ms = request->getParam("msec")->value().toInt(); } if (!isFocusPressed) { halfPress(); delay(1000); } while (count>0) { fullPress(); delay(ms); digitalWrite(D2, LOW); count--; delay(delayMs); } } digitalWrite(LED_BUILTIN, LOW); request->send(200,"application/json","{\"result\":\"true\"}"); }); server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request){ request->send(200, "text/plain", "Is working"); }); server.begin(); } void halfPress() { digitalWrite(D1, HIGH); isFocusPressed = true; } void fullPress() { if (!isFocusPressed) { halfPress(); delay(1000); } digitalWrite(D2, HIGH); } void pressFullWithDelay(int ms) { fullPress(); delay(ms); unPress(); } void unPress() { digitalWrite(D2, LOW); digitalWrite(D1, LOW); isFocusPressed = false; } void multipleShoot(int ms, int count, int delayMs) { if (!isFocusPressed) { halfPress(); delay(1000); } while (count>0) { fullPress(); delay(ms); digitalWrite(D2, LOW); count--; delay(delayMs); } } void loop() { // put your main code here, to run repeatedly: }