如何从Arduino上的红外传感器接收高或低信号?

问题描述 投票:-1回答:1

我正在尝试使用我的Arduino Uno的IR传感器,只想要一个HIGH或LOW信号而不解码,使任何IR信号将状态转换为1或0.还有一个运动传感器,但该代码已被删除。

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;
    }
  }
}
arduino arduino-uno arduino-ide
1个回答
0
投票

您是否试图说输入无法正常工作?也许在设置循环中尝试INPUT_PULLUP而不是INPUT。

例如:pinMode(inputPin,INPUT_PULLUP);您可以在此处找到有关此原则的信息:https://www.arduino.cc/en/Tutorial/InputPullupSerial

© www.soinside.com 2019 - 2024. All rights reserved.