一、任务
设计并制作一个能自动往返于起跑线与终点线间的小汽车。允许用玩具汽车改装,但不能用人工遥控(包括有线和无线遥控)。
跑道宽度0.5m,表面贴有白纸,两侧有挡板,挡板与地面垂直,其高度不低于20cm。在跑道的B、C、D、E、F、G各点处画有2cm宽的黑线,各段的长度如图1所示。
实物跑道:9.5米总长
终点处:
二、要求(全部达到)
1.基本要求
(1)车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。
(2)到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。
(3)自动记录、显示一次往返时间,同时显示参赛学校与ICkey LOGO(记录显示装置要求安装在车上)。
2.发挥部分
(1)自动记录、显示行驶距离(记录显示装置要求安装在车上)。
(2)D~E间为限速区,车辆往返均要求以低速通过,通过时间不得少于8秒,但不允许在限速区内停车。
(3)其它特色与创新。
系统框架:
电路图
电路说明:
小车主控MCU为arduino uno R3,通过左右两个黑白线检测传感器对黑线进行计数,从而反馈到arduino,MCU根据反馈回来的信息判断正常行驶区和减速区等等,lcd1602实时显示距离和时间。自制小电视机显示logo以及播放背景音乐。
程序设计思路:
左右两侧传感器检测到黑线电平跳变触发外部中断,中断函数对黑线计数,主程序通过循环判别得到的计数值从而来确定小车的运行状态以及小车行驶的距离(因为手头的SR04超声波模块测距范围有限,故采用红外的方法)。系统运行时间用arduino的milis函数获得通过lcd1602显示。
部分程序展示:
实物展示:
小车正面
小车底部:
自制小电视:
到达终点后:
耗时:86s
行驶距离:19m
视频地址:http://v.youku.com/v_show/id_XMTU2NTI5NjcwOA==.html