1

リレー、フォトレジスタ、およびシリアル通信を使用して、Arduinoでライトを「オン」および「オフ」にしようとしています。フォトレジスタが低い値を受信し、「IF」ステートメントがアクティブになるのを防ぐためにシリアル通信を介して命令を受信したときにライトをオフにしようとすると、問題が発生します。ライトは点灯したままです。

私は光を制御するために4つの「IF」ステートメントを使用しています:「ON / OFF」で再開されたフォトレジスタとシリアル値を使用したオートライト、シリアル値「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
   }
}
4

1 に答える 1