基于arduino的红外测速

基于arduinouno的红外测速

#include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//使用lcd1602作为显示屏
#include <IRremote.h>
int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;//接收红外信号,使用IRremote库
int a = 1, b, c, d, x=1;
void setup()
{ pinMode(17, OUTPUT);
  lcd.begin(16, 2);
  lcd.print("The Speed is");
  lcd.setCursor(12, 1);
  lcd.print("km/h");//输出到显示屏
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {

    irrecv.resume(); // Receive the next value
    switch (results.value)//对接受到的红外编码进行判断
    { case 0x9716BE3F:
              if(x==1){
                digitalWrite(17, HIGH);
       delay(50);
       digitalWrite(17, LOW);
           Serial.println(results.value, HEX);
       }
        b = millis();
        x = 0; 
        break;
        case 0xFF30CF:
              if(x==1){ 
                digitalWrite(17, HIGH);
        delay(50);
        digitalWrite(17, LOW);
        }
        b = millis();
        x = 0; 
        break;
      case 0xE318261B:
               if(x==1){ 
                digitalWrite(17, HIGH);
        delay(50);
        digitalWrite(17, LOW);
        }
        b = millis();
       x = 0;     
        break;
      case 0x6182021B:
//               if(x==0) {digitalWrite(17, HIGH);
//        delay(50);
//        digitalWrite(17, LOW);}
        c = millis() - b;
        d = millis();
        //        Serial.println(c);
        //        Serial.println(b);
        //        Serial.println(d);
        lcd.setCursor(0, 1);
        lcd.print(8000.0 / c * 3.6);     

        if (x == 1)
        { lcd.setCursor(0, 1);
          lcd.print("WRONG   ");
        }
        x = 1;
        break;
      case 0xEE886D7F:
//               if(x==0) {digitalWrite(17, HIGH);
//        delay(50);
//        digitalWrite(17, LOW);}
        c = millis() - b;
        d = millis();
        //        Serial.println(c);
        //        Serial.println(b);
        //        Serial.println(d);
        lcd.setCursor(0, 1);
        lcd.print(8000.0 / c * 3.6); 
//        delay(50);  
//        digitalWrite(17, HIGH);
//        delay(50);
//        digitalWrite(17, LOW);
        if (x == 1)
        { lcd.setCursor(0, 1);
          lcd.print("WRONG   ");
        }
        x = 1;
        break;
        break;
      case 0xFF7A85:
//               if(x==0) {digitalWrite(17, HIGH);
//        delay(50);
//        digitalWrite(17, LOW);}
        c = millis() - b;
        d = millis();
        //        Serial.println(c);
        //        Serial.println(b);
        //        Serial.println(d);
        lcd.setCursor(0, 1);
        lcd.print(8000.0 / c * 3.6); 
//        delay(50);  
//        digitalWrite(17, HIGH);
//        delay(50);
//        digitalWrite(17, LOW);
        if (x == 1)
        { lcd.setCursor(0, 1);
          lcd.print("WRONG   ");
        }
        x = 1;
        break;
    }
    //    }
    //    if (a == 0)
    //    { switch (results.value)
    //      { case 0x9716BE3F:
    //          digitalWrite(13, LOW); a = 1;
    //          break;
    //      }
    //    }
  }
}
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值