我有一个项目将超声波传感器连接到Arduino Uno,Arduino代码从传感器获取读数并将它们发送到整个以太网屏蔽的远程服务器,
现在我面临的问题是我需要使用6个超声波传感器,但是当Arduino从4个以上传感器读取数据时,Arduino无法正常工作,但如果我从中读取了两个其他传感器针对以前的一个传感器定位的引脚工作正常,或者即使我为这两个传感器分配了一个默认值,它工作正常,
我面临的问题与以下引脚有关: 10,11,12,13 以太网屏蔽正在使用它们但是我如何克服这个问题并运行所有六个传感器?
您可以在下面找到部分代码:
#include <Ethernet.h>
#include <SPI.h>
#define ECHOPIN1A1 3 // Pin to receive echo pulse
#define TRIGPIN1A1 2 // Pin to send trigger pulse
#define ECHOPIN1A2 5 // Pin to receive echo pulse
#define TRIGPIN1A2 4 // Pin to send trigger pulse
#define ECHOPIN1A3 7 // Pin to receive echo pulse
#define TRIGPIN1A3 6 // Pin to send trigger pulse
#define ECHOPIN1B1 9 // Pin to receive echo pulse
#define TRIGPIN1B1 8 // Pin to send trigger pulse
#define ECHOPIN1B2 5 // Pin to receive echo pulse
#define TRIGPIN1B2 4 // Pin to send trigger pulse
#define ECHOPIN1B3 3 // Pin to receive echo pulse
#define TRIGPIN1B3 2 // Pin to send trigger pulse
答案 0 :(得分:1)
您可以使用具有更多GPIO引脚的电路板,例如Arduino MEGA。或者您可以将触发引脚连接在一起,并且只使用一个Arduino引脚来驱动它们。
修改强> 请务必阅读下面的Tansir评论并试验看哪些有效,哪些无效。使用可用引脚数量,您需要在每个引脚触发3个超声波传感器(2个引脚用于触发+ 6个引脚用于读取回波)。
还有另一种解决方案:您可以使用多路复用器/多路分解器来驱动多达8个带5个引脚的传感器(2个数据引脚和3个地址引脚)。然而,这会增加硬件的复杂性。