本文,我们还是用小爱同学来实现操控SG90舵机。从而简单的实现利用舵机开门,开灯等一些列骚操作。
材料准备
- ESP8266
- SG90舵机
- 杜邦线
线路连接
舵机三根电线 黄线->接信号(D4
),红线->接正极(5V
),褐线->接负极(G
)
效果
代码
#include
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include
char auth[] = "064****a9"; //key
char ssid[] = "PDCN"; //wifi名称
char pswd[] = "1234567890"; //wifi密码
// 新建组件对象
BlinkerButton Button1("btn-max"); //最大值按钮
BlinkerButton Button2("btn-min"); //最小值按钮
Servo myservo;
BlinkerSlider Slider3("ser-num"); //实时位置 滑块 数据键名 范围1-180
int servo_max,servo_min,ser_num,time_num;
void button1_callback(const String & state) { //最大值按钮功能
BLINKER_LOG("get button state: ", servo_max);
myservo.write(servo_max);
Blinker.vibrate();
}
void button2_callback(const String & state) { //最小值按钮功能
BLINKER_LOG("get button state: ", servo_min);
myservo.write(servo_min);
Blinker.vibrate();
}
void slider3_callback(int32_t value) //滑块功能
{
ser_num = value;
myservo.write(ser_num);
Blinker.delay(100);
BLINKER_LOG("get slider value: ", value);
}
//小爱功能
void miotPowerState(const String & state)
{
BLINKER_LOG("need set power state: ", state);
if (state == BLINKER_CMD_ON) {
BLINKER_LOG("get button state: ", servo_max);
myservo.write(servo_max);
Blinker.vibrate();
}
else if (state == BLINKER_CMD_OFF) {
BLINKER_LOG("get button state: ", servo_min);
myservo.write(servo_min);
Blinker.vibrate();
}
}
void setup() {
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
Blinker.begin(auth, ssid, pswd);
Button1.attach(button1_callback);
Button2.attach(button2_callback);
Slider3.attach(slider3_callback);
BlinkerMIOT.attachPowerState(miotPowerState);
myservo.attach(2); //servo.attach():设置舵机数据引脚
myservo.write(10); //servo.write():设置转动角度
servo_max=150;//旋转的度数,这里我的范围为0-150°
servo_min=0;
time_num=500;
}
void loop() {
Blinker.run();
}
关于引脚 可以参考下图
效果
版权属于:逍遥子大表哥
本文链接:https://blog.bbskali.cn/3861.html
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
此处评论已关闭