arduino - 在 Arduino Mega 上使用蓝牙触发继电器时出现问题
问题描述
我打算做一个蓝牙控制的继电器。但我一直在用我的蓝牙条目触发继电器时遇到问题。我在手机上写入的数据显示在串行监视器中,但我无法关闭或打开继电器。我使用的是单通道继电器模块和 HC -06 蓝牙模块。有人可以告诉我问题是什么吗?这真让我抓狂。我的蓝牙模块分别连接到 TX 和 RX,我的继电器连接到我的 arduino mega 的引脚 13。
Thank You in advance!
#include <SoftwareSerial.h>
SoftwareSerial bt(1,0);
int RelayStateOn =0;
void setup() {
bt.begin(9600);
pinMode(13,OUTPUT);
}
char val=bt.read();
void loop() {
if(bt.available()) {
bt.println(val);
}
if(val==1) {
digitalWrite(13,HIGH);
}
else if(val==0) {
digitalWrite(13,LOW);
}
}
解决方案
首先,您无需在任何地方调用从循环中的 bt 读取。您在全局范围内调用 bt.read() ,因此 val 获取在任何内容准备好读取之前读取的值。所以它很可能得到-1。
在调用 print 之前,您还会调用avaialable,这意味着您不了解可用的用途。它告诉是否有更多可供阅读的内容。因此,这应该在您要添加的循环中的行周围,该行从 bt 读取,而不是打印到它的行。
首先,在您拥有 bt.println(val) 的地方,将其更改为 val = bt.read()。