Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <WiFi.h>
- #include <WebServer.h>
- #include <WiFiClient.h>
- #include <ESPmDNS.h>
- // GPIO-контакт, к которому подключен сервопривод:
- const int ledPin = 27;
- // вставьте здесь учетные данные своей сети:
- const char* ssid = "Redmi";
- const char* password = "12345678";
- // создаем веб-сервер на порте «80»:
- WebServer server(80);
- // переменная для хранения HTTP-запроса:
- String header;
- const int freq = 1000;
- const int ledChannel = 0;
- const int resolution = 16;
- char htmlResponse[3000];
- void handleRoot() {
- snprintf ( htmlResponse, 3000,
- "<!DOCTYPE html>\
- <html lang=\"en\">\
- <head>\
- <meta charset=\"utf-8\">\
- <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\
- </head>\
- <body>\
- <center><h1>Input Voltage</h1>\
- <input type='text' name='Voltage' id='Voltage' size=10 autofocus> Input Voltage \
- <div>\
- <br><button id=\"save_button\">Send Value</button>\
- </div></center>\
- <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\"></script>\
- <script>\
- var vlt;\
- $('#save_button').click(function(e){\
- e.preventDefault();\
- vlt = $('#Voltage').val();\
- $.get('/save?vlt=' + vlt, function(data){\
- console.log(data);\
- });\
- });\
- </script>\
- </body>\
- </html>");
- server.send(200, "text/html", htmlResponse);
- }
- void handleSave() {
- if (server.arg("vlt")!= ""){
- double vlt = server.arg("vlt").toDouble();
- double pwm = 0;
- if (vlt < 2.35) {
- Serial.println("Вы лох, батенька");
- vlt = 2.35;
- }
- if (vlt > 20) {
- Serial.println("Вы лох, батенька");
- vlt = 20;
- }
- if (vlt >= 2.053 && vlt<=2.429) {
- pwm = 1120000*vlt - 599091.53*pow(vlt, 2) + 97270.91*pow(vlt, 3) - 555056.01;
- }
- if (vlt > 2.429 && vlt<=2.9044) {
- pwm = - 1946000*vlt - 663917.686*pow(vlt, 2) - 76052.71*pow(vlt, 3) + 1929000;
- }
- if (vlt > 2.9044 && vlt<=3.023) {
- pwm = 698771.83*vlt - 247841.85*pow(vlt, 2) + 28588.47*pow(vlt, 3) - 624255.9;
- }
- if (vlt >3.023 && vlt<=3.6476) {
- pwm = - 164469.48*vlt + 37815.88*pow(vlt, 2) - 2909.79*pow(vlt, 3) + 244994.92;
- }
- if (vlt > 3.6476 && vlt<=4.391) {
- pwm = -150582.39*vlt + 33363.15*pow(vlt, 2) - 2502.88*pow(vlt, 3) + 233835.97;
- }
- if (vlt > 4.391 && vlt<=5.01) {
- pwm = 8570.55*vlt - 2937.04*pow(vlt, 2) + 252.77*pow(vlt, 3) + 1595.3;
- }
- if (vlt > 5.01 && vlt<=6.573) {
- pwm = - 22131.13*vlt + 3196.08*pow(vlt, 2) - 155.29*pow(vlt, 3) + 52782.94;
- }
- if (vlt > 6.573 && vlt<=7.85) {
- pwm = - 4881.61*vlt + 528.11*pow(vlt, 2) - 19.99*pow(vlt, 3) + 16246.81;
- }
- if (vlt > 7.85 && vlt<=8.47) {
- pwm = - 4009.6*vlt + 418.84*pow(vlt, 2) - 15.35*pow(vlt, 3) + 13890.95;
- }
- if (vlt > 8.47 && vlt<=9) {
- pwm = - 259.69*vlt - 22.28*pow(vlt, 2) + 2.01*pow(vlt, 3) + 3226.53;
- }
- if (vlt > 9 && vlt<=9.86) {
- pwm = - 1293.81*vlt + 92.74*pow(vlt, 2) - 2.25*pow(vlt, 3) + 6322.44;
- }
- if (vlt > 9.86 && vlt<=10.82) {
- pwm = - 1814.92*vlt + 145.12*pow(vlt, 2) - 4.02*pow(vlt, 3) + 8065.16;
- }
- if (vlt > 10.82 && vlt<=11.83) {
- pwm = - 957.15*vlt + 65.6*pow(vlt, 2) - 1.57*pow(vlt, 3) + 4995.5;
- }
- if (vlt > 11.83 && vlt<=12.53) {
- pwm = - 1237.45*vlt + 89.39*pow(vlt, 2) - 2.24*pow(vlt, 3) + 6087.75;
- }
- if (vlt > 12.53 && vlt<=13.8) {
- pwm = 219.25*vlt - 26.77*pow(vlt, 2) + 0.85*pow(vlt, 3) - 6.47;
- }
- if (vlt > 13.8 && vlt<=15.32) {
- pwm = - 2148.01*vlt + 144.64*pow(vlt, 2) - 3.29*pow(vlt, 3) + 10898.28;
- }
- if (vlt > 15.32 && vlt<=17.42) {
- pwm = 3802.48*vlt - 245.08*pow(vlt, 2) + 5.22*pow(vlt, 3) - 19393.05;
- }
- if (vlt > 17.42 && vlt<=19.7) {
- pwm = - 16726.31*vlt + 933.37*pow(vlt, 2) - 17.33*pow(vlt, 3) + 99815.81;
- }
- if (vlt > 19.7 && vlt<=20) {
- pwm = 120936.25*vlt - 6054.6*pow(vlt, 2) + 100.91*pow(vlt, 3) - 804165;
- }
- if (pwm < 0) {
- pwm = pwm*(-1);
- }
- if (pwm > 65355) {
- pwm = 65355;
- }
- ledcWrite(ledChannel, round(pwm));
- Serial.print("PWM: ");
- Serial.println(pwm);
- }
- }
- void setup() {
- Serial.begin(115200);
- ledcSetup(ledChannel, freq, resolution);
- // привязываем канал к GPIO-контакту, которым будем управлять:
- ledcAttachPin(ledPin, ledChannel);
- // подключаемся к WiFi при помощи заданных выше SSID и пароля:
- Serial.print("Connecting to "); // "Подключаемся к "
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(500);
- Serial.print(".");
- }
- // печатаем локальный IP-адрес и запускаем веб-сервер:
- Serial.println("");
- Serial.println("WiFi connected."); // "WiFi подключен."
- Serial.println("IP address: "); // "IP-адрес: "
- Serial.println(WiFi.localIP());
- server.on ( "/", handleRoot );
- server.on ("/save", handleSave);
- server.begin();
- Serial.println ( "HTTP server started" );
- }
- void loop(){
- server.handleClient();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement