炽幻恶魔 2022-01-14 16:01 采纳率: 100%
浏览 132
已结题

请教一下esp32的引脚电平输入输出不正常是为什么?

代码如下:

void setup()
{
  pinMode(2,OUTPUT);/*将2号针脚设为输出模式*/
  pinMode(34,INPUT);/*将34号针脚设置为输入模式*/
  pinMode(33,OUTPUT);/*将33号针脚设为输出模式*/
}
void loop()/*无限循环*/
{
  if(digitalRead(34))/*如果34号针脚是高电平则执行内含代码*/
  {
    delay(1000);/*延时1000ms*/
    digitalWrite(2,1);/*2号针脚拉高电平,点亮led灯*/
    digitalWrite(33,0);/*拉高33号引脚电平以导通继电器电路*/
    while(digitalRead(34));/*34号针脚高电平则无限循环*/
    digitalWrite(2,0);/*2号针脚拉低电平,关闭led灯*/
    digitalWrite(33,0);/*拉低33号引脚电平以断开继电器电路*/
  }
}

原本是想把esp32的34号针脚接电话线,33号针脚接继电器,门铃按响后电话线通电拉高34号引脚电平,延时一秒,2号针脚的led亮,同时继电器导通开门,门铃断电后led熄灭,同时继电器恢复断开状态,可是代码写入后,34号针脚插了个杜邦线,什么都没接,led灯就开始一秒闪一下,哪怕什么都不插,用手指按上去,它也会一秒闪一下,但凡金属物品接触到34号引脚,它都会一秒闪一下,有时候还不定时闪一下,这是为什么?另外33号针脚应该和2号针脚的led灯同步高低电平变化,但是实际上不管led亮不亮、34号针脚有没有输入高电平,33号针脚的继电器都没有反应,这又是为什么?求指导。

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2022-01-14 16:23
    关注

    你 13行和16行代码一样,都是 33输出 0 ,所以 33 继电器没反应。
    34 脚悬空,状态不稳定,手持金属物体触碰该脚,人体静电几周围220 50Hz交流电场会干扰进来,使 34 脚电平状态不定引起的一系列反应。可以将该脚初始化成上拉或下拉,也可以外接上拉或下拉电阻

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月22日
  • 已采纳回答 1月22日
  • 创建了问题 1月14日

悬赏问题

  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000