ESP8266从零学起第二课控制9g小舵机

ESP8266从零学 笔记

L2 ESP8266控制9g小舵机

P1 写在前面

 把控制舵机用作第二课的测试,也不知道因为啥,可能是看到网上的各种好玩的视频。也是因为过年和闹病加在一起,手头的小家伙们就剩下小舵机和一些别的了。
 这节课计划是先把Arduino控制的舵机程序记录一遍,再看Esp8266控制舵机,所以内容比较长。
  注释中的“[小白说]”,代表的是个人的观点,如果有理解的不对的地方,希望能够进行沟通并改正。
 当然最后还是建议多百度多思考!
 材料:Esp8266一块、Esp8266烧写器、Arduino UNO/Nano一块、数据线、杜邦线若干、9g小舵机、安装有blinker APP 的手机、wifi(移动热点)。

P2 Esp8266完整代码(未注释)

//整体效果是:滑块控制舵机的位置(0~180),按下按键舵机到达指定位置。
//如果只是由滑块控制舵机详细操作见代码!
#include <Servo.h> 
#define BLINKER_WIFI
 
#include <Blinker.h>
 
char auth[] = "我是来自blinker的密钥";
char ssid[] = "HUAWEI nova 21";
char pswd[] = "我是密码";
 
// 新建组件对象(按键+滑块)
BlinkerButton Button1("btn-max");   //位置1 按钮 数据键名
BlinkerSlider Slider1("max-num");   //位置1 滑块 数据键名  范围0-180
Servo myservo;

int servo_max;
  
void button1_callback(const String & state) {    //位置1 按钮
    BLINKER_LOG("get button state: ", servo_max);
    myservo.write(servo_max);
    Blinker.vibrate();
}
  
void slider1_callback(int32_t value)
{
	BLINKER_LOG("get slider value: ", value);
    servo_max = value;
    Slider1.color("#1E90FF");
    Slider1.print();
    myservo.write(value);//如果包含这句,APP中的按键是不起作用的,只有滑块管用。
}

void setup() {
    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Slider1.attach(slider1_callback);
    myservo.attach(2);
    myservo.write(10);
}

void loop() {
  Blinker.run();
 }

P3 Arduino控制9g小舵机


#include <Servo.h>//舵机不简单哦,去看一看自己的IDE是否有Servo的库哈!

Servo myservo;  // 定义舵机对象,myservo就是这次要用的舵机名称后续会用到 

void setup(){
	myservo.attach(2);  // 设置舵机控制针脚:2
}

void loop(){
	myservo.write(180);  //写入舵机应该到达的位置。
}

P4 Esp8266控制9g小舵机(分段)

第一段:准备工作
#include <Servo.h> //引入舵机的库
#define BLINKER_WIFI
#include <Blinker.h>
 
char auth[] = "我是来自blinker的密钥";
char ssid[] = "HUAWEI nova 21";
char pswd[] = "我是密码";
//上节已经详细介绍过了,如果有疑问可以移步第一课,感谢
第二段:新建
// 新建组件对象(按键+滑块)
BlinkerButton Button1("btn-max");   //位置1 按钮 数据键名
BlinkerSlider Slider1("max-num");   //位置1 滑块 数据键名  范围0-180
Servo myservo;//定义一个本次要使用的舵机,myservo是这个舵机的名字

在这里插入图片描述

可以按照上图方式在blinker APP中新建两个组件(按键+滑块

具体方式上节已详细说明

第三段:自定义按键与滑块的函数

int servo_max;
//定义了一个变量,用来保存从手机读取来的位置数据
//[小白说]这个变量没啥作用
  
//和上一节课一样的 定义按键的回调函数,
void button1_callback(const String & state) {    //位置1 按钮
    BLINKER_LOG("get button state: ", servo_max);
    //blinker日志,获取按键的状态,这一次记录的是来自滑块的数据
    
    myservo.write(servo_max);
    //控制舵机转到这个位置,
    //[小白说]servo_max保存的是来自滑块的值
    
    Blinker.vibrate();
    //向手机发送振动指令,()里面是振动的时间,范围是0-1000,默认是500ms
    //[小白说]这个东西挺好玩的,第一次尝试的时候,我还纳闷为啥会震动了?
}

//新建了一个滑块组件
//定义滑块的回调函数
void slider1_callback(int32_t value)
//int32_t与int同样是定义变量的数据类型,含义相近
//int32_t  :  typedef signed int

{
	BLINKER_LOG("get slider value: ", value);
	//blinker日志(得到滑块的数值到value里)

    servo_max = value;
    //[小白说]value的数值又转手给了servo_max,这不就回到上面那个按键控制舵机位置用到的servo_max了嘛!

    Slider1.color("#1E90FF");
    //[小白说]字面意思是滑块的颜色,可是滑块的颜色是APP创建时候定的呀有啥用呢?
	//[小白说]哇,还是程序老大!APP上滑块进度条的颜色以程序为主
	
    Slider1.print();
    //打印输出滑块数值的
	//[小白说]这个输出会体现在滑块身上,挺有意思的我尝试了把‘()’里写21,结果是不管滑块话到哪里,都会回到21的位置上。好玩!咱也不知道有啥用!
	
    myservo.write(value);
    //如果包含这句,APP中的按键是不起作用的,只有滑块管用。
	//[小白说]可以尝试把这句注释掉!
}

第四段:初始化设置一下就可以开始啦

void setup() {
    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Slider1.attach(slider1_callback);
    //[小白说]以上部分的初始化设置,可以参照上一节课哈!
    
    myservo.attach(2);
    //设置舵机的引脚为2,IO2
    
    myservo.write(10);
    //初始设置舵机的位置在10。
}

void loop() {
  Blinker.run();//干活啦!!! //详解见第一节笔记
 }

完整代码在开头

感谢阅读

作者QQ:2489055370,
欢迎大神指教与同学的提问(提问这篇的内容或者更简单的可以 [笑哭] )

  • 19
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值