Arduino。通过蓝牙覆盖光传感器(LDR)

时间:2017-08-23 10:30:12

标签: bluetooth arduino sensor light

这是我的电路。 enter image description here 我有一个光敏电阻,在黑暗时会亮起来。我也连接了一个工作的蓝牙模块。

const int ledPin = 13;
const int ldrPin = A0;

void setup() {
    Serial.begin(9600);

    pinMode(ledPin, OUTPUT);
    pinMode(ldrPin, INPUT);
}

void loop() {
    int ldrStatus = analogRead(ldrPin);

    if(ldrStatus <= 300) {
        digitalWrite(ledPin, HIGH);
        Serial.println("LDR is DARK, LED is ON");
    }
    else {
        digitalWrite(ledPin, LOW);
        Serial.println("---------------");
    }
}

我的目标是让光敏电阻自动工作(就像它已经做的那样)+使用蓝牙应用程序在我决定使用电阻器(覆盖其功能)时打开/关闭LED,所以当它处于黑暗和光线时在,但你想关掉它,只需使用&#34; OFF&#34;来自应用程序的按钮。我正在使用&#34; Arduino蓝牙&#34;来自Circuit Magic的应用程序,它有2个按钮开/关用于LED。我应该写什么代码的问题。所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您必须阅读串口中收到的字符。

您可以使用基本代码HERE并根据您的需要进行调整:

void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    inputString += inChar;
    // if the incoming character is a newline, set a flag so the main loop can
    // do something about it:
    if (inChar == '\n') {
      stringComplete = true;

      // Here you process the received character and turn the led ON or OFF accordingly

      if (strcmp(inputString, "OFF"))
         digitalWrite(ledPin, LOW);
      else if (strcmp(inputString, "ON"))
         digitalWrite(ledPin, HIGH);
    }
  }
}

您需要在代码中初始化一些变量才能使其正常工作。

同样在您的代码中,您应该进行一些反弹保护,否则如果LDR值快速变化,您的LED将立即闪烁。通常你想要有一些惯性来阻止这种情况。