ESP8266模块一通电就会自动点亮,如何设置默认为关?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7166|回复: 11

[过期] ESP8266模块一通电就会自动点亮,如何设置默认为关?

[复制链接]
发表于 2020-2-29 18:56 | 显示全部楼层 |阅读模式
本帖最后由 ksbb4920355 于 2020-3-1 09:28 编辑

ESP8266模块一通电就会自动点亮,如何设置默认为关?

我看过好多人改控制灯,你们改好的模块一送电灯会不会亮?还是在操作后才会亮?
假设某天停电了,又来了电,刚好家里又没有人,模块默认送电后把灯点亮,那灯就会一直亮着没人管,浪费电。
难道没人考虑到这个问题吗?

修改代码可以搞定吗?

#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET   //小爱同学

#include <Blinker.h>

char auth[] = "f-4";  //设备key
char ssid[] = "ksbb4920355@qq.com";  //路由器wifi ssid
char pswd[] = "110";  //路由器wifi 密码
BlinkerButton Button1("dianshi");     //定义按钮键名
bool oState = false;
int counter = 0;
void  AliGeniePowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {     //开命令 此处修改为点动模式,适
        digitalWrite(0, LOW);
        Blinker.delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("on");

        BlinkerAliGenie.print();
        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   //小爱同学控制关命令 此处修改为点动模式,适合按钮操作,
        digitalWrite(0,LOW);
        Blinker.delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("off");

        BlinkerAliGenie.print();

        oState = false;
    }
}

void AliGenieQuery(int32_t queryCode)      //小爱同学控制
{
    BLINKER_LOG("AliGenie Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        default :
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
    }
}

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

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);
}

void button1_callback(const String & state)     //点灯app内控制按键触发
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(0,LOW);
    Blinker.delay(200);
    digitalWrite(0, HIGH);
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(0, OUTPUT);              //定义io口为输出
    digitalWrite(0, HIGH);           //定义io默认为高电平

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);

    BlinkerAliGenie.attachPowerState(AliGeniePowerState);
    BlinkerAliGenie.attachQuery(AliGenieQuery);
    Button1.attach(button1_callback);      
}

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


esp8266

esp8266
发表于 2020-2-29 19:43 | 显示全部楼层
直接找到对应的引脚
然后直接改成0
 楼主| 发表于 2020-2-29 20:01 | 显示全部楼层
单片机菜鸟 发表于 2020-2-29 19:43
直接找到对应的引脚
然后直接改成0

能详细点吗?在哪里找?怎么弄?
发表于 2020-2-29 23:33 来自手机 | 显示全部楼层
setup()中把 digitalWrite(0,HIGH);的HIGH改为LOW
发表于 2020-3-1 02:52 | 显示全部楼层
void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(0, OUTPUT);              //定义io口为输出
    digitalWrite(0, HIGH);           //定义io默认为高电平
这么明显楼主看不出来吗??我小白都看懂了。。。
把IO的默认电平改为低电平就不会通电就亮了。
发表于 2020-3-1 03:14 来自手机 | 显示全部楼层
小祥 发表于 2020-3-1 02:52
void setup()
{
    Serial.begin(115200);

我折腾了一晚上,以为8266 01被我搞挂了,又是电压低的问题,外挂电源搞定。0口改低后好像启动不了我试了半天,懒得接ttl看串口信息,0口低电平是写的模式,不知道是不是这个问题。我直接改用2口,然后定义pio低。这样就是pio2低电平出来,O口留着弄个开关.
 楼主| 发表于 2020-3-1 09:34 | 显示全部楼层
Creeper666 发表于 2020-2-29 23:33
setup()中把 digitalWrite(0,HIGH);的HIGH改为LOW

这个方法我之前看别的帖子已经试过了,改后一通电模块继电器会吸合,常亮!控制操作一次就会点动一次!
我这个控制方式只要点动一次就可以了。不是常开,常闭的模式。
 楼主| 发表于 2020-3-1 18:49 | 显示全部楼层
小祥 发表于 2020-3-1 02:52
void setup()
{
    Serial.begin(115200);

你说的是不是和楼上一个方法?
发表于 2020-3-1 21:37 | 显示全部楼层
那你有没有考虑过家里断网怎么开灯?出门把闸断了吧。。。。
发表于 2020-3-1 23:02 | 显示全部楼层
本帖最后由 moso 于 2020-3-1 23:13 编辑

setup()中把 digitalWrite(0,LOW);的LOW改为HIGH,外设接NO和COM口就可以了,代码如下:
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET //天猫精灵
#include <Blinker.h>
char auth[] = "d4219ee01e6f";
char ssid[] = "niuxf";
char pswd[] = "15702683881";
// 新建组件对象
BlinkerButton Button1("btn-abc");//定义按钮数据
bool oState = false;
int Pin = 0;//caiyq52-定义引脚
void AliGeniePowerState(const String & state)
{
  BLINKER_LOG("need set power state",state);
  if(state == BLINKER_CMD_ON){//天猫精灵控制开命令
    digitalWrite(Pin,LOW);
   
    BlinkerAliGenie.powerState("on");
    BlinkerAliGenie.print();
    oState = true;
    }
    else if(state == BLINKER_CMD_OFF){//天猫精灵控制开命令
    digitalWrite(Pin,HIGH);
    BlinkerAliGenie.powerState("off");
    BlinkerAliGenie.print();
    oState = false;
    }
  }
  void AliGenieQuery(int32_t queryCode) //天猫精灵控制
  {
    BLINKER_LOG("AliGenie Query codes:",queryCode);
    switch(queryCode)
    {
      case BLINKER_CMD_QUERY_ALL_NUMBER :
           BLINKER_LOG("AliGenie Query All");
           BlinkerAliGenie.powerState(oState?"on":"off");
           BlinkerAliGenie.print();
           break;
      case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
           BLINKER_LOG("AliGenie Query State");
           BlinkerAliGenie.powerState(oState?"on":"off");
           BlinkerAliGenie.print();
           break;
      default:
           BlinkerAliGenie.powerState(oState ? "on" : "off");
           BlinkerAliGenie.print();
           break;
      }
    }
void dataRead(const String & data) //如果未绑定的组件被触发,执行其中内容
{
  BLINKER_LOG("Blinker readString:",data);
  Blinker.vibrate();
  uint32_t BlinkerTime = millis();
  Blinker.print("MILLIS",BlinkerTime);
  
  
  }


// 按下按键即会执行该函数
void button1_callback(const String & state)
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(Pin, !digitalRead(Pin));
}
// 如果未绑定的组件被触发,则会执行其中内容
//void dataRead(const String & data)
//{
//   BLINKER_LOG("Blinker readString: ", data);
  //  counter++;
//   Number1.print(counter);
//}
void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
   
    // 初始化有LED的IO
    pinMode(Pin, OUTPUT);
    digitalWrite(Pin,HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    BlinkerAliGenie.attachPowerState(AliGeniePowerState);
    BlinkerAliGenie.attachQuery(AliGenieQuery);
    Button1.attach(button1_callback);
}
void loop() {
    Blinker.run();
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 12:38 , Processed in 0.090224 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表