ESP8266 01S 想在芯片边上接一个按钮同时控制GPIO0-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4322|回复: 9

[已解决] ESP8266 01S 想在芯片边上接一个按钮同时控制GPIO0

[复制链接]
发表于 2020-3-1 15:51 | 显示全部楼层 |阅读模式
ESP8266 01S 我做好了,APP按制了,想在芯片边上接一个按钮同时控制
发表于 2020-3-1 21:43 | 显示全部楼层
一个实体按钮,一头接在GPIO2上,一头接GND
 楼主| 发表于 2020-3-2 09:50 | 显示全部楼层
Creeper666 发表于 2020-3-1 21:43
一个实体按钮,一头接在GPIO2上,一头接GND

你好,那代码怎么写,GPIO2 一通电就是高电平
发表于 2020-3-2 10:27 | 显示全部楼层
本帖最后由 Creeper666 于 2020-3-2 10:29 编辑

在setup中加入
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);

在loop中加入

if(digitalRead(2) == 0) {
digitalWrite(0,!digitalRead(0));
Blinked.delay(50);
}
 楼主| 发表于 2020-3-2 14:51 | 显示全部楼层
Creeper666 发表于 2020-3-2 10:27
在setup中加入
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);

谢谢,不好意思我的按钮自锁的,是按一个常开,再按一下常闭的。没说清楚,不好意思
发表于 2020-3-2 18:33 来自手机 | 显示全部楼层
i85850091 发表于 2020-3-2 14:51
谢谢,不好意思我的按钮自锁的,是按一个常开,再按一下常闭的。没说清楚,不好意思 ...

这样写不可以正常使用吗?
 楼主| 发表于 2020-3-3 11:30 | 显示全部楼层
本帖最后由 i85850091 于 2020-3-3 11:40 编辑
Creeper666 发表于 2020-3-2 18:33
这样写不可以正常使用吗?

这样写是,我按下按钮后,继电器一直在那里跳
if(digitalRead(2) == LOW)                        //GPI02脚上升沿触发
  flag = 1;                                         //GPI02脚上升沿触发
if((digitalRead(2) == HIGH) && (flag == 1))         //GPI02脚上升沿触发
{
  _up = true;  flag = 0;                          
}

if(_up)
{
   _up = false;                                     //GPI02脚上升沿触发
   digitalWrite(GPIO, !digitalRead(GPIO));          //GPI02脚上升沿触发 执行的语名
}


这是我后来写的,这样子后,按下的时候可以了,但是每次要按二下
我又加成
if(digitalRead(2) == LOW)                        //GPI02脚上升沿触发
  flag = 1;                                         //GPI02脚上升沿触发
if((digitalRead(2) == HIGH) && (flag == 1))         //GPI02脚上升沿触发
{
  _up = true;  flag = 0;                          
}

if(_up)
{
   _up = false;                                     //GPI02脚上升沿触发
   digitalWrite(GPIO, !digitalRead(GPIO));          //GPI02脚上升沿触发 执行的语名
}





   else if(digitalRead(2) == HIGH)                       //GPI02脚下降沿触发
  flag = 1;                                         //GPI02脚下降沿触发
if((digitalRead(2) == LOW) && (flag == 1))         //GPI02脚下降沿触发
{
  _up = true;  flag = 0;                          
}

if(_up)
{
   _up = false;                                     //GPI02脚下降沿触发
   digitalWrite(GPIO, !digitalRead(GPIO));          //GPI02脚下降沿触发 执行的语名
}

我这个程序分开来可以完成单独的上升沿触发和下降沿触发了

这里IF在多,我不知道怎么  IF   
            ELSE IF


我想要的是 当上升沿时  触发一个动作  
      当下降沿时  触发一个动作
应该就能完成我的功能了
 楼主| 发表于 2020-3-4 09:42 | 显示全部楼层
Creeper666 发表于 2020-3-2 10:27
在setup中加入
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);

你好能帮我解决下吗?
发表于 2020-3-4 20:54 | 显示全部楼层
本帖最后由 Creeper666 于 2020-3-4 20:57 编辑

你写这么复杂的是还想实现什么功能吗?
我这里按你要求再写一个自锁吧。

[mw_shl_code=arduino,true]
代码顶端加入

int sta = 1;

setup加入
pinMode(2, INPUT);
digitalWrite(2,1);

loop 加入
if(digitalRead(2) == 0 || sta == 0){
digitalWrite(0,1);
sta = 1;
Blinker.delay(100);
}
if(digitalRead(2) == 0 || sta == 1){
digitalWrite (1,0);
sta = 0;
Blinker.delay(100);
}[/mw_shl_code]



发表于 2020-12-4 11:16 | 显示全部楼层
Creeper666 发表于 2020-3-4 20:54
你写这么复杂的是还想实现什么功能吗?
我这里按你要求再写一个自锁吧。

物理开关接在GPIO2上了  你还能设置GPIO2的状态吗"digitalWrite(2,1);" 这个明显不可能嘛,如果开关闭合了这时ESP01S上电 芯片直接启动不起来  用这个芯片应该是无法实现这个功能吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 18:23 , Processed in 0.091517 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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