機能:遅延の後にハイからローにArduinoの状態を切り替えることができない
アルドゥイーノ以下を使用します 1 IRセンサ 2. LEDライト 3. MotorFan
4リレーしたがって、近接センサが検出されたため、ユーザはIRセンサに近づくと '1'のシリアルプリントを出力します。これにより、LEDとモータファンの状態がLOWからHIGHに切り替わります。しかし、5秒後、motorfanの状態はHIGHからLOWに切り替わりますが、LEDの状態はHIGHのままで、serialPrintが '1'である限りHIGHのままです。
しかし、ユーザーがIRセンサーの近くを離れると、10秒後にLED状態がHIGHからLOWに切り替わります。私が行っている
コード:
const int signalPin = 1; //wire pin to analog for IR Sensor
//Motor-Fan Relay
byte FanRelay = 4;
byte LightRelay = 6;
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 MotorFanOff = 5000;
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);
if(distance < 30 && distance > 0)
{
Timer = millis();
// Write a pin of HIGH
Serial.println("1");
//Set motor-fan to operate
digitalWrite (FanRelay, HIGH);
digitalWrite (LightRelay, HIGH);
//After a delay of 5s, MotorFan will toggle to LOW
//Toggle MotorFan to LOW after 5s
if ((millis()-Timer)>MotorFanOff){
digitalWrite (FanRelay, LOW);
}
}
else
{
Serial.println("0");
//Check if Timer is longer than 10s
if ((millis()-Timer)>Interval){
digitalWrite (LightRelay, LOW);
digitalWrite (FanRelay, LOW);
}
}
delay(1000);
}
問題:この時点で
、テストされ、両方の状態を私がやっていること
のserialPrintが '1'のとき、LEDとmotorfanはLOWからHIGHに切り替わりますIRセンサ。しかし、私が直面している主な問題は、MOTORFANの状態が5秒後にHIGHからLOWに切り替わらないことです。ただし、両方の状態は、serialPrintが '0'のときのみLOWに切り替わります。
私は間違っていますか? pls help.thanks。
高いピン番号?あなたはarduinoのデジタルピンを参照していますか?リレーから2本のピン番号が使用されていて、それは問題ではありません – Luke
私のマイクボードでは素早くチェックしましたが、ボードには必ずしも対応していないかもしれませんが、ここではピン0と1がシリアル通信に使用されます。あなたは、signalPinはピン1を使用していると書いています。これは確かにシリアルピンの1つです。それらを別のピンに切り替えると正常に動作するはずです(コードが正しい場合は、まだ確認していません)。 – PKG
オハイオ州、しかし私はアナログPIN 1を使って読んでいます。それも重要ですか? – Luke