在点灯科技APP使用esp8266控制舵机

   日期:2020-05-30     浏览:270    评论:0    
核心提示:最近有点事,一个星期没有写博客记录啦,其实遇到了不少有用的知识和小项目,没有写博客记录惭愧惭愧废话不多说,我们进入正题:这次我们用点灯科技来控制舵机的旋转使用的还是我们的Arduino IDE,硬件的需求有esp8266 nodemcu以及一个舵机1、为Arduino IDE添加点灯科技的库文件,具体操作看文章:https://blog.csdn.net/qq_44419932/article/details/1061319052、上代码:#include

最近有点事,一个星期没有写博客记录啦,其实遇到了不少有用的知识和小项目,没有写博客记录惭愧惭愧

废话不多说,我们进入正题:

这次我们用点灯科技来控制舵机的旋转

使用的还是我们的Arduino IDE,硬件的需求有esp8266 nodemcu以及一个舵机

1、为Arduino IDE添加点灯科技的库文件,具体操作看文章:
小爱同学脱离局域网远程控制开关?

2、上代码:

#include <Servo.h> 
#define BLINKER_WIFI
 
#include <Blinker.h>
 
char auth[] = "";   //key
char ssid[] = "";             //wifi名称
char pswd[] = "";      //wifi密码
 
// 新建组件对象
BlinkerButton Button1("btn-max");   //位置1 按钮 数据键名
BlinkerButton Button2("btn-min");   //位置2 按钮 数据键名
BlinkerButton Button3("btn-pw");    //循环模式 按钮 数据键名 开关模式
Servo myservo;
BlinkerSlider Slider1("max-num");   //位置1 滑块 数据键名 范围1-180
BlinkerSlider Slider2("min-num");   //位置2 滑块 数据键名 范围1-180
BlinkerSlider Slider3("ser-num");   //实时位置 滑块 数据键名 范围1-180
BlinkerSlider Slider4("time-num");  //循环模式间隔时间 滑块 数据键名 范围单位毫秒

bool xunhuan_mode = false;

int servo_max,servo_min,ser_num,time_num;
  
void button1_callback(const String & state) {    //位置1按钮
    BLINKER_LOG("get button state: ", servo_max);
    myservo.write(servo_max);
    Blinker.vibrate();
}
  
void button2_callback(const String & state) {   //位置2按钮
    BLINKER_LOG("get button state: ", servo_min); 
    myservo.write(servo_min);
    Blinker.vibrate();
}

void button3_callback(const String & state) {    //位置3按钮 开关模式
   // Blinker.vibrate();
    if(state == "on"){
      xunhuan_mode = true;  
      Button3.print("on");  
      Blinker.delay(100);
    }else if (state == "off"){
      xunhuan_mode = false;
      Button3.print("off");
      Blinker.delay(100);
    }
}


void slider1_callback(int32_t value)
{
    servo_max = value;
    Slider1.color("#1E90FF");
    Slider1.print();
    
    BLINKER_LOG("get slider value: ", value);
}

void slider2_callback(int32_t value)
{
    servo_min = value;
    Slider2.color("#FFF8DC");
    Slider2.print();
    BLINKER_LOG("get slider value: ", value);
}

void slider3_callback(int32_t value)
{
    ser_num = value;
    myservo.write(ser_num);
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}


void slider4_callback(int32_t value)
{
    time_num = value;
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}

void xunhuan(){
     myservo.write(servo_max);
     Blinker.delay(time_num/2);
     myservo.write(servo_min);
     Blinker.delay(time_num/2);
}

void setup() {

    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Slider1.attach(slider1_callback);
    Slider2.attach(slider2_callback);
    Slider3.attach(slider3_callback);
    Slider4.attach(slider4_callback);
    myservo.attach(5);	//servo.attach():设置舵机数据引脚
    myservo.write(10);	//servo.write():设置转动角度
    servo_max=70;
    servo_min=120;
    time_num=500;

}

void loop() {

  Blinker.run();
  if(xunhuan_mode==true){
    xunhuan();
  }
    
}

这里说一下Servo库

  1. attach()
    描述
    将Servo变量附加到引脚,注意:在Arduino 0016及之前的版本上,Servo库仅支持将舵机连接至第9和第10脚上。
    语法
    servo.attach(pin)
    servo.attach(pin, min, max)
    参数说明
    servo,一个类型为servo的变量
    pin,连接至舵机的引脚编号
    min(可选),舵机为最小角度(0度)时的脉冲宽度,单位为微秒,默认为544
    max(可选),舵机为最大角度(180度时)的脉冲宽度,单位为微秒,默认为2400

  2. write()
    描述
    向舵机写入一个数值,来直接控制舵机的轴。在一个标准的舵机中,这将设定齿轮的角度,将齿轮转到对应的位置。在一个连续旋转的舵机中,这将设置一个舵机的角度(0作为全速向一边,180为全速向另一边,在90附近的值为停止)。
    语法
    servo.write(angle)
    参数说明
    servo,一个类型为servo的变量
    angle,写向舵机的角度,从0到180之间

然后这里设置的是GPIO引脚,而我们esp8266并没有标明GPIO编号
我们按照下面编号对应表进行设置:

所以我们设置的GPIO5就是我们的D1端口

接下来进行烧录,硬件连接

这里再说一下我们的舵机接线问题:
在我手上的小舵机有三根线:棕色、红色以及黄色
黄色线为数据线,接我们数据引脚D1
红色为正极:接正极供电
棕色为负极:接负极接地

3、点灯科技APP设备的按钮设置
进入我们的设备

以下是我设置好的按钮和滑块:

可以看到有三个按钮,四个滑块,具体怎么设置呢?
三个按钮我们都以下为模板设置:
数据键名和文本名称都在我们代码头部注释了,大家注意一下。
可以看到我设置的键名为btn-max,文本名称为位置1。

以及我们的位置2和循环模式都是这样设置的

接下来我们设置滑块:
我们一共有4个滑块,其中位置1、位置2以及实时位置的设置是一模一样的:
我们设置对应的文本名称以及键名,最小值为0,最大值为180,代表舵机转动的角度

我这里再说一下最后一个,循环时间的滑块设置,其实和前面三个滑块的设置一样,设置文本名称以及对应的数据键名。但是,这里的最大值最小值可以根据自己的需求来的,它代表的是循环的间隔时间,单位为毫秒。我设置了0-2000,最大的时候间隔时间为2000毫秒。

4、我们上电开机:

一开始我们可以看到舵机复位到初始位置

设备在线以后我们进入我们设置好的控制界面
将位置2的滑块设置到一下位置,再点击位置2的按钮,可以看到舵机转动了

剩下的按钮及功能大家自己去慢慢尝试吧

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服