- #define IN1 4
- #define IN2 5
- #define IN3 6
- #define IN4 7
- void forward();
- void back();
- void turnLeft();
- void turnRight();
- void _stop();
- int ledpin=13;
- int i;
- int TrigPin = 8;
- int EchoPin = 9;
- void setup()
- { pinMode(IN1,OUTPUT);
- pinMode(IN2,OUTPUT);
- pinMode(IN3,OUTPUT);
- pinMode(IN4,OUTPUT);
- pinMode(TrigPin, OUTPUT);
- pinMode(EchoPin, INPUT);
- pinMode(ledpin,OUTPUT);
- Serial.begin(9600);
- }
- void loop()
- {
- i= Serial.read();
- digitalWrite(TrigPin, LOW); // 使發出發出超聲波信號接口低電平2μs
- delayMicroseconds(2);
- digitalWrite(TrigPin, HIGH); // 使發出發出超聲波信號接口高電平10μs,這里是至少10μs
- delayMicroseconds(10);
- digitalWrite(TrigPin, LOW); // 保持發出超聲波信號接口低電平
- int distance = pulseIn(EchoPin, HIGH); // 讀出脈沖時間
- distance= distance/58; // 將脈沖時間轉化為距離(單位:厘米)
- Serial.println(distance); //輸出距離值
- delay(50);
- if (distance <=30)
- {//如果距離大于50厘米小燈亮起
- digitalWrite(ledpin,HIGH);
- digitalWrite(IN1,LOW);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,LOW);
- }//如果距離小于50厘米小燈熄滅
- else
- digitalWrite(ledpin,LOW);
- //if(Serial.available())
- //i= Serial.read();
- switch(i)
- { case'1':{turnLeft();break;}
- case'2':{forward();break;}
- case'3':{turnRight();break;}
- case'4':{_stop();break;}
- case'5':{back();break;}
- }
-
- }
- void forward()
- { digitalWrite(IN1,HIGH);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,HIGH);
- digitalWrite(IN4,LOW);
- }
- void back()
- { digitalWrite(IN1,LOW);
- digitalWrite(IN2,HIGH);
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,HIGH);
- }
- void turnLeft()
- { digitalWrite(IN1,LOW);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,HIGH);
- digitalWrite(IN4,LOW);
- }
- void turnRight()
- { digitalWrite(IN1,HIGH);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,LOW);
- }
- void _stop()
- { digitalWrite(IN1,LOW);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,LOW);
- }
-
復制代碼
|