我正在使用Arduino Nano,蓝牙模块HC-05和一个按钮。 我想在接收到来自蓝牙的信号时旋转电动机,并在按下按钮时停止旋转,但是在此,当连接蓝牙并按下按钮时,不应断开蓝牙信号,电动机应停止旋转。 问题是当信号通过蓝牙或串行传输时,电动机旋转,但是当我们按下按钮停止旋转时,电动机没有停止。 下面是我尝试过的。
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(10,6);
const int buttonPin = 5; // the pin that the pushbutton is attached to
const int motorPin = 9;
const int ledPin = LED_BUILTIN; // the pin that the LED is attached to
int buttonState = 0; // current state of the button
int Data;
void setup() {
Serial.begin(9600);
Bluetooth.begin(9600);
Bluetooth.println("Send 1 to open LOCK. Send 0 to close LOCK");
Serial.println("Send 1 to open LOCK. Send 0 to close LOCK");
delay(1000);
Bluetooth.println("Waiting for command...");
Serial.println("Waiting for command...");
pinMode(buttonPin, INPUT);
pinMode(motorPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the pushbutton input pin:
buttonState = digitalRead(buttonPin);
if (Bluetooth.available())
{
Data=Bluetooth.read();
if(Data=='1'){
Serial.println("Motor rotating");
Serial.println(buttonState);
digitalWrite(motorPin, HIGH);
}
if (Data=='1' and buttonState == 1){
Serial.println("Motor stop");
Serial.println(buttonState);
digitalWrite(motorPin, LOW);
digitalWrite(ledPin, HIGH);
}
else{;}
}
}
我只尝试通过按钮进行控制,但效果很好。按下按钮时,电动机停止运转;按下时,电动机旋转。
答案 0 :(得分:2)
我发现您的代码存在以下问题
您将变量Data定义为整数,但是将其与字符串'1'进行比较
在第一种情况下,如果您没有在旋转电机之前检查按钮状态,请进行
if(Data == 1 && buttonState == 0)
否则,当buttonState = 1时,两个条件都将执行,这会间歇性地启动和停止电动机。