编译时报错,请大神帮忙:'D2' was not declared in this scope-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2229|回复: 3

编译时报错,请大神帮忙:'D2' was not declared in this scope

[复制链接]
发表于 2020-11-4 17:32 | 显示全部楼层 |阅读模式
报错:note: in expansion of macro 'PM'exit status 1
'D2' was not declared in this scope


完整源码:
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET //天猫精灵

#include <Blinker.h>

char auth[] = "*********";
char ssid[] = "*********";
char pswd[] = "*********";
BlinkerButton Button1("btn-abc");     //定义按钮数据键值
BlinkerText Text1("TextKey");        //文件显示键值

bool oState = false;

bool power;
bool lastpower;

int counter = 0;
String pState;  //存储检测到的电源状态

#define PW D2    //继电器控制管脚
#define PM D5    //电源检测管脚


void aligeniePowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
        digitalWrite(PW, HIGH);
        delay(200);
        digitalWrite(PW, LOW);
        Serial.println("开了");

        BlinkerAliGenie.powerState("on");
        BlinkerAliGenie.print();

        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(PW,HIGH);
        delay(200);
        digitalWrite(PW, LOW);
        Serial.println("关了");

        BlinkerAliGenie.powerState("off");
        BlinkerAliGenie.print();

        oState = false;
    }
}


void aligenieQuery(int32_t queryCode)
{
    BLINKER_LOG("AliGenie Query codes: ", queryCode);

            if(digitalRead(PM) == true){
            BlinkerAliGenie.powerState("on");
            BlinkerAliGenie.powerState("on");
          }else {
            BlinkerAliGenie.powerState("off");
            BlinkerAliGenie.powerState("off");
                }
            BlinkerAliGenie.print();

}

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(PW,HIGH);
    delay(200);
    digitalWrite(PW, LOW);
}

void heartbeat(){
    if(digitalRead(PM) == true){
        pState="开机";
      }else {
        pState="关机";
            }

     Text1.print(pState,"电源状态反馈");
     Serial.println("心跳反馈");
}

void setup()
{
    pinMode(PM,INPUT);
    Serial.begin(115200);
    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif

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

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

    BlinkerAliGenie.attachPowerState(aligeniePowerState);
    BlinkerAliGenie.attachQuery(aligenieQuery);
    Button1.attach(button1_callback);   
    Blinker.attachHeartbeat(heartbeat);   

}

void loop()
{
    Blinker.run();
    power = digitalRead(PM);
    if (power != lastpower){
            if(digitalRead(PM) == true){
              pState="开机";
            }else {
              pState="关机";
                  }
           Text1.print(pState,"电源状态反馈");
           Serial.println("反馈");
    }
    lastpower = power;

}



发表于 2020-11-4 19:47 | 显示全部楼层
2052957526 发表于 2020-11-4 17:47
板子用的esp-01S,这个怎写才是对的

esp-01 就IO0 和 IO2 两个脚

#define PW 2    //继电器控制管脚
#define PM 0    //电源检测管脚
发表于 2020-11-4 17:39 | 显示全部楼层
如果是D2  这种写法 开发板选NodeMCUesp12E这个 ,如果还是不行D2 换 4  D5 换14        io脚是一样的
 楼主| 发表于 2020-11-4 17:47 | 显示全部楼层
王尼玛1 发表于 2020-11-4 17:39
如果是D2  这种写法 开发板选NodeMCUesp12E这个 ,如果还是不行D2 换 4  D5 换14        io脚是一样的
...

板子用的esp-01S,这个怎写才是对的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 10:36 , Processed in 0.109794 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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