Я пытаюсь включить свет «On» и «Off» с Arduino, используя релейный, фоторезистор и последовательную связь. Проблема возникает, когда я пытаюсь выключить свет, когда фоторезистор получает низкое значение, и получил инструкцию через последовательную связь, чтобы предотвратить включение оператора «IF», просто не работает свет горит.Управление светом с фоторезистором и последовательной связью - Arduino
Я использую инструкцию 4 «IF» для управления светом: автоматический свет с использованием фоторезистора и последовательного значения, возобновленного в «ВКЛ/ВЫКЛ», включите свет, используя серийное значение «h», выключите свет, используя последовательный значение «l» и другое серийное значение для управления оператором автоматического освещения с помощью «a» для управления первым оператором.
Как я могу использовать значение для управления светом на основе датчика и последовательного выхода одновременно. Другими словами, как я могу остановить свет от автоматического включения? Что я делаю неправильно или что я ушел?
Вот мой простой код:
char val;
boolean setAuto=true; // Automatic Light Status Value
int ldr;
int relayPin=4;
void setup() {
pinMode(relayPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
ldr = analogRead(A0); // Read value from Photoresistor
if (Serial.available()) {
val = Serial.read(); // Get serial value
}
if (setAuto == true && ldr < 50) { // Here is the main problem
digitalWrite(relayPin, HIGH);
}
else if (val == 'h') {
digitalWrite(relayPin, HIGH); // Work
}
else if (val == 'l') {
digitalWrite(relayPin, LOW); // Work
}
else if (val == 'a') { // Here is the other part of the problem
setAuto = !setAuto; // Changing value for automatic light
}
}
Ну я пытался что-то подобное раньше, но мне кажется, что есть проблема с последним «еще, если» заявление. Я добавил «Serial.print (« Привет »); в последнем утверждении и отправить «a», но тот, который запускается, является вторым оператором else else. Любая идея об этом конкретном поведении, это сумасшествие, которое вы знаете, это не имеет смысла! – DarkXDroid
Спасибо, мне все равно удалось что-то обойти. Я переместил второе и третье заявление «else if», и это сработало довольно хорошо. Я не знаю, что произошло, поскольку ошибок во время компиляции не было. – DarkXDroid
@DarkXDroid, отладка !! – JackCColeman