首页 > 解决方案 > 在 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);
  }
} 

标签: arduinobluetootharduino-ide

解决方案


首先,您无需在任何地方调用从循环中的 bt 读取。您在全局范围内调用 bt.read() ,因此 val 获取在任何内容准备好读取之前读取的值。所以它很可能得到-1。

在调用 print 之前,您还会调用avaialable,这意味着您不了解可用的用途。它告诉是否有更多可供阅读的内容。因此,这应该在您要添加的循环中的行周围,该行从 bt 读取,而不是打印到它的行。

首先,在您拥有 bt.println(val) 的地方,将其更改为 val = bt.read()。


推荐阅读