2017-12-18 12 views
-1

私はArduino UnoでIRセンサーを使用しようとしていますが、IR信号をデコードせずにHIGHまたはLOW信号のみで状態を1または0にする必要があります。モーションセンサーもありますが、 。ArduinoのIRセンサーからHIGHまたはLOW信号を受信するにはどうすればよいですか?

int ledPin = 13; // choose the pin for the LED 
int inputPin = 2; // choose the input pin (for PIR sensor) 
int pirState = LOW; // we start, assuming no motion detected 
int val = 0; // variable for reading the pin status 
int relayPin = 4; //PIN FOR RELAY OPERATION 
int irPin = 7; //IR Sensor pin 
int lightState = 0; 
int irVal = 0; 

void setup() { 
    pinMode(ledPin, OUTPUT); // declare LED as output 
    pinMode(inputPin, INPUT); // declare sensor as input 
    pinMode(relayPin, OUTPUT); 
    pinMode(irPin, INPUT); 
    Serial.begin(9600); 
} 

void loop() { 
    irVal = digitalRead(irPin); 
    if (irVal == HIGH) { 
    lightState = 1; 
    Serial.println("IR received"); 
    while(irVal == HIGH) { 
     irVal = digitalRead(irPin); 
     if(irVal == HIGH) { 
     irVal = LOW; 
     } else { 
     irVal = HIGH; 
    } 
    } 
} 
+2

問題は何ですか? –

+0

どのタイプのIRセンサーを使用していますか? Arduinoの0〜1023の間の0〜5Vの戻り値を持つアナログセンサー。アナログセンサを使用してバイナリをHIGH/LOWにしたい場合は、センサ値をスレッショルドにしてブール値を返す関数が必要です。 – Mepix

答えて

0

入力が正しく機能していないとしますか? INPUTの代わりにINPUT_PULLUPを試してみてください。

例: pinMode(inputPin、INPUT_PULLUP); この原則についての情報は、ここをクリックしてください。 https://www.arduino.cc/en/Tutorial/InputPullupSerial

関連する問題