基于SnapDragonBoard410c的智能小车(一)
2017-12-07 15:41
609 查看
今天我就基于高通410c的开发板开发的智能小车给大家分享下我们的开发过程。在开发中遇到最大的问题就是我么的智能小车是采用舵机控制的,导致我们往里面写一个值的时候电机一直以这个值做功。正因为如此,我们便开始编写自己的壁障算法——这当然要借助于超声波模块。
我们的智能小车的硬件组成有四个超声波模块,和小车。
我们的智能小车如没有自己的壁障算法,就很有可能出现下面的情况
![](http://img.blog.csdn.net/20171207153735689?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzc2Mzc2Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们先要读取超声波节点的数据:
壁障规避:
更改运行状态:
我们的智能小车的硬件组成有四个超声波模块,和小车。
我们的智能小车如没有自己的壁障算法,就很有可能出现下面的情况
我们先要读取超声波节点的数据:
public static String Redata(String path) { String content = new String(); String line = new String(); InputStreamReader is = null; File file = new File(path); if (file.exists()) { try { is = new InputStreamReader(new FileInputStream(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } BufferedReader bufferedReader = new BufferedReader(is); try { while ((line = bufferedReader.readLine()) != null) { content = content + line; } } catch (IOException e) { e.printStackTrace(); } try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } return content; }
壁障规避:
timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { String a[] = Config.location().split("@"); if (a[0].equals("1")) { if (a[2].equals("3")){ Api.right(15000000); }else if (a[3].equals("4")){ Api.left(15000000); } } } }, 0, 200);
更改运行状态:
private static String leftback = "/sys/class/pwm/pwmchip1/pwm0/duty"; private static String leftforward = "/sys/class/pwm/pwmchip1/pwm1/duty"; private static String rightforward = "/sys/class/pwm/pwmchip1/pwm2/duty"; private static String rightback = "/sys/class/pwm/pwmchip1/pwm3/duty"; private static String voice = "/sys/devices/soc.0/sonar.*/value"; private static String red_light = "/sys/devices/soc.0/ir-red.*/value"; public static void forward(long speeed) { stop(); Config.WriteData(leftforward, "" + speeed); Config.WriteData(rightforward, "" + speeed); } public static void back(long speeed) { stop(); Config.WriteData(leftback, "" + speeed); Config.WriteData(rightback, "" + speeed); } public static void left(long speeed) { stop(); Config.WriteData(leftforward, "" + 0); Config.WriteData(rightforward, "" + speeed); } public static void right(long speeed) { stop(); Config.WriteData(leftforward, "" + speeed); Config.WriteData(rightforward, "" + 0); } public static void stop() { Config.WriteData(leftback, "" + 0); Config.WriteData(leftforward, "" + 0); Config.WriteData(rightforward, "" + 0); Config.WriteData(rightback, "" + 0); }
相关文章推荐
- 基于SnapDragonBoard410c的视频录制出现分辨率变化的原因
- 基于stm32的手机蓝牙智能小车的设计
- 基于51单片机的智能小车
- 基于SnapDragonBoard410c的单例设计模式
- 基于pcDuino的WiFi实时视频监控智能小车——硬件部分(二)
- 基于Dragonboard 410c的智能小车(二)
- 基于SnapDragonBoard410c的蓝牙控制
- 基于51单片机-智能红外遥控寻迹避障小车
- 基于Dragonboard410c的智能音箱(五)
- 基于Dragon Board410c 的智能机器人预研-语音识别及定位
- 基于SnapDragonBoard410c源码编译问题
- 基于Dragonboard410c的智能音箱(一)
- 基于pcDuino-V2的无线视频智能小车
- 基于Dragonboard410c的智能音箱(四)
- 基于android系统的智能小车控制软件开发
- 毕业设计--基于安卓的智能小车(一)
- 基于Dragonboard410c的智能音箱(二)
- 基于Qt的wifi智能小车的制作(一)
- 基于Dragonboard 410c的智能小车(三)
- 基于SnapDragonBoard410c的远程防盗系统 (二)