这是我的电路。 我有一个光敏电阻,在黑暗时会亮起来。我也连接了一个工作的蓝牙模块。
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。我应该写什么代码的问题。所有帮助表示赞赏。
答案 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将立即闪烁。通常你想要有一些惯性来阻止这种情况。