求助 ESP01S控制舵机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2682|回复: 2

求助 ESP01S控制舵机

[复制链接]
发表于 2020-9-8 15:49 | 显示全部楼层 |阅读模式
1.jpg 4_Servo_far.zip (2.34 KB, 下载次数: 11)
我想做个用来机械控制开关灯的。接线是C口接降压模块,降压模块正负接ESP01S的3V3正,负极接ESP01S的GND。舵机信号线接ESP01S的IO0。正负并联ESP。
然后刷的附件程序,可以控制舵机。但有个问题。手机操作后舵机总判断3下。看代码是点NO就转一个角度,然后回到原点。点OFF转一个角度,然后回原点。

不知道哪里出错了。舵机一直执行3次。求助!
 楼主| 发表于 2020-9-8 15:55 | 显示全部楼层

代码

本帖最后由 hun517 于 2020-9-8 15:59 编辑
  1. /***********
  2. 局域网下控制舵机快关灯
  3. 需要esp8266库
  4. **************/
  5. #include <ESP8266WiFi.h>
  6. #include <ESP8266mDNS.h>
  7. #include <WiFiUdp.h>
  8. #include <ArduinoOTA.h>
  9. #include <Servo.h>

  10. /***********请修改以下内容**************/
  11. const char* ssid = "wifi01";// wifi名称
  12. const char* password = "c12345678";// wifi密码

  13. const int ESP_BUILTIN_LED = 2; //led引脚状态指示
  14. const int pin = 0;     //舵机连接引脚
  15. const int pos0 = 50;     // 开灯角度,多次实验调节
  16. const int pos1 = 130;   // 关灯角度,需要多次实验调节
  17. const int pos2 = 90;    // 正常角度
  18. /***********请修改以上内容**************/

  19. int anl=0;
  20. WiFiServer server(80);  //创建tcp server
  21. Servo myservo;          //创建舵机对象

  22. void setup() {
  23.   Serial.begin(115200);
  24.   myservo.write(pos2);
  25.   delay(200);
  26.   
  27.   Serial.println();
  28.   Serial.println();
  29.   Serial.println("Connecting to  ");
  30.   Serial.print(ssid);

  31.   //WiFi.mode(WIFI_STA);//设置为接收WiFi模式
  32.   WiFi.begin(ssid, password);
  33.   struct ip_info info;
  34.   
  35.   //下方修改局域网内静态IP;
  36.   //注意:不要与其他ip冲突ip冲突
  37.   IP4_ADDR(&info.ip,192,168,1,173);

  38.   
  39.   IP4_ADDR(&info.gw,192,168,1,1);
  40.   IP4_ADDR(&info.netmask,255,255,255,0);
  41.   wifi_station_dhcpc_stop();
  42.   wifi_set_ip_info(STATION_IF,&info); //设置sta模式的IP

  43.    while (WiFi.status() != WL_CONNECTED) {
  44.     delay(500);
  45.     Serial.print(F("."));
  46.   }
  47.   
  48.   Serial.println();
  49.   Serial.println(F("WiFi connected"));

  50.   // Hostname defaults to esp8266-[ChipID]
  51.   //ArduinoOTA.setHostname("WemosEXP");

  52.   ArduinoOTA.begin();

  53.   pinMode(ESP_BUILTIN_LED, OUTPUT);


  54.   
  55.   server.begin();//启动tcp连接
  56.   Serial.println("Server started @");
  57.   Serial.print(WiFi.localIP());

  58.   myservo.attach(pin);
  59.   delay(20);
  60. }



  61. String prepareHtmlPage(){
  62.   String htmlPage =
  63.      String("HTTP/1.1 200 OK\r\n") +
  64.             "Content-Type: text/html\r\n" +
  65.             "Connection: close\r\n" +  // the connection will be closed after completion of the response
  66.             "\r\n" +

  67.             "<!DOCTYPE html> <html>\n"+
  68.             "<head><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">\n"+
  69.             "<title>LED Control</title>\n"+
  70.             "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n"+
  71.             "body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n"+
  72.             ".button {display: block;width: 120px;background-color: #1abc9c;border: none;color: white;padding: 13px 30px;text-decoration: none;font-size: 25px;margin: 0px auto 35px;cursor: pointer;border-radius: 4px;}\n"+
  73.             ".button-on {background-color: #5AD2FF;}\n"+
  74.             ".button-on:active {background-color: #DE341E;}\n"+
  75.            
  76.             ".button-off {background-color: #34495e;}\n"+
  77.             ".button-off:active {background-color: #DE341E;}\n"+
  78.             "p {font-size: 14px;color: #888;margin-bottom: 10px;}\n"+
  79.             "</style>\n"+
  80.             "</head>\n"+
  81.             "<body>\n"+
  82.             "<h1>Digital PIN2 status: "+String(digitalRead(ESP_BUILTIN_LED))+"</h1>\n"+
  83.             
  84.             "<form id='F1' action='LEDON'><input class='button button-on' type='submit' value='ON' ></form><br>"+
  85.             "<form id='F2' action='LEDOFF'><input class='button button-off' type='submit' value='OFF' ></form><br>"+

  86.             "</html>" +
  87.             "\r\n";
  88.   return htmlPage;
  89. }

  90. void loop() {
  91.   
  92. ArduinoOTA.handle();


  93. WiFiClient client = server.available();
  94.   // wait for a client (web browser) to connect
  95.   if (client){
  96.     while (client.connected()){
  97.       // 不断读取请求内容
  98.       if (client.available()){
  99.         String line = client.readStringUntil('\r');

  100.       if ( line.indexOf("LEDON") > 0 )  {
  101.          digitalWrite(ESP_BUILTIN_LED, LOW);
  102.          myservo.write(pos0);
  103.          delay(500);
  104.          myservo.write(pos2);
  105.          delay(500);
  106.        }
  107.        else if  ( line.indexOf("LEDOFF") > 0 ) {
  108.          digitalWrite(ESP_BUILTIN_LED, HIGH);
  109.          myservo.write(pos1);
  110.          delay(500);
  111.          myservo.write(pos2);
  112.          delay(500);
  113.       }

  114.         
  115.        // Serial.print(line);
  116.         if (line.length() == 1 && line[0] == '\n'){
  117.           //返回响应内容
  118.           client.println(prepareHtmlPage());
  119.           break;
  120.         }
  121.       }
  122.     }

  123.     delay(1000); // give the web browser time to receive the data
  124.     // close the connection:
  125.     client.flush();//注意这里必须用client.flush(),如果是client.close会报错的
  126.   }

  127. //delay(5000);

  128. }
复制代码

发表于 2020-9-22 16:33 | 显示全部楼层
你好,这是用网页端控制吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:47 , Processed in 0.171426 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表