lou2382 发表于 2013-4-20 09:43:43

追蹤小車亂跑 = =

本帖最后由 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]
查看完整版本: 追蹤小車亂跑 = =