機能の後にHIGHからLOWにトグルしないであろう。アルドゥイーノモータファンは、遅延
LED光とmotorFANの状態を切り替えるためのIRセンサを使用してきました。したがって、トリガ距離の条件が満たされると、LEDライトとモータファンの両方の状態がLOWからHIGHに切り替わります。 5秒の遅延後、motorFANの状態はHIGHからLOWに切り替わりますが、トリガー距離の条件が満たされている限り、LEDライトの状態はHIGHのままです。トリガー距離がもはや満たされなくなるとLEDライトがLOWに切り替わります。
問題:トリガー距離条件が満たされる
、LEDライトとmotorFAN状態の両方がLOWからHIGHにトグルします。
しかし、motorFan状態は、5秒の遅延後にHIGHからLOWに切り替わらず、HIGHのままです。
2つ目の問題は、トリガー距離の条件が満たされなくなったときに、LEDライトとmotorFanの両方の状態がHIGHからLOWに切り替わった後です。再び条件が満たされると、LEDライトのみがLOWからHIGHにトグルされますが、モータファンの状態はトグルされずにLOWのままです。
したがって、問題を修正する際の助けを借りて、間違ったことを尋ねる必要があります。おかげさまで
コード:
const int signalPin = 1; //wire pin to analog for IR Sensor
//Motor-Fan connected to arduino pin number
//const int FanPin = 5;
//Motor-Fan Relay
byte FanRelay = 4;
//const int FanRelay = 4;
//Light Relay
byte LightRelay = 6;
//const int LightRelay = 5;
int IRSignal; //variable signal, will hold the analog value read by Arduino
long duration;
int distance;
unsigned long Timer;
unsigned long Interval = 10000; //teh repeat Interval
unsigned long SmellInterval = 10000;
void setup()
{
//Execute only once at startup
//pinMode (FanPin , OUTPUT) ; // Set pinMode for FanPin as OUTPUT, display
pinMode (signalPin, INPUT); //infared sensor line will be an input to the Arduino
pinMode(FanRelay, OUTPUT);
pinMode(LightRelay, OUTPUT);
Serial.begin(9600); // Open serial port to communicate with the Ultrasaonic Sensor
}
void loop()
{
//execute multiple times in a loop
IRSignal = analogRead(signalPin); //arduino reads the value from the infared sensor
distance = 9462/(IRSignal -16.92);
Serial.println(distance);
if(distance < 30 && distance > 0)
{
Timer = millis();
// Write a pin of HIGH
Serial.println("1");
digitalWrite (FanRelay, HIGH);
digitalWrite (LightRelay, HIGH);
if (Timer > SmellInterval){
//digitalWrite (FanPin, LOW);
digitalWrite (FanRelay, LOW);
}
}
else
{
Serial.println("0");
//Check if Timer is longer than 10s
if ((millis()-Timer)>Interval){
//digitalWrite (FanPin, LOW);
//digitalWrite (FanRelay, LOW);
digitalWrite (LightRelay, LOW);
}
}
delay(1000);
}