如果NodeMcu上的GPIO引脚不够用怎么办?急!-Arduino中文社区 - Powered by Discuz! Archiver

WW98 发表于 2020-5-18 23:50

如果NodeMcu上的GPIO引脚不够用怎么办?急!

我最近在做一个需要用到多个HC-SR04的项目,用Arduino IDE开发NodeMcu,参考的引脚图是下面这个,我已经把上面的所有GPIO口都用完了,但是还差三个GPIO口来实现功能,请问在这个图里面还有引脚口可以充当GPIO口的功能吗?大恩不言谢...:'(

qllaoda1 发表于 2020-5-19 09:43

本帖最后由 qllaoda1 于 2020-5-19 10:56 编辑

可以考虑换ESP32,代码基本兼容。

howlet 发表于 2020-5-20 22:47

本帖最后由 howlet 于 2020-5-20 22:49 编辑

ESP32或协议接STM32来扩展了。

smmj 发表于 2021-9-8 17:33

74hc138或74HC04

老胖子 发表于 2021-9-18 16:48

本帖最后由 老胖子 于 2021-9-22 21:36 编辑

简单(土豪)方案:
MCP23017 (6元)

i2c 控制 2x8路的电平输出, 通过3个A0~A2的高低平(或跳线), 可以组合8个I2C地址,也就是可以扩展出128个GPIO口加上IIC扩展器TCA9548A(3元)
理论上可以扩展出无限个GPIO,前提是你的I2C速度能跟上

即支持一行指令输出16个电平并锁存,

也可检测16个输入,当有I/O口电平切换,IntA IntB(可使用指令整合成1个)会发生电平变化(开发板发送的变化不会反馈),
将INT连接到开发板输入接口(比如GPIO12)后,通过检测GPIO12电平边沿变化,即可知道MCP23017有I/O口有变化,然后去读取I2C数据,程序即可判断哪个口有电平变化(理论上可以用于PWM的输入)

如果单片机IO输入口不够, 可以将多个MCP23017的Int接入到一个父级MCP23017的I/O口, 即1个父级INT可以检测至少16个子级的INT, 如此级联下去,1个口可以扩展无限个输入口

其它16口的单片机参考
https://www.arduino.cn/thread-31793-1-1.html

PCF8574T (3元)

i2c 控制 8路的电平输出
基本同上


高手(便宜)方案:
74HC138 (默认全输出高电平) 0.6元左右, 需自己焊接
74HC238 (默认全输出低电平)

这是一个3脚 导出 8脚的芯片
通过组合3个脚的高低平, 可以让另外8个中的其中一个脚 输出反相电平(74HC138 输出低, 74HC238 输出高)

具体可以百度搜索: 74HC138/74HC238真值表

比如74HC238 你可能发现, 不是只能控制1个脚吗? 那我想同时让其中2, 或5个都输出为高怎么办?
那就需要 在loop函数里 即一个循环周期内让你想定义的5个输出脚依次输出高即可, 可能需要在每一个输出后加delay 5 ms 保证电流稳定
即通过主单片机的本身的高速Hz脉冲模拟那5个脚都为高的情况, 所以这个一般适用于LED, 数码管的场景


这个不带寄存器,也就是不会锁存, 上面的I2C会锁存, 即只用发送一次指令, I/O持续输出你定义的电平
74HC259 74HC164 74HC595带寄存器, 可以锁存







ws9528 发表于 2021-9-20 07:58

本帖最后由 ws9528 于 2021-10-5 22:28 编辑

我也想知道答案,扩展出来的引脚用各种传感器,有没有啥问题?是不是只能控制继电器?
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.7f882e8dfXSp0k&id=625079444403&_u=52krn7s31e5
这个是我购买的,可以扩展IO口 还没来得急测试。
页: [1]
查看完整版本: 如果NodeMcu上的GPIO引脚不够用怎么办?急!