本帖最后由 wing 于 2017-10-9 14:29 编辑
昨天把硬件装好,今日趁热打铁把程式也写好了。
基本功能都正常,然而只是初版还有很大优化空间。
怕之后就没机会了,所以还是先发上来了
界面效果
页面代码 - <html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>PWM</title>
- <style type="text/css">input.vertical { -webkit-appearance: slider-vertical; writing-mode: bt-lr; width:100px; height:400px; }</style>
- <script type="text/javascript">
- function roc(S)
- {
- var txt;
- var url;
- url ="pwm2.q?";
- if (S==1)
- {
- txt = document.getElementById("r_l").value;
- url =url+"l=" + escape(txt);
- }
- if (S==2)
- {
- txt = document.getElementById("r_r").value;
- url =url+"r=" + escape(txt);
- }
- var xhr = new XMLHttpRequest();
- xhr.open("GET", url, true);
- xhr.onreadystatechange = function(e){
- if (xhr.readyState == 4) {
- var rtn = xhr.responseText;
- if (rtn.indexOf("l")>=0)
- {document.getElementById("t_l").value = rtn;}
- if (rtn.indexOf("r")>=0)
- {document.getElementById("t_r").value = rtn;}
- }};
- xhr.send();}
- </script>
- </head><body><table><tbody><tr><td><input type="range" min="-1000" max="1000" value="0" class="vertical" ontouchend="roc(1)" onmouseup="roc(1)" id="r_l"></td><td><table><tbody><tr><td><label for="t_l">l:</label></td><td><input type="text" id="t_l"></td></tr><tr><td><label for="t_r">r:</label></td><td><input type="text" id="t_r"></td></tr></tbody></table></td><td><input type="range" min="-1000" max="1000" value="0" class="vertical" ontouchend="roc(2)" onmouseup="roc(2)" id="r_r"></td></tr></tbody></table></body></html>
复制代码
主控程式代码
- //8266 AP +ws 1.5号机 wifi ssid=ESP8266xxxxxxxx pwd=ap20170930 访问 http://192.168.128.1/pe15.html 可见网页
- #include <ESP8266WiFi.h>
- #include <ESP8266WebServer.h>
- #include <FS.h> //文件系统库SPIFFS
- ESP8266WebServer server ( 80 );
- int p_a_fx =13; //A机方向 GPIO13 ->D12
- int p_a_dl =0; //A机动力 GPIO0->D3
- int p_b_fx =16; //B机方向 GPIO16->D13
- int p_b_dl =12; //B机动力 GPIO12->D11
- void ch_page() {
- if(SPIFFS.exists("/pe15.html")){ //如果文件存在
- File file = SPIFFS.open("/pe15.html", "r"); //打开文件
- size_t sent = server.streamFile(file, "text/html"); //发送内容
- file.close(); //关闭文件
- return;
- }
- else
- {
- handleNotFound(); //404
- }
- }
- void pwm2_page() {
- String p= "";
- String sv;
- int iv;
- int ix;
- //server.args() 这个应该是返回参数的个数
-
- if (server.hasArg("r")) //是否有r参数
- {//设置A机运转状态
- sv=server.arg("r");
- p="r="+sv; //取r参数值
- server.send(200, "text/plain", p);
- iv=sv.toInt();
- if (iv>=0){
- digitalWrite(p_a_fx, 1); //A设置方向为正向
- }
- else{
- digitalWrite(p_a_fx, 0); //A设置方向为逆向
- iv=iv*-1;
- }
- if (iv<=200) //A机动力
- {analogWrite(p_a_dl,0); }
- else
- {analogWrite(p_a_dl,iv); }
- return;
- }
- if (server.hasArg("l"))
- {
- sv=server.arg("l");
- p="l="+sv;
- server.send(200, "text/plain", p);
- iv=sv.toInt();
- if (iv>=0){
- digitalWrite(p_b_fx, 0); //B设置方向为逆向 A和变方向是相反的
- }
- else{
- digitalWrite(p_b_fx, 1); //B设置方向为正向 A和变方向是相反的
- iv=iv*-1;
- }
- if (iv<=200) //B机动力
- {analogWrite(p_b_dl,0); }
- else
- {analogWrite(p_b_dl,iv); }
- return;
- }
- }
- void handleNotFound() {
- String message = "File Not Found\n\n";
- message += "URI: ";
- message += server.uri();
- message += "\nMethod: ";
- message += ( server.method() == HTTP_GET ) ? "GET" : "POST";
- message += "\nArguments: ";
- message += server.args();
- message += "\n";
- for ( uint8_t i = 0; i < server.args(); i++ ) {
- message += " " + server.argName ( i ) + ": " + server.arg ( i ) + "\n";
- }
-
- server.send ( 404, "text/plain", message ); // 返回信息给浏览器(状态码,Content-type, 内容)
- }
- void setup() {
- SPIFFS.begin();
- //启用电机A的2个管脚,全部设置为输出状态
- pinMode(p_a_fx,OUTPUT); //A机方向
- digitalWrite(p_a_fx, 0);
- pinMode(p_a_dl,OUTPUT); //A机动力
- digitalWrite(p_a_dl, 0);
- //启用电机B的2个管脚,全部设置为输出状态
- pinMode(p_b_fx,OUTPUT); //B机方向
- digitalWrite(p_b_fx, 0);
- pinMode(p_b_dl,OUTPUT); //B机动力
- digitalWrite(p_b_dl, 0);
-
- analogWriteRange(1023); //PWM取值范围
-
- // 设置内网
- IPAddress softLocal(192,168,128,1);
- IPAddress softGateway(192,168,128,1);
- IPAddress softSubnet(255,255,255,0);
- WiFi.softAPConfig(softLocal, softGateway, softSubnet);
- String apName = ("ESP8266_"+(String)ESP.getChipId());
- const char *softAPName = apName.c_str();
- WiFi.softAP(softAPName, "ap20170930");
- IPAddress myIP = WiFi.softAPIP();
- server.on ( "/inline", []() {server.send ( 200, "text/plain", "this works as well" );} );
- server.on ( "/pe15.html", ch_page );
- server.on ( "/pwm2.q", pwm2_page );
- server.onNotFound ( handleNotFound );
- server.begin();
- }
- void loop ( void ) {
- server.handleClient();
- }
复制代码
2楼有简单说明
7楼更新程式版本A 2017-10-09 |