追蹤小車亂跑 = =
本帖最后由 lou2382 于 2013-4-20 14:32 编辑請問 !
我用2個紅外線開關+1個超音波感測器!
如果再30cm內 開啟紅外線偵測左 或右
但是問題是 上電後亂跑!!
哪邊有問題呢?
#include <Servo.h>
#define TRIGPIN 12
#define ECHOPIN 13
const int PIR1 = A1;
intPIR1Value=0;
const int PIR3 = A3;
intPIR3Value=0;
char Aflag=0;
#defineAIB_PIN4
#defineAIA_PIN5
#defineBIB_PIN7
#defineBIA_PIN6
int sensorValue;
#definespeedvalue1120
#definespeedvalue2120
long ping() {
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
return pulseIn(ECHOPIN, HIGH)/58;
}
void setup() {
//myservo.attach(3);
pinMode(TRIGPIN, OUTPUT);
pinMode(ECHOPIN, INPUT);
pinMode(PIR1, INPUT);
//pinMode(PIR2, INPUT);
pinMode(PIR3, INPUT);
Serial.begin(9600);
//myservo.write(pos);
}
void loop() {
long cm = ping();
PIR1Value = digitalRead(PIR1);
PIR3Value = digitalRead(PIR3);
if (cm < 30 ){
// //0代表接觸 1代表未接觸
if ( PIR1Value == 0 && PIR3Value == 1) {
//左轉
// Serial.println("L");
MOTOR_L();
}
else if ( PIR1Value == 1 && PIR3Value == 0) {
//又轉
// Serial.println("R");
MOTOR_R();
}
else if (cm<10 &&PIR1Value == 0 && PIR3Value == 0){
//後退
//Serial.println("Retreat");
MOTOR_B();
}
else if (cm >20 &&PIR1Value == 1 && PIR3Value == 1){
//前進
// Serial.println("Advance");
MOTOR_A();
}
else
// Serial.println("STOP");
MOTOR_S();
}
//結束loop
delay(200);
}
页:
[1]