全功能Altar小车-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18706|回复: 16

全功能Altar小车

[复制链接]
发表于 2016-12-30 02:25 | 显示全部楼层 |阅读模式
集红外遥控、巡迹、避障、超声波跟随于一体的小车。
当然啦,其实每个功能都是独立的,这里全功能的意思是一次下载程序后,可以用遥控器来选择不同的功能。
不过由于超声波用到的7和8引脚与其它传感器有冲突,所以在选择和不选择超声波功能的时候需要接上或拨下超声波的接线。

下面展示主程序框架,每个功能做成一个类于另外的文件中,有需要新加功能就新写一个类就可以啦,比较方便扩展新功能。
完整的程序见附件: altar.zip (9.19 KB, 下载次数: 124)
主程序:
[mw_shl_code=cpp,true]
// ----------------------------------------------------------------------------
// altar.ino
//
// Created 2016-11-26
// By seesea <seesea2517#gmail#com>
//
// altar 小车
// ----------------------------------------------------------------------------

#include "CarWithL9110.h"
#include "AvoidCrashController.h"
#include "IRRemoteController.h"
#include "ControllerManager.h"
#include "FollowLineController.h"
#include "FollowController.h"

const uint8_t LEFT_FORWARD_PIN              = 5;
const uint8_t LEFT_BACK_PIN                 = 3;
const uint8_t RIGHT_FORWARD_PIN             = 6;
const uint8_t RIGHT_BACK_PIN                = 9;
const uint8_t IRREMOTE_SENSOR_PIN           = A0;
const uint8_t LEFT_CRASH_SENSOR_PIN         = 11;
const uint8_t RIGHT_CRASH_SENSOR_PIN        = 8;
const uint8_t LEFT_FOLLOWLINE_SENSOR_PIN    = 4;
const uint8_t RIGHT_FOLLOWLINE_SENSOR_PIN   = 2;
const uint8_t SERVO_PIN                     = 10;
const uint8_t SR04_TRIGGER_PIN              = 7;
const uint8_t SR04_ECHO_PIN                 = 8;

CarWithL9110 altar(LEFT_FORWARD_PIN, LEFT_BACK_PIN, RIGHT_FORWARD_PIN, RIGHT_BACK_PIN);

ControllerManager controllerMgr;

IRRemoteController   irRemoteController(&altar, &controllerMgr, IRREMOTE_SENSOR_PIN);
AvoidCrashController avoidCrashController(&altar, LEFT_CRASH_SENSOR_PIN, RIGHT_CRASH_SENSOR_PIN);
FollowLineController followLineController(&altar, LEFT_FOLLOWLINE_SENSOR_PIN, RIGHT_FOLLOWLINE_SENSOR_PIN);
FollowController     followController(&altar, SERVO_PIN, SR04_TRIGGER_PIN, SR04_ECHO_PIN);

void setup()
{
    Serial.begin(9600);

    altar.init();
    altar.setSpeed(0);

    avoidCrashController.init();
    irRemoteController.init();
    followLineController.init();
    followController.init();

    controllerMgr.registerController(&irRemoteController, ControllerManager::IRREMOTE, true);
    controllerMgr.registerController(&avoidCrashController, ControllerManager::AVOID_CRASH);
    controllerMgr.registerController(&followLineController, ControllerManager::FOLLOW_LINE);
    controllerMgr.registerController(&followController, ControllerManager::FOLLOW);
}

void loop()
{
    controllerMgr.update();
    delay(20);
}
[/mw_shl_code]

视频演示:


发表于 2016-12-30 07:03 | 显示全部楼层
顶一个。真不错。
发表于 2016-12-30 09:11 | 显示全部楼层
谢谢分享                          
 楼主| 发表于 2016-12-30 12:20 来自手机 | 显示全部楼层
电磁波 发表于 2016-12-30 07:03
顶一个。真不错。

谢谢支持
 楼主| 发表于 2016-12-30 12:21 来自手机 | 显示全部楼层
jackten 发表于 2016-12-30 09:11
谢谢分享

一起学习
发表于 2016-12-30 14:46 | 显示全部楼层
赞赞赞!已收藏
发表于 2016-12-31 08:07 | 显示全部楼层
本帖最后由 byran620 于 2016-12-31 10:20 编辑

師兄,想請教一下,
本人改了一些PIN 位,現在把程序內PIN 位都改了:

const uint8_t LEFT_FORWARD_PIN  = 5;  左電機前
const uint8_t LEFT_BACK_PIN  = 10; 左電機後
const uint8_t RIGHT_FORWARD_PIN = 6; 右電機前
const uint8_t RIGHT_BACK_PIN = 9; 右電機後
const uint8_t IRREMOTE_SENSOR_PIN = A0; 紅外線搖控接收感應器
const uint8_t LEFT_CRASH_SENSOR_PIN = 11; 左 紅外線防碰撞感應器
const uint8_t RIGHT_CRASH_SENSOR_PIN = 8; 右 紅外線防碰撞感應器
const uint8_t LEFT_FOLLOWLINE_SENSOR_PIN = 4; 左 紅外線尋跡感應器
const uint8_t RIGHT_FOLLOWLINE_SENSOR_PIN = 2;紅外線尋跡感應器
const uint8_t SERVO_PIN = 3; 舵機
const uint8_t SR04_TRIGGER_PIN = A5; 超聲波感應器
const uint8_t SR04_ECHO_PIN  = A4; 超聲波感應器


測試時出現以下錯唔信息:

Arduino: 1.7.9 (Windows 7), Board: "Arduino Uno"

In file included from Controller.h:14:0,

                 from AvoidCrashController.h:13,

                 from Own_altar.ino:11:

Sensor.h:15:22: fatal error: IRremote.h: No such file or directory

#include <IRremote.h>

                      ^

compilation terminated.

Error compiling.

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.


請問是否找不到IR remote 的 檔,那應怎樣處理?還是用了否同版本的編程軟件,你是用什麼VERSION 的? 是否都是arduino-1.7.9?


发表于 2017-1-2 23:09 | 显示全部楼层
视频什么鬼
 楼主| 发表于 2017-1-6 21:33 | 显示全部楼层

谬赞谬赞~~
 楼主| 发表于 2017-1-6 21:34 | 显示全部楼层
byran620 发表于 2016-12-31 08:07
師兄,想請教一下,
本人改了一些PIN 位,現在把程序內PIN 位都改了:

你用包管理器安装一下,或者自己下载安装到IDE,或与ino文件放在同一目录,都可以解决这个问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-28 02:12 , Processed in 0.157367 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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