ESP8266按钮控制继电器的问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2102|回复: 6

ESP8266按钮控制继电器的问题

[复制链接]
发表于 2020-7-6 09:56 | 显示全部楼层 |阅读模式
之前测试板载LED一切正常,但是后来换成某一端口高电平输出控制继电器就出问题了 ,代码上传之后手机按钮打开按钮继电器没反应 ,一共有三个开关 ,居然全部都能控制板载LED 。真是奇怪了没有让它亮板载LED,后来用万用表测了一下 D1-D5居然全部都是3.3v,我是直接用数据线连接到电脑上供电的。在网上查了点资料说要把nodeMcu端口改了才能正常使用,我还以为这个板子就和arduino一样的用 ,求大神指点就要怎么去改端口?
  1. BlinkerButton shenggao1("shenggao");   //新建组件对象 按钮升高脚踏板
  2. BlinkerButton jiangdi1("jiangdi");   //新建组件对象 按钮降低脚踏板
  3. BlinkerButton dadeng1("dadeng");   //新建组件对象 按钮大灯

  4. void shenggao1_callback(const String & state)     //注册组件回调函数 按钮
  5. {
  6.   BLINKER_LOG("get button state: ", state);
  7.    
  8.      if(state == "press") {  
  9.         digitalWrite(5,LOW);  
  10.         shenggao1.text("打开");
  11.         shenggao1.print("on");}
  12.             
  13.       else if(state == "pressup") {
  14.         digitalWrite(5,HIGH);  
  15.         shenggao1.text("关闭");
  16.         shenggao1.print("off");   }
  17.           }  

  18. void jiangdi1_callback(const String & state)     //注册组件回调函数 按钮
  19. {
  20.   BLINKER_LOG("get button state: ", state);
  21.    
  22.      if(state == "press") {  
  23.         digitalWrite(2,LOW);  
  24.       }
  25.             
  26.       else if(state == "pressup") {
  27.         digitalWrite(2,HIGH);  
  28.             
  29.           }    }

  30. void dadeng1_callback(const String & state)     //注册组件回调函数 按钮
  31. {
  32.   BLINKER_LOG("get button state: ", state);
  33.    
  34.      if(state == "on") {  
  35.         digitalWrite(3,LOW);  
  36.         dadeng1.text("ON");
  37.         dadeng1.print("on");   }
  38.             
  39.       else if(state == "off") {
  40.         digitalWrite(3,HIGH);  
  41.         dadeng1.text("OFF");
  42.         dadeng1.print("off");        
  43.           }    }


  44. void setup() {

  45.      Serial.begin(115200);      // 初始化串口

  46.      pinMode(5,OUTPUT);
  47.      pinMode(2,OUTPUT);
  48.      pinMode(3,OUTPUT);  // 初始化有LED的IO
  49.      
  50.      digitalWrite(5,LOW);
  51.      digitalWrite(2,LOW);
  52.      digitalWrite(3,LOW);
  53.      Blinker.begin(auth,ssid,pswd);   // 初始化blinkerWiFi连接
  54.    
  55.     shenggao1.attach(shenggao1_callback);     //注册回调函数 按钮
  56.     jiangdi1.attach(jiangdi1_callback);
  57.     dadeng1.attach(dadeng1_callback);
  58. }

  59. void loop() {
  60.   
  61. Blinker.run();

  62. }
复制代码


发表于 2020-7-6 10:46 | 显示全部楼层
由于高电平输出控制继电器的输入电路会拉低pgio2电平导致8266不正常工作,所以需在pgio2端口接一个小于1K的上拉电阻后应该能消除故障。
 楼主| 发表于 2020-7-6 10:47 | 显示全部楼层
lwq1947 发表于 2020-7-6 10:46
由于高电平输出控制继电器的输入电路会拉低pgio2电平导致8266不正常工作,所以需在pgio2端口接一个小于1K的 ...

那我如果不用pgio2这个端口 还会出现这个故障吗?
发表于 2020-7-6 11:38 | 显示全部楼层
Dawn破晓 发表于 2020-7-6 10:47
那我如果不用pgio2这个端口 还会出现这个故障吗?

理论不会       io口跟D口不对应哦   
发表于 2020-7-6 11:39 | 显示全部楼层

2996831-4d36d5dfb8500ec8.jpg
发表于 2020-7-6 15:28 | 显示全部楼层
Dawn破晓 发表于 2020-7-6 10:47
那我如果不用pgio2这个端口 还会出现这个故障吗?

除了gpio0,gpio2,以外其它端口不会出现这个故障的.
 楼主| 发表于 2020-7-6 15:39 | 显示全部楼层
lwq1947 发表于 2020-7-6 15:28
除了gpio0,gpio2,以外其它端口不会出现这个故障的.

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

本版积分规则

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

GMT+8, 2024-11-28 08:25 , Processed in 0.136098 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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