分享

好人的arduino循迹小车

 quasiceo 2015-08-12
还是利用之前的 BaseCar(好人的 arduino 库: 智能小车行走部分)和两个红外线距离传感器,再来做一个循迹小车。

硬件列表:
  1. Arduino Diecimila / ATmega168
  2. Arduino Sensor Shield V5.0 传感器扩展板
  3. 双 H 桥直流电机驱动板
  4. 红外线距离传感器(博光 E18-D80NK)
  5. DC-DC
  6. 11.1V 1300mAH 聚合物锂电池
  7. 乐高积木
先来看照片:

好人的 <wbr>arduino <wbr>循迹小车

好人的 <wbr>arduino <wbr>循迹小车

再来看一个视频:

http://v.youku.com/v_show/id_XMjUyMjk0MTE2.html

最后看源码:

==================================================================

#include <BaseCar.h>

// log
const boolean VERBOSE = true;
const int SERIAL_SPEED = 9600;

// for Car
const int MOTO1_PIN = 10;
const int MOTO2_PIN = 11;
const int I11_PIN = 6;
const int I12_PIN = 7;
const int I21_PIN = 8;
const int I22_PIN = 9;

// for Trace Sensor
const int LEFT_PIN = 3;
const int RIGHT_PIN = 4;

// speed
const int SPEED_VAL = 150;

// delay
const int DELAY_TIME = 300;

// car control
BaseCar car(MOTO1_PIN, MOTO2_PIN, I11_PIN, I12_PIN, I21_PIN, I22_PIN);

const int adj = -19;

void setup() {
  pinMode(LEFT_PIN, INPUT);
  pinMode(RIGHT_PIN, INPUT);
  if (VERBOSE) {
    Serial.begin(SERIAL_SPEED);
  }
}

void loop() {
  int left_flag = digitalRead(LEFT_PIN);
  int right_flag = digitalRead(RIGHT_PIN);
  if (VERBOSE) {
    Serial.print("left=");
    Serial.print(left_flag);
    Serial.print(", right=");
    Serial.println(right_flag);
  }
  if ((left_flag == LOW) && (right_flag == LOW)) {
    // on the way
    car.forward(SPEED_VAL, adj);
  } else if ((left_flag == HIGH) && (right_flag == HIGH)) {
    // no way, stop
    car.standBy();
  } else if (left_flag == HIGH) {
    // turn left
    car.rotateLeft(SPEED_VAL, adj);
  } else if (right_flag == HIGH) {
    // turn right
    car.rotateRight(SPEED_VAL, adj);
  }
}




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约