esp8266+blinker+sg90实现接入米家物联关灯的Arduino代码

/*Blinker Arduino支持函数参考:https://diandeng.tech/doc/arduino-support#blinkerlog
Blinker小爱同学接口函数:https://www.diandeng.tech/doc/xiaoai*/
#define BLINKER_PRINT Serial
#define BLINKER_MIOT_LIGHT
#define BLINKER_WIFI

#include <Blinker.h>
#include <Servo.h>

char auth[] = "你的key";//电灯科技的key
char ssid[] = "你家wifi名称";//wifi名称 必须2.4ghz频段
char pswd[] = "你家wifi密码";//wifi密码

// 新建组件对象
BlinkerButton Button1("btn-max");//输入开关组键名
BlinkerButton Button2("btn-min");//输入开关组键名
BlinkerSlider Slider3("hk-1");   //引号内填滑块组件键名
//BlinkerNumber Number1("num-abc");
Servo myservo;//定义舵机对象
//int counter = 0;

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();//发送手机振动指令
    delay(1000);//延迟1秒
    myservo.write(0);//把舵机设置为0度
}
 
void button2_callback(const String & state) {   //最小值按钮功能
    BLINKER_LOG("get button state: ", servo_min);
    myservo.write(servo_min);
    Blinker.vibrate(); 
    delay(1000);//延迟1秒
    myservo.write(0);//把舵机设置为0度
}
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);//舵机执行servo_max按钮操作
    Blinker.vibrate();//发送手机振动指令 
    delay(2000);//延迟2秒
    myservo.write(0);//把舵机设置为0度
 }
  else if(state==BLINKER_CMD_OFF){//语音接收到的是关灯就执行的动作
    BLINKER_LOG("get button state: ", servo_min);//反馈状态
    myservo.write(servo_min);//舵机执行servo_min按钮操作
    Blinker.vibrate();//发送手机振动指令
    delay(2000);//延迟2秒
    myservo.write(0);//把舵机设置为0度*/
 }
}

// 如果未绑定的组件被触发,则会执行其中内容
//void dataRead(const String & data)
//{
//    BLINKER_LOG("Blinker readString: ", data);
//    counter++;
//    Number1.print(counter);
//}


/*串口蓝牙模块:
Blinker.begin() 将使用默认设置配置 Serial(默认使用软串口)

Blinker.begin();// 默认设置: 数字IO 2(RX) 3(TX), 波特率 9600 bps
Blinker.begin(4, 5);// 设置数字IO 4(RX) 5(TX), 默认波特率 9600 bps
Blinker.begin(4, 5, 115200);// 设置数字IO 4(RX) 5(TX) 及波特率 115200 bps

若配置时Blinker.begin(0, 1);
0 1对应硬串口的RX TX, 库会默认使用硬串口与BLE模块进行通信
Blinker.begin(15, 14);//Arduino MEGA中如15, 14对应硬串口Serial3

注意使用软串口时:
使用Arduino MEGA时以下IO可以设置为RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
使用Arduino Leonardo时以下IO可以设置为RX: 8, 9, 10, 11, 14, 15, 16
*/
void setup() {
    
    Serial.begin(115200);// 初始化串口
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);//连接wifi以及电灯科技
    Button1.attach(button1_callback);// 当收到指令时会调用该回调函数 舵机信号线接口
    Button2.attach(button2_callback);
    Slider3.attach(slider3_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
    myservo.attach(2); //注册按键的回调函数, 当收到指令时会调用该回调函数
    myservo.write(10);//把舵机初始角度设为10度
    servo_max=180;//旋转的度数
    servo_min=0;
    time_num=500;
   
}

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

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,ESP8266是一款具有Wi-Fi功能的微控制器模块,它可以与Arduino UNO R3进行通信和控制。而光照传感器用于检测环境的光照强度。下面我将用华而不实的例子来说明如何使用ESP8266和Arduino UNO R3进行光照传感器的闪烁灯实验。 首先,我们需要连接ESP8266和Arduino UNO R3。将ESP8266模块的VCC引脚连接到Arduino UNO R3的5V引脚,将GND引脚连接到Arduino UNO R3的GND引脚,将ESP8266的RX引脚连接到Arduino UNO R3的TX引脚,将ESP8266的TX引脚连接到Arduino UNO R3的RX引脚。 接下来,我们需要连接光照传感器。将光照传感器的VCC引脚连接到Arduino UNO R3的5V引脚,将GND引脚连接到Arduino UNO R3的GND引脚,将光照传感器的信号引脚连接到Arduino UNO R3的A0引脚。 接下来,我们需要编写Arduino代码。首先,导入ESP8266WiFi和SoftwareSerial库。然后,在setup函数中初始化串口通信和Wi-Fi连接。在loop函数中,读取光照传感器的数值,并根据数值控制ESP8266的GPIO引脚输出高低电平,以实现闪烁灯效果。 最后,将代码上传到Arduino UNO R3中,并将ESP8266连接到Wi-Fi网络。当光照传感器检测到较强的光照时,闪烁灯会快速闪烁;当光照传感器检测到较弱的光照时,闪烁灯会慢速闪烁。 总结来说,使用ESP8266、Arduino UNO R3和光照传感器可以实现一个具有可调节闪烁频率的光照传感器闪烁灯实验。这个实验可以用于对光照强度的实时监测和视觉提醒。相信这个简单的实验可以帮助大家更好地理解ESP8266和Arduino UNO R3的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值