本文,我们还是用小爱同学来实现操控SG90舵机。从而简单的实现利用舵机开门,开灯等一些列骚操作。

材料准备

  • ESP8266
  • SG90舵机
  • 杜邦线

材料.png

线路连接


舵机三根电线 黄线->接信号(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();

    
}

关于引脚 可以参考下图

效果

最后修改:2023 年 08 月 04 日
如果觉得我的文章对你有用,请随意赞赏