收藏 分销(赏)

探月小车”的设计与制作设计.doc

上传人:可**** 文档编号:767103 上传时间:2024-03-08 格式:DOC 页数:54 大小:1.92MB
下载 相关 举报
探月小车”的设计与制作设计.doc_第1页
第1页 / 共54页
探月小车”的设计与制作设计.doc_第2页
第2页 / 共54页
点击查看更多>>
资源描述
精选资料 系统设计文件 第 1 册 共 19 页 共 1 册 产品型号 产品名称 “探月小车”的设计与制作 产品图号 本册内容 技术说明、使用说明、安装说明、测试说明 批准 旧底图总号  年 月 日 底图总号 日期 签名 09.4.27 2009EJZ005 目录 一、 技术说明…………………………..………………………(4) 1. 技术参数与规格…………………………………………….(4) 2. 功能及用途………………………………………………….(4) 3. 系统结构…………………………………………………….(4) 3.1 工作原理…………………………………………….(5) 4. 焊装调………………………………………………………(10) 4.1 焊接工具与耗材…………………………………..(10) 4.2 焊接注意安全事项……………………………….(10) 4.3 调试和常见故障………………………………….(10) 5.程序……………………………………………………….(11) 5.1 程序流程图…………………………………………..(12) (1) 小车主流程图………………………………………(12) (2) 循迹流程图………………………………………..(13) (3) 避障流程图…………………………………..……(13) (4) 无线流程图………………………………………..(14) 二、 使用说明………………………………………………….(15) (1) 设备清单……………………………………….….(15) (2) 操作方法…………………………………….…….(15) (3) 注意事项………………………….………….…..(16) 三、 安装说明…………………………………………………..(16) 四、 测试说明……………………………………………………(21) 五、 附录一:程序清单…………………………………………(21) “探月小车”的设计与制作 一、技术说明 1.1模拟探月小车组成 1) 模拟探月小车核心板-S3C2440开发板 2) 模拟探月小车底板 3) 模拟探月小车巡迹板和探测任务板 4) 模拟探月小车摄像头及万用扩展板 5) 模拟探月小车四轮车体 6) 模拟探月小车锂电池组 图1.1模拟探月小车实物图 图中①,是摄像头及加高的转接板。 图中②,是摄像头的一块固定板,也可以作为一个万用扩展板。 图中③,是两组电池,一组给电机供电,一组给开发板、寻迹电路、探测任务板(图中没画出)供电。 图中④,是电路底板,集成了电源电路、比较器电路和开发板转接电路。 图中⑤,是一块ARM开发板,型号为S3C2440,为本次嵌入式小车专用芯片。 图中⑥,为小车的车体。 图1.2模拟探月小车底板实物图 图中①,是比较电路,主要是把红外传感器电压转换为数字电平; 图中②,是电源电路,主要是可以稳压输出5伏电压和比较电路的供电; 图中③,是ARM开发板2.0接口转2.54接口电路; 图中④,是一个摄像头转接口 图1.3模拟探月小车核心板-S3C2440开发板图 图中用户中断按键,是模拟探月小车分段处理功能按键; 图中用户Led灯,是模拟探月小车分段处理功能的指示灯。 1.2模拟探月小车的创新点 1) 添加了按键分段处理功能,通过模拟探月车本身自带操作键能够以划分模块任务形式分段来完成整个模拟探月小车的软、硬件调试; 2) 在模拟探月小车巡迹中,采用了模糊控制技术; 自主研发了图像识别算法,识别率较高,能够自动跟踪物体 1.3模拟探月小车的功能介绍 1) 能够的完成模拟探月环境的自主行驶; 2) 能够沿着指定的线路进行巡迹; 3) 能够进行图像采集以及基本图形数据识别; 4) 能够测量出不同环境的温度; 5) 能够测量出被探测物体直径及面积; 6) 能够通过无线网络传送采集的各种数据; 7) 能够通过远程控制端对模拟探月小车进行远程控制; 8) 能够通过模拟探月车按键分段处理功能完成一些日常教学及科研任务。 1.4模拟探月小车系统结构 模拟探月小车系统划分为小车的电源模块、电机驱动模块、循迹模块、图像识别模块、测距和测温模块、无线评分通信系统,其中循迹模块由电压比较电路和关电传感器组成,模拟探月小车的任务探测板包含测距、测温等模块,无线评分通信系统是通过无线网络和评分系统实现模拟探月小车的远程通讯和评分。系统结构图如下 1、 技术参数与规格 1) “探月小车”底盘:21mm×165mm。 2) 电路额定工作电压5V给核心板及其他外围电路提供电压,8V直接为电机提供电压。 3) 正常工作温度范围为:0~30摄氏度,相对湿度在35%~90%。 4) 外围电路由灰度传感器、L298芯片来驱动直流电机(PM-33126000-30k)、超声波、光电开关传感器(E3F-DS30C4)无线接收(TL-WN321G+)和电源(8V锂电池YSD-08180)组成“探月小车”系统,温度传感器(DS18B20)。 5) “探月小车”主体电路是以三星公司S3C2440为核心芯片进行设计,合理利用了该芯片上丰富的资源。 2、功能及用途 2.1 小车的功能 9) 我们设计的“探月小车”这一系统主要是让小车自主的完成模拟“月球环境”的行走。 10) 在循迹过程中,可以探测出前方的标志物,并且能够避开障碍物,沿标记路线行走。 11) 具有摄像头模块,通过对标志物的图像采集,将采集的数据以数字信号方式通过无线通信网络发送到上位机的控制台。 12) 在循迹过程中,可以测量出不同环境的温度。 2.2 控制台的功能 1) 通过无线通信网络接收小车发送过来的图像数据。 2) 具有图像识别功能,能够辨别各种图像并在液晶屏显示。 3) 远程控制“探月小车”,通过按键方式利用无线通信控制小车的基本动作。 2.3 小车的用途 我们设计的“探月小车”这一体系的控制核心芯片是采用三星公司的S3C2440,软件系统驱动直流电机,通过红外传感器实现了小车自动识别路线,选择正确的路线。在循迹过程中判断并自动躲避障碍,利用摄像头对障碍物拍照,通过无线的方式将采集的图像发送到上位机的控制台,在控制台上通过按键可以控制小车的基本动作,该技术可以应用于探测月球环境,无人驾驶机动车,无人工厂,仓库等领域。 3、系统结构 我们设计的“探月小车”系统划分为小车的电源模块、电机驱动模块、循迹模块、摄像头模块、超声波测距模块,探测物体模块,无线通信模块,其中循迹模块由电压比较电路和灰度传感器组成,无线通信模块是通过无线网卡实现小车与上位机的控制台的连接。 图(1-1) 系统功能方框图 1) 工作原理: “探月小车”主体电路是以三星公司S3C2440为核心芯片进行设计,合理利用了该芯片上丰富的资源。在多种传感器的控制下,“探月小车”可以实现自动循迹、探测障碍物,同时对障碍物进行图像采集,通过无线通信方式发送到上位机的控制台,实现了“探月小车”的智能化。 l 电源模块 我们采用两个8V蓄电池为电路提供电源,其中一个8V蓄电池直接为直流电机供电;由于外围电路是无源传感器以及一些芯片组成,所以另一块8V蓄电池通过LM7805芯片降压,稳压到5V为核心板及外围电路供电,再利用LM117芯片再降压、稳压到3.3V给ARM芯片供电。蓄电池必须要具有较强的电流驱动能力以及稳定的电压输出性能,所以我们采用锂电池供电。 图(1-3) 5V电压稳压到3.3V l 控制模块 小车的电机驱动模块是由专用芯片L298来实现的。该芯片的主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载;在比赛中我们用来驱动直流电机,采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作;有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。 该芯片有两个差分驱动门,可以同时驱动两个直流电机,该芯片引脚介绍如下: 引脚 符号 功能 1 15 SENSING A SENSING B 此两端与地连接电流检测电阻,并向驱动芯片反馈检测到的信号 2 3 OUT 1 OUT 2 此两脚是全桥式驱动器A的两个输出端,用来连接负载 4 Vs 电机驱动电源输入端 5 7 IN 1 IN2 输入标准的TTL逻辑电平信号,用来控制全桥式驱动器A的开关 6 11 ENABLE A ENABLE B 使能控制端.输入标准TTL逻辑电平信号;低电平时全桥式驱动器禁止工作。 8 GND 接地端,芯片本身的散热片与8脚相通 9 Vss 逻辑控制部分的电源输人端口 10 12 IN 3 IN 4 输入标准的TTL逻辑电平信号,用来控制全桥式驱动器B的开关 13 14 OUT 3 OUT 4 此两脚是全桥式驱动器B的两个输出端,用来连接负载 该芯片控制逻辑电平如下: EnableA(B) INPUT 1 INPUT 2 电机工作情况 H H L 正转 H L H 反转 H H H 停止 H L L 停止 L × × 停止 L298作为电机驱动电路,可靠性高,可以方便的控制电机正反转,原理图如下: 图(1-4) 电机驱动原理图 l 超声波测距模块 超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高,波长短、绕射现象小,特别是方向性好,能够成为射线而定向传播等特点。超声波测距模块是用来测距并且避障用的。超声波测距的原理如下: S d h 目标 首先超声波传感器向空气中发射声脉冲, 声波遇到被测物体反射回来, 若可以测出第一个回波达到的时间与发射脉冲间的时间差t,利用,即可算得传感器与反射点间的距离s , 测量距离,若s>>h 时,则d ≈ s。 对于接收探头,因为接收的超声波信号很微弱而且考虑到干扰的因素,接收端有放大电路与滤波电路。当接收到超声波时,IO口即为高电平,通过IO口来确定是否检测到超声波,因此通过计算测的距离障碍物的距离然后就可以判断是否转弯。 l 探测物体模块 小车探测物体采用的是光电开关传感器E3F-DS30C4,它是数字传感器,NPN常开型光电开关,即数字电路中的低电平和高电平,正常状态输出高电平。检测到目标时输出低电平,它利用被测物对光束的遮挡或反射,有同步回路选通电路,接收器在根据接收到光线的强弱或者有无对目标物体进行探测,我们在小车的前面装了两个光电开关传感器,可以探测到路边的标志物,同时调整电机的转速,对标志物进行拍照图像处理,最后通过无线通信网络发送到上位机的控制台。 l 循迹模块 小车的循迹是由灰度传感器和电压比较电路组成,而灰度传感器是由光敏电阻和发光二级管组成,光敏电阻是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;在不同光照条件下的伏安特性曲线斜率不同,相应的光敏电阻阻值也不同.在给定偏压下,光照度越大,电流也越大.在一定光照下,电压越大,电流也越大,我们把灰度传感器输出的信号进入LM358进行电压比较,产生标准TTL电平,稳定性能得到提升。当小车底部的某边遇到白带时输入电平为高电平,反之为低电平。在调试过程中,通过小车的循迹过程。我们调节电位器的灵敏度,以满足小车在不同光度的环境中能够行走正确路线。 这样利用灰度传感器检测智能小车行驶道路上的白色标志线,就可以实现智能小车的自动循迹。 图(1-5) 灰度传感器原理图 l 无线通信模块 无线通信模块是小车与控制台通过无线网卡建立起来的,在模拟“月球环境”下,小车利用摄像头将途中所遇到的标志物记录下来,把采集的图像通过无线网卡发送到上位机的控制台,在控制台显示标志物的图片,并且通过按键可以控制“探月小车”的基本动作。 图(1-6) 无线通信结构图 4、焊装调 1) 焊接工具和耗材 工具和耗材 数量 备注 工具和耗材 数量 备注 数字万用表 一块 / 尖嘴钳 一把 20CM长 恒温烙铁,烙铁夹 一台 功率可调,配 不同的烙铁头 斜口钳 一把 20CM长 助焊剂和焊锡丝 各一份 / 尖头镊子、弯头镊子 各一把 15CM长 平口,十字起子 各一把 20CM长 铜柱、螺母 各四个 直径120Mil 热风台 一台 / 吸锡器 一个 / 胶枪 一把 / 焊锡丝架 一个 / 压线钳 一把 / 塑胶棒 若干 / 剪刀 一把 / 接线柱 若干 大小不等 2) 焊接流程 图1-4 焊接流程图 2) 焊接注意安全事项 l 电焊铁良好接地,防静电。 l 调节好电烙铁的焊接温度,以免温度过高对元件产生影响。温度一般控制在比焊锡丝的熔点高50度左右,或稍微高点。 l 对元器件的焊接时间保证在3S内焊完一个点,以防温升对元件有损坏。 l 按上焊接流程,以保证电路板能正常工作,元器件都能焊上。 l 铜柱的作用是以防电路板下有金属引发短路。 l 加电前注重检查电解电容、保护管、稳压管的极性等。 l 一定要查询清电路板的技术参数组电路板加能承受得住的电压值。 5、程序 5.1 主程序流程图 5.2 循迹流程图 5.3 避障流程图 5.4 无线通信流程图 5.5 程序清单(附录一) 二、使用说明: 1、设备清单 1) 若干支撑铜柱和螺母。 2) RS-232串口下载线一条。 3) 两个直流电机(PM-33126000-30k)。 4) 小车底盘:210mm×150mm。 5) 传感器:灰度传感器、超声波,光电开关传感器。 6) 两个8V锂电池电源(YSD-08180)。 7) 无线网卡(TL-WN321G+)。 8) 交叉网线2m。 2、操作方法 1) 将若干铜柱分别安装在电路板的制定位置,柱子在电路板下方,螺母在上方,旋紧便可。 2) 检查各个模块和电源接线是否良好。 3) 将8V直流电源(自备)通过降压给各个模块供电,开启并检测是否有异常。 4) 根据现场具体情况,对摄像头和灰度传感器稍加调整,以适应场地环境。 5) 下载程序时应将RS-232下载线的一头插在电路板的串口下载九针接口的母头上,另一端插在PC机上的九针母头上。 6) 我们借助PC机上的虚拟机与我们的核心板建立交叉编译环境,并且把程序烧到核心板内部。 7) 程序下载完成后,我们要对电机的旋转方向、摄像头的清晰度、灰度的灵敏度、超声波的距离加以调整,达到最佳效果。 8) 调试完成后,则可以将小车放到起始线等候出发指令。 9) 在控制台控制小车的开始和停止。 10) 在控制台上可以观看“探月小车”传回来的图片和距离以及相关数据。 3、注意事项 1) 核心板电源电压不得超过6V,以免烧坏核心板。 2) 不得在过于潮湿的地方使用此电路板,防止电机线圈受潮运得时而发热量过大烧毁线圈。 3) 在检测线路时若出现识别效果不佳等相关问题,可以适当的调整电位器,以增加其循迹的灵敏度。 4) 电机驱动供电不得大于10V。 三、安装说明 (1) 准备必要的安装工具。 (2) 检查各个模块清单和相关器件是否齐全。 l 小车框架装配图: 小车装配平面图 车体安装说明: 1 循迹模块1,3mm螺丝固定 2 循迹模块2,3mm螺丝固定 3 循迹模块3,3mm螺丝固定 4 循迹模块4,3mm螺丝固定 5 循迹模块5,3mm螺丝固定 7 超声波测障支架,3mm2螺丝固定 8 核心板放置位,3mm4螺丝固定,6mm铜柱对主板升高 9 左电机3mm4螺丝固定 10 右电机3mm4螺丝固定 11 红外光电传感器 3mm螺丝固定 12 电压比较电路3mm2螺丝固定,4mm铜柱对其升高 小车接线图: 小车具体引脚的接法: 主板(CON4)芯片的输入输出 引脚 名称 功能 1 5V 5V电源输出 2 5V 5电源输出 3 GND 地 9 GPF0 循迹输入5 10 GPF1 循迹输入4 11 GPF2 循迹输入3 12 GPF3 循迹输入2 13 GPF4 循迹输入1 18 GPG3 左电机正反转 20 GPG5 右电机正反转 28 GPG2 光电开关传感器 15 GPF6 光电开关传感器 17 GPG1 电机驱动输入 25 GPE11 电机驱动输入 23 GPG10 电机驱动输入 22 GPG9 超声波 27 GPE13 电机驱动输入 31 TOUT0 左电机速度控制pwm 34 温度传感器 32 TOUT1 右电机速度控制pwm 循迹(电压比较电路) 引脚 功能 1 循迹模块1 2 循迹模块2 3 循迹模块3 4 循迹模块4 5 循迹模块5 6 备用 7 备用 8 备用 5V 5V电源输入 GND 接地 电机驱动模块 引脚 功能 GPG3 左电机正、反转控制 TOUT0 左电机速度控制输出pwm TOUT1 右电机速度控制输出pwm GPG5 右电机正、反转控制 GPG1 电机驱动输入 GPE11 电机驱动输入 GPG10 电机驱动输入 GPE13 电机驱动输入 VCC 8V电池直接为芯片提供电压 GND 接地 四、测试说明 测试前整个轮子组装完整,并且各个功能模块正常。 测试步骤: a) 测试灰度传感器 将小车放在模拟月球环境下的标志线上,从左边第一个,在白线附近左右移动,在白线上的信号指示灯是否熄灭,灰线上是否点亮 若在白线上指示灯点亮,顺时针旋转模拟数字转换板上对应的精密可调电阻,将调到指示灯熄灭即可,样一次把五个灰度传感器调整好,后启动循迹测试程序,照上述说明将循迹模块调整到最优状态。 b) 测试红外光电开关传感器 在红外光电传感器正前方20cm处放置一个物体,看传感器背部指示灯是否点亮,若没有点亮,则顺时针旋转背部的旋钮,直到指示灯点亮为止,反之逆时针旋转至熄灭状态即可。 说明:设置红外光电传感器的距离小于等于20cm是为了防止小车检测到模拟月球环境四周的挡板而引起小车的误判。 c) 测试超声波传感器 在超级终端里面运行程序,将标志物放置在超声波传感器的正前方,通过改变标志物的距离,观察超声波测试的距离。 d) .测试温度传感器 在超级终端运行温度测试程序,观察显示的温度与环境温度是否相同。 e) .整体测试 将探月小车放在模拟月球的环境下的起始点,将电源打开,并随机放置三个标志物,在上位机的控制台上启动小车,同时观察小车传回来的数据。 附录一: 程序清单: Main.c #define _turn_back_L1 700 #define _turn_back_L2 700 #define _turn_L1 0 #define _run1 2500 #define _other_turn1 400 #define _run2 2000 #define _other_turn2 520 #define _run3 400 #define _round 200 //1 is white line , 0 is black line #define WHITE_LINE 1 #define PWM_IOCTL_SET_FREQ 1 #define PWM_IOCTL_STOP 0 #define LCNT 5 #define L0 0 #define L1 1 #define L2 2 #define L3 3 #define L4 4 #define L5 5 #define L6 6 #define L7 7 #define FL1 1 #define FL2 7 #define FR1 9 #define FR2 10 #define DIS 6 #define STOPDIS 200 #define MINDIS 300 #define LOW 0 #define HIGHT 1 #define HIGHT2 0x18 #define LOW2 0x03 #define FWD 0 #define BCK 1 #define LEFT -1 #define RIGHT 1 #define NOTURN 0 #define BIGLEFT -2 #define BIGRIGHT 2 #define LONGRUN 4 #define GET_IMG 1 #define NO_IMG 0 #define TURE 1 #define FALSE 0 extern char Color[20]; extern char result; //float TC=0; char strings[4000]; char start_check_way = FALSE; int debug_flag = 1; int OUTIO_fd; int INIO_fd; int last_turn=0; int img_cn=0; char Flag_END =0; long len_way=0; struct _freqs { int freq1; int freq2; }; struct _freqs myfreqs; static int PWM_fd = -1; static void close_buzzer(void); void openINIO(void); int car_turn_degree(int x, int direct, int Fg); // m=1 -> 1ms void delay(int m) { int i,j,k; for (i=0;i<m;i++) for (j=0;j<34000;j++); } void delayus(int m) { int i,j; for (i=0;i<m;i++) for (j=0;j<34;j++); } static void open_buzzer(void) { PWM_fd = open("/dev/newpwm", 0); if (PWM_fd < 0) { perror("open pwm_buzzer device"); exit(1); } // any function exit call will stop the buzzer atexit(close_buzzer); return; } static void close_buzzer(void) { if (PWM_fd >= 0) { ioctl(PWM_fd, PWM_IOCTL_STOP); close(PWM_fd); PWM_fd = -1; } } static void set_buzzer_freq(struct _freqs freqs) { // this IOCTL command is the key to set frequency //--printf( "Set myfreqs1:%d, myfreqs2:%d. \n",freqs.freq1,freqs.freq2); int ret = ioctl(PWM_fd, PWM_IOCTL_SET_FREQ, &freqs); if(ret < 0) { perror("set the frequency of the buzzer"); exit(1); } } void forward() { ioctl(OUTIO_fd,0,FL1); ioctl(OUTIO_fd,1,FL2); ioctl(OUTIO_fd,0,FR1); ioctl(OUTIO_fd,1,FR2); } void back() { ioctl(OUTIO_fd,1,FL1); ioctl(OUTIO_fd,0,FL2); ioctl(OUTIO_fd,1,FR1); ioctl(OUTIO_fd,0,FR2); } void turn_big_left() { ioctl(OUTIO_fd,1,FL1); ioctl(OUTIO_fd,0,FL2); ioctl(OUTIO_fd,0,FR1); ioctl(OUTIO_fd,1,FR2); } void turn_big_right() { ioctl(OUTIO_fd,0,FL1); ioctl(OUTIO_fd,1,FL2); ioctl(OUTIO_fd,1,FR1); ioctl(OUTIO_fd,0,FR2); } static void stop_buzzer(void) { int ret = ioctl(PWM_fd, PWM_IOCTL_STOP); if(ret < 0) { perror("stop the buzzer"); exit(1); } } void openOUTIO(void) { OUTIO_fd = open("/dev/OUTIO", 0); if (OUTIO_fd < 0) { perror("open device OUTIO"); exit(1); } } void openINIO(void) { INIO_fd = open("/dev/INIO", 0); if (INIO_fd < 0) { perror("open device INIO"); exit(1); } } int check_wich_turn( unsigned char flag ) { static int last_big_right=100, last_big_left=100; if ( last_turn == BIGLEFT ) {last_big_left=1;} else last_big_left++; if ( last_turn == BIGRIGHT ) {last_big_right=1;} else last_big_right++; if ( (flag & (1<<L2)) ) return NOTURN; //杩囧崄瀛? if ( ( ((flag & HIGHT2) >>3) > 0) && ((flag & LOW2)>0) ) return LONGRUN; if ( flag == (1<<L3) ) return RIGHT; if ( flag == (1<<L1) ) return LEFT; //if ( (flag & (1<<0)) && (flag & (1<<4)) ) return NOTURN; //if ( (flag & (1<<1)) && (flag & (1<<3)) ) return NOTURN; //闃叉宸﹀彸鏅? //if ( ( flag & (1<<L4) ) && (last_turn == BIGLEFT )) return NOTURN; // if ( ( flag & (1<<L0) ) && (last_turn == BIGRIGHT )) return NOTURN; if (debug_flag) printf(" Flags: %d\n", flag); if ( flag & (1<<L4) ) return BIGRIGHT; if ( flag & (1<<L0) ) return BIGLEFT; /* if ( flag & (1<<L4) ) { if (last_big_left <= 6) { car_run(100,0); return NOTURN; } else return BIGRIGHT; } if ( flag & (1<<L0) ) { if (last_big_right <= 6) { car_run(100,0); return NOTURN; } else return BIGLEFT; } */ // if ( flag & (1<<L0) ) return BIGLEFT; if ( flag == ((1<<L1) | (1<<L2)) ) return LEFT; if ( flag == ((1<<L2) | (1<<L3)) ) return RIGHT; if ((flag == 0 ) && ((last_turn==BIGLEFT) | (last_turn==BIGRIGHT) ) ) return last_turn; return NOTURN; //printf("Current INIO: %s\n",NOW_INIO); //printf( "left:%d, right:%d\n", left,right); } void turn(int turn_flag) { long int cn=0; if (turn_flag == BIGLEFT) { // if (debug_flag) printf("BIGLEFT\n"); turn_big_left(); delay(10); myfreqs.freq1 = 400; //LEFT, BCK //10 old myfreqs.freq2 = 400; //RIGHT, FWD //10 old set_buzzer_freq(myfreqs); delay(5); //10 old //stop_buzzer(); } else if (turn_flag == BIGRIGHT ) { // if (debug_flag) printf("BIGRIGHT\n"); turn_big_right(); delay(10); myfreqs.freq1 = 400; //LEFT FWD //10 old myfreqs.freq2 = 400; //RIGHT BCK //10 old set_buzzer_freq(myfreqs); delay(5); //10 old //stop_buzzer(); } else if (turn_flag == LEFT) { // if (debug_flag) printf("LEFT\n"); forward(); myfreqs.freq1 = 0; //LEFT F1 myfreqs.freq2 = 1; //RIGHT F2 set_buzzer_freq(myfreqs); delay(10); //10 } else if (turn_flag == RIGHT) { //if (debug_flag) printf("RIGHT\n"); forward(); myfreqs.freq1 = 1; //LEFT F1 myfreqs.freq2 = 0; //RIGHT F2 set_buzzer_freq(myfreqs); delay(10); } else if ( turn_flag == LONGRUN) { printf("turn LOMGRUN\n"); forward(); myfreqs.freq1 = 1; //10 myfreqs.freq2 = 1; set_buzzer_freq(myfreqs); delay(100); //here len_way+=10; printf("len_way=%d\n",len_way); } else { // if (debug_flag) printf("NOTURN \n"); forward(); myfreqs.freq1 = 1; //10 myfreqs.freq2 = 1; set_buzzer_freq(myfreqs); delay(10); len_way++; printf("len_way=%d\n",len_way); } last_turn =
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服