极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10438|回复: 0

追蹤小車亂跑 = =

[复制链接]
发表于 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;     
    int  PIR1Value=0;
const int PIR3 = A3;     
    int  PIR3Value=0;  

char Aflag=0;


#define  AIB_PIN  4
#define  AIA_PIN  5
#define  BIB_PIN  7
#define  BIA_PIN  6
int sensorValue;
#define  speedvalue1  120
#define  speedvalue2  120



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);

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-4 15:58 , Processed in 0.053647 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表