查看: 1902|回复: 5

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

[复制链接]

该用户从未签到

发表于 2020-5-18 23:50 | 显示全部楼层 |阅读模式
我最近在做一个需要用到多个HC-SR04的项目,用Arduino IDE开发NodeMcu,参考的引脚图是下面这个,我已经把上面的所有GPIO口都用完了,但是还差三个GPIO口来实现功能,请问在这个图里面还有引脚口可以充当GPIO口的功能吗?大恩不言谢... nodemcu对应Arduino引脚.png

该用户从未签到

发表于 2020-5-19 09:43 | 显示全部楼层
本帖最后由 qllaoda1 于 2020-5-19 10:56 编辑

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

该用户从未签到

发表于 2020-5-20 22:47 | 显示全部楼层
本帖最后由 howlet 于 2020-5-20 22:49 编辑

ESP32或协议接STM32来扩展了。

该用户从未签到

发表于 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带寄存器, 可以锁存







该用户从未签到

发表于 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个作品,红外避障小车
交作业:第1个作品,红外
交作业:第1个作品,红外避障小车。 经过N次调整优化,终于把红外避障小车“使
【Arduino】168种传感器模块系列实验(112)---GY-521三轴模块
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
Arduino引脚图
Arduino引脚图
Arduino UNO R3 (CH340G)引脚 持续更新中·····
求助,验证结果没有报错,但验证过程中有报:Error while de...
求助,验证结果没有报错,
这是报红的信息 但结果并没有报错
blinker实时数据功能使用方法
blinker实时数据功能使用
自blinker 2.5.8起,点灯将提供实时数据功能。 使用实时数据功能,可以将数据更新频率
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表