很多设备调试,程序编写都是自己一个人一行一行一根线一根线调试出来的, 从中体会到了很多酸甜苦辣。其中调试小车让其识别拐弯与平时的轻度弯曲的直线之间的区别是最让人痛苦的,不过小车最后还是跑出了全专业最快的10 秒 /圈
的速度。
PS:此文中的小车的
循迹程序
,寻光程序
,Android 遥控程序
,重力感应程序
,循迹与寻光自由切换程序
已全部上传至网上。
小车最终外观
处理器用的是STM32F4
后面两个轮子为驱动轮,前面一个轮子为从动轮
GIF 演示
这只是初期程序的效果,考核的时候已经不会在直线上扭来扭去了。但其实有的人的车不调也能到达差不多的效果,但无奈我的两个马达转速差别太大,调节也无法完全走直线。所以必须用程序做到将其完全可控。
并且程序在检测到需要转弯时两个轮子是一前一后地转动,能够以最大限度的提供动力使车身转向并且还在直线上,当检测到转过的角度到达时车会立即继续向前开动。
最终程序源代码:https://github.com/hongfeiyucode/find_way_car
这架在上面的是就是寻光传感器,最后考核很是蛋疼,很多人写的程序直接就是转 180 度然后car_forward()
检测到光直接停下,这种当然是最快的,但是因为前面说过的我这小车无法直行最后跑的不是很快。
但是程序的逻辑还是很具有参考价值的: https://github.com/hongfeiyucode/find_light_car
这个主要是利用芯片上的一个按钮将其进行程序之间的切换。程序检测一个值,检测这个键是否按下,还有什么时候弹起,来达到两个程序之间切换的功能。
这样相当于一个程序完成了两个程序的功能!
也另外写了一个程序,程序还是很简洁明了的: https://github.com/hongfeiyucode/car_find_way_and_light
这个是工程量比较大的一个项目,程序都是自己写的,这里把源代码也开源了:https://github.com/hongfeiyucode/Car_remote_control
最后的程序大致界面,基本是重新改写了一遍。后期还加了重力感应这一功能。
操作说明:
打开蓝牙
查找蓝牙设备
右下角的按钮
可以切换重力感应与键盘操作模式
重力感应遥控说明:
PS :别忘了 star 或者 fork 一下我的程序哦
1
sennes 2016-05-09 21:53:58 +08:00
Sensor 没选好所以导致可能在算法上需要多下功夫。
|
3
sennes 2016-05-09 22:10:04 +08:00
刚刚不小心点了发送。不好意思。
对于做硬件项目给几点建议: 1. 且不说功能如何 外观可以花点心思。 最低标准是,线不要凌乱的裸露在外。 2. 开发前期应该先调研一下传感器。 您用几路普通传感器,但是采样的点和精度都不够好,会导致你的成果表现不会特别出色。 3. 有条件的话尝试学习一下绘制 PCB 。像您这样的项目到了最后期就没有必要使用最小系统+模块的方式了。而且画集成的板子难度也不是特别高,能学到东西。 4. 您软件这边做的还是不错的 |
4
sennes 2016-05-09 22:11:45 +08:00
@hongfeiyu 嗯 因为不知道你们题目
不过感觉您挺有天赋的,如果多花点心思在外观和一些细节方面。会对您就业以后做研发带来不少好处。(如果打算做硬件这块的工作的话) |
5
hongfeiyu OP @sennes 碰到专业的大神了_(:з」∠)_
其实我只是玩一玩的,也就接触了几周,自己瞎捣鼓的 大神轻喷轻喷 硬件方面确实只是因为平时自己动手多所以做起来不是很麻烦 但是还是希望自己首先要不断不断地提高自己的编程水平 |
6
sennes 2016-05-10 00:00:53 +08:00
加油
|
7
xmoiduts 2016-05-10 07:10:06 +08:00 via Android
请问大神,安卓要用多长时间学?最近想做个 arduino 调速风扇,想要接入手机做个第一印象好些的界面,对 java 和安卓 0 基础。 arduino 那边蓝牙倒是没啥问题。
|
8
kobe1941 2016-05-10 09:51:20 +08:00
STM32 ,好熟悉的名词,当年在大学也是玩单片机焊电路板
已转行互联网,不解释 |