day-2 遥感小车 arduino

#include<IRremote.h>
IRrecv irrecv(A5);
decode_results results;
int pin1 = 8;
int pin2 = 7;
int pwm1 = 6;
int pin3 = 2;
int pin4 = 4;
int pwm2 = 5;
int button =A0;

int Sensorl_2 = A3;//红外
int Sensorr_2 = A1;
int Statel_2; //红外
int Stater_2;
void setup() {
  pinMode(pin1,OUTPUT);
  pinMode(pin2,OUTPUT);
  pinMode(pwm1,OUTPUT);
  pinMode(pin3,OUTPUT);
  pinMode(pin4,OUTPUT);
  pinMode(pwm2,OUTPUT);
  pinMode(button,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  pinMode(A4,INPUT);
  pinMode(Sensorl_2,INPUT);
  pinMode(Sensorr_2,INPUT);
  irrecv.enableIRIn();
  Serial.begin(9600);
}
void button_scan(){
  while(digitalRead(button));
  while(!digitalRead(button)){
    delay(10);
    if(!digitalRead(button)){
      delay(100);
      while(digitalRead(button));
    }
  }
}
void stop(){
  digitalWrite(pin1,LOW);
  digitalWrite(pin2,LOW);
  digitalWrite(pin3,LOW);
  digitalWrite(pin4,LOW);
  analogWrite(pwm1,0);
  analogWrite(pwm2,0);
  //delay(time*100);
}
void go_ahead(int speed=50){
  digitalWrite(pin1,HIGH);
  digitalWrite(pin2,LOW);
  digitalWrite(pin3,HIGH);
  digitalWrite(pin4,LOW);
  analogWrite(pwm1,speed);
  analogWrite(pwm2,speed);
  //delay(time*100);
}
void back(int speed=50){
  digitalWrite(pin1,LOW);
  digitalWrite(pin2,HIGH);
  digitalWrite(pin3,LOW);
  digitalWrite(pin4,HIGH);
  analogWrite(pwm1,speed);
  analogWrite(pwm2,speed);
  //delay(time*100);
 }
void turnl(int speed=50){
  digitalWrite(pin1,LOW);
  digitalWrite(pin2,LOW);
  digitalWrite(pin3,HIGH);
  digitalWrite(pin4,LOW);
  analogWrite(pwm1,speed);
  //analogWrite(pwm2,0);
  //delay(time*100);
}
void turnr(int speed=50){
  digitalWrite(pin1,HIGH);
  digitalWrite(pin2,LOW);
  digitalWrite(pin3,LOW);
  digitalWrite(pin4,LOW);
  //analogWrite(pwm1,0);
  analogWrite(pwm2,speed);
  //delay(time*100);
}
void ydturnl(int speed=50){
  digitalWrite(pin1,LOW);
  digitalWrite(pin2,HIGH);
  digitalWrite(pin3,HIGH);
  digitalWrite(pin4,LOW);
  analogWrite(pwm1,speed);
  analogWrite(pwm2,speed);
  //delay(time*100);
}
void ydturnr(int speed=50){
  digitalWrite(pin1,HIGH);
  digitalWrite(pin2,LOW);
  digitalWrite(pin3,LOW);
  digitalWrite(pin4,HIGH);
  analogWrite(pwm1,speed);
  analogWrite(pwm2,speed);
  //delay(time*100);
}
void trace(){
  int SM_1 = digitalRead(A1);
  int SM_2 = digitalRead(A3);
  int SL = digitalRead(A2);
  int SR = digitalRead(A4);
       if (SL == HIGH && SR==HIGH ){
        delay(1);
        go_ahead();  
       }
       else {
        if (SL==LOW &&SR==LOW) //超级直走状态
       {
        delay(1);
        go_ahead(120);
       } 
         else if ( (SL == LOW) && SR == HIGH)//左黑右白,左转   || SM_1==LOW
        {
          if(SM_1==LOW && SM_2==LOW) //左直角
          {
              delay(1);
              ydturnl(120);
          }
          else if( ( SM_1==LOW) || SM_2==LOW) //左锐角  SL == LOW ||
          {
            delay(1);
            turnl(70);
          }
          else{
            delay(1);
            turnl();
          }
        }
         else if ((SR == LOW) && SL == HIGH) // 左白右黑, 右转 ||SM_2==LOW
        {
          if(SM_2==LOW && SM_1==LOW) 
          { 
            delay(1);
            ydturnr(120); 
          }
          else if((SM_2==LOW) || SM_1==LOW) //右锐角 SR == LOW||
          {
            delay(1);
            turnr(70);
          }
          else{
          delay(1); 
          turnr();
          }
        }
         else // 都是白色, 停止
        {    
          stop();
        }}}

void loop() {
    if(digitalRead(button)==0){
     while(1){
     if(irrecv.decode(&results)){
      long a = results.value;
//      if(a==0xFF00FF) //开关
//      {
//        Serial.println("the system has began");
      if(a==0xFF807F) {
        go_ahead();
        Serial.print(a, HEX);
        Serial.println("  go_ahead"); }
      else if(a==0xFF20DF) {
        turnl(); 
        Serial.print(a, HEX);
        Serial.println("turnl"); }
      else if(a==0xFF00FF) {
        stop();
        Serial.print(a, HEX);
        Serial.println("stop"); }
      else if(a==0xFF609F) {
        turnr(); 
        Serial.print(a, HEX);
        Serial.println("turnr"); }
      else if(a==0xFF906F) {
        back(); 
        Serial.print(a, HEX);
        Serial.println("back"); }
      else if(a==0xFF10EF) {
        ydturnl(); 
        Serial.print(a, HEX);
        Serial.println("zuo xuan"); }
      else if(a==0xFF10EF) {
        ydturnr(); 
        Serial.print(a, HEX);
        Serial.println("you xuan"); }
      else if(a==0xFF10EF) {
        ydturnr(); 
        Serial.print(a, HEX);
        Serial.println("you xuan"); }
      else if(a==0xFFA05F) {
        digitalWrite(button,LOW);
        Serial.print(a, HEX); 
        Serial.println("beep"); }
      irrecv.resume();
 }
 delay(100);
  }
 }
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值