存储先前读取的值直到新脉冲

时间:2017-02-05 05:11:59

标签: arduino arduino-uno

我目前正在使用Arduino Uno进行项目。该项目基于从IR遥控器接收IR信号,然后根据收到的信号执行其他操作。

问题是信号每次都会重置。我想存储从IR Remote接收的值,然后在检测到另一个脉冲时重置它。

这是我的代码:

int brojac = 0;
int pinData = 10;
unsigned long lengthHeader;
unsigned long bit;
int byteValue;
int vrime = 1000 ;
int storeValue = 0;

void setup()
{
 Serial.begin(9600);
 pinMode(pinData, INPUT);

}

void loop() {
 lengthHeader = pulseIn(pinData, LOW);
 if (lengthHeader > 1500)
 {
   for (int i = 1; i <= 32; i++) {
     bit = pulseIn(pinData, HIGH);

     if (i > 16 && i <= 24)
       if (bit > 1000)
         byteValue = byteValue + (1 << (i - 17));
   }
 }
 Serial.print("byteValue = ");
 Serial.println(byteValue);
 if(byteValue == 66){
   digitalWrite(11,HIGH);
 }
 else{
   digitalWrite(11,LOW);
 }
 delay(vrime);
 byteValue = 0;
 delay(250);

}

1 个答案:

答案 0 :(得分:0)

我通过将值存储在变量中直到检测到新变量来获得答案。

int pinData = 10;
int led = 11;
unsigned long lengthHeader;
unsigned long bit;
int byteValue;
int storeValue = 0;
int previousValue = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(pinData, INPUT);
  pinMode(led, LOW);
}

void loop() {
  lengthHeader = pulseIn(pinData, LOW);
  if (lengthHeader > 1500)
  {
    for (int i = 1; i <= 32; i++) {
      bit = pulseIn(pinData, HIGH);

      if (i > 16 && i <= 24)
        if (bit > 1000)
          byteValue = byteValue + (1 << (i - 17));
    }
  }
Serial.print("byteValue = ");
Serial.println(byteValue);

  **storeValue = byteValue;
  if (storeValue != 0){
    previousValue = storeValue;
  }

  Serial.print("Previous value = ");
  Serial.println(previousValue);**
  byteValue = 0;
  delay(500);
}