即使连接了蓝牙也可以通过按钮停止电动机的旋转

时间:2019-09-09 00:54:09

标签: arduino bluetooth arduino-ide

我正在使用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{;}
}
}

我只尝试通过按钮进行控制,但效果很好。按下按钮时,电动机停止运转;按下时,电动机旋转。

1 个答案:

答案 0 :(得分:2)

我发现您的代码存在以下问题

  1. 您将变量Data定义为整数,但是将其与字符串'1'进行比较

  2. 在第一种情况下,如果您没有在旋转电机之前检查按钮状态,请进行

    if(Data == 1 && buttonState == 0)

否则,当buttonState = 1时,两个条件都将执行,这会间歇性地启动和停止电动机。