uSIZ1970 Postat Februarie 5, 2023 Partajează Postat Februarie 5, 2023 Buna ziua Am nevoie de ajutor in a face sa functioneze un cod program arduino format din doua coduri. (timer + push button).Subliniez ca nu prea sunt avansat in programare Arduino. Atasez codul program cu mentiunea ca dupa integrare timmer-ul functioneaza dar push button-ul nu. Independente functioneaza corect. Astept sfaturi sau corecturi ale programului. // Import required libraries #ifdef ESP32 #include <WiFi.h> #include <AsyncTCP.h> #else #include <ESP8266WiFi.h> #include <ESPAsyncTCP.h> #endif #include <ESPAsyncWebServer.h> // Replace with your network credentials const char* ssid = "MERCUSYS_2116"; const char* password = "Alexandru@1970"; const char* PARAM_INPUT_1 = "state"; const char* PARAM_INPUT_2 = "value"; const int output = 2; const int iesire = 0; String timerSliderValue = "10"; // Create AsyncWebServer object on port 80 AsyncWebServer server(80); const char index_html[] PROGMEM = R"rawliteral( <!DOCTYPE HTML><html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ESP Web Server</title> <style> html {font-family: Arial; display: inline-block; text-align: center;} h2 {font-size: 2.4rem;} p {font-size: 2.2rem;} body {max-width: 600px; margin:0px auto; padding-bottom: 25px;} .switch {position: relative; display: inline-block; width: 120px; height: 68px} .switch input {display: none} .slider {position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; border-radius: 34px} .slider:before {position: absolute; content: ""; height: 52px; width: 52px; left: 8px; bottom: 8px; background-color: #fff; -webkit-transition: .4s; transition: .4s; border-radius: 68px} input:checked+.slider {background-color: #2196F3} input:checked+.slider:before {-webkit-transform: translateX(52px); -ms-transform: translateX(52px); transform: translateX(52px)} .slider2 { -webkit-appearance: none; margin: 14px; width: 300px; height: 20px; background: #ccc; outline: none; -webkit-transition: .2s; transition: opacity .2s;} .slider2::-webkit-slider-thumb {-webkit-appearance: none; appearance: none; width: 30px; height: 30px; background: #2f4468; cursor: pointer;} .slider2::-moz-range-thumb { width: 30px; height: 30px; background: #2f4468; cursor: pointer; } <meta name="viewport" content="width=device-width, initial-scale=1"> <style> body { font-family: Arial; text-align: center; margin:0px auto; padding-top: 30px;} .button { padding: 10px 20px; font-size: 24px; text-align: center; outline: none; color: #fff; background-color: #2f4468; border: none; border-radius: 5px; box-shadow: 0 6px #999; cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); } .button:hover {background-color: #1f2e45} .button:active { background-color: #1f2e45; box-shadow: 0 4px #666; transform: translateY(2px); } </style> </head> <body> <h2>ESP Web Server</h2> <p><span id="timerValue">%TIMERVALUE%</span> s</p> <p><input type="range" onchange="updateSliderTimer(this)" id="timerSlider" min="1" max="40" value="%TIMERVALUE%" step="1" class="slider2"></p> %BUTTONPLACEHOLDER% <button class="button" onmousedown="toggleCheckbox('on');" ontouchstart="toggleCheckbox('on');" onmouseup="toggleCheckbox('off');" ontouchend="toggleCheckbox('off');"> ALIMENTARE APA </button> <script> function toggleCheckbox(element) { var sliderValue = document.getElementById("timerSlider").value; var xhr = new XMLHttpRequest(); if(element.checked){ xhr.open("GET", "/update?state=0", true); xhr.send(); var count = sliderValue, timer = setInterval(function() { count--; document.getElementById("timerValue").innerHTML = count; if(count == 0){ clearInterval(timer); document.getElementById("timerValue").innerHTML = document.getElementById("timerSlider").value; } }, 1000); sliderValue = sliderValue*1000; setTimeout(function(){ xhr.open("GET", "/update?state=1", true); document.getElementById(element.id).checked = false; xhr.send(); }, sliderValue); var xhr = new XMLHttpRequest(); xhr.open("GET", "/" + x, true); xhr.send(); } } function updateSliderTimer(element) { var sliderValue = document.getElementById("timerSlider").value; document.getElementById("timerValue").innerHTML = sliderValue; var xhr = new XMLHttpRequest(); xhr.open("GET", "/slider?value="+sliderValue, true); xhr.send(); } </script> </body> </html> )rawliteral"; // Replaces placeholder with button section in your web page String processor(const String& var){ //Serial.println(var); if(var == "BUTTONPLACEHOLDER"){ String buttons = "MANCARE"; String outputStateValue = outputState(); buttons+= "<p><label class=\"switch\"><input type=\"checkbox\" onchange=\"toggleCheckbox(this)\" id=\"output\" " + outputStateValue + "><span class=\"slider\"></span></label></p>"; return buttons; } else if(var == "TIMERVALUE"){ return timerSliderValue; } return String(); } String outputState(){ if(digitalRead(output)){ return "checked"; } else { return ""; } return ""; } // Set your Static IP address IPAddress local_IP(192, 168, 1, 181); // Set your Gateway IP address IPAddress gateway(192, 168, 1, 1); IPAddress subnet(255, 255, 255, 0); IPAddress primaryDNS(89, 38, 8, 1); //optional IPAddress secondaryDNS(89, 38, 8, 133); //optional void setup(){ // Serial port for debugging purposes Serial.begin(115200); pinMode(output, OUTPUT); digitalWrite(output, LOW); pinMode(iesire, OUTPUT); digitalWrite(iesire, LOW); // Configures static IP address if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) { Serial.println("STA Failed to configure"); } // Connect to Wi-Fi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi.."); } // Print ESP Local IP Address Serial.println(WiFi.localIP()); // Route for root / web page server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html, processor); }); // Send a GET request to <ESP_IP>/update?state=<inputMessage> server.on("/update", HTTP_GET, [] (AsyncWebServerRequest *request) { String inputMessage; // GET input1 value on <ESP_IP>/update?state=<inputMessage> if (request->hasParam(PARAM_INPUT_1)) { inputMessage = request->getParam(PARAM_INPUT_1)->value(); digitalWrite(output, inputMessage.toInt()); } else { inputMessage = "No message sent"; } Serial.println(inputMessage); request->send(200, "text/plain", "OK"); }); // Send a GET request to <ESP_IP>/slider?value=<inputMessage> server.on("/slider", HTTP_GET, [] (AsyncWebServerRequest *request) { String inputMessage; // GET input1 value on <ESP_IP>/slider?value=<inputMessage> if (request->hasParam(PARAM_INPUT_2)) { inputMessage = request->getParam(PARAM_INPUT_2)->value(); timerSliderValue = inputMessage; } else { inputMessage = "No message sent"; } Serial.println(inputMessage); request->send(200, "text/plain", "OK"); }); // Send web page to client server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html); }); // Receive an HTTP GET request server.on("/on", HTTP_GET, [] (AsyncWebServerRequest *request) { digitalWrite(iesire, HIGH); request->send(200, "text/plain", "ok"); }); // Receive an HTTP GET request server.on("/off", HTTP_GET, [] (AsyncWebServerRequest *request) { digitalWrite(iesire, LOW); request->send(200, "text/plain", "ok"); }); // Start server server.begin(); } void loop() { } Pe viitor foloseste simbolul "<>" in editor pentru inserarea de cod! Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum