LeJOS学习(8):Sensor的API研究-InfraRedSensor
来源:互联网 发布:福建医科大学网络教育 编辑:程序博客网 时间:2024/06/05 00:54
一鼓作气,继续红外传感器的研究,就是这个传感器:
红外传感器的作用只有两个:测距、定位。其实还有一个功能,可以接受远程控制,方法略有不同。
先看代码:
EV3IRSensor sensor = new EV3IRSensor(SensorPort.S1); //模式一:测距,一个数,越小越近,远了就变成Infinity //SensorMode mode = sensor.getDistanceMode(); //模式二:定位,8个数,4组,每组两个(方位-25~25,距离远了也是Infinity) SensorMode mode = sensor.getSeekMode(); float[] samples = new float[mode.sampleSize()]; while( !Button.DOWN.isDown() ){ mode.fetchSample(samples, 0); int k=0; for(float v : samples) System.out.println("===v["+(k++)+"]="+v); //log.echo("v["+(k++)+"]="+v); Delay.msDelay(1000); } sensor.close();
测量距离
getDistanceMode用于测试红外传感器与前面物体的距离,采样得到1个数,范围从5cm到50cm之间。
定位
getSeekMode可以让红外传感器根据4个信标来定位,其实就是能同时接收4个信标的信号,每个信标的信号有两个数(方位和距离),这样意味着采样得到的是8个数,每2个一组,对应一个信标的频道,比如我使用Channel3,所以在数组中是 samples[4]为方位,samples[5]为距离,修改频道可以使用遥控器中间的拨动开关,4个频道可选。
其中,方位的取值范围从-25到+25,表示传感器角度来看信标的方位(从左向右,顺时针)。
远程命令
现在来看看远程命令,其实就是感应红外遥控器的按钮。代码如下:
EV3IRSensor sensor = new EV3IRSensor(SensorPort.S1); while( !Button.DOWN.isDown() ){ int cmd = sensor.getRemoteCommand(2); if(cmd!=0) log.echo("cmd="+cmd); byte[] buf = new byte[4]; sensor.getRemoteCommands(buf, 0, 4); int k=0; for(float v : buf){ if(v!=0) System.out.println("===v["+(k++)+"]="+v); else k++; //log.echo("v["+(k++)+"]="+v); } Delay.msDelay(1000); } sensor.close();
其中getRemoteCommand(int channel) 是指定频道获取命令ID,而getRemoteCommands()则可以同时获取4个频道上的命令ID。命令ID的定义见下表:
0 = 无按钮(并且“信标”模式关闭)
1 = 按钮 1
2 = 按钮 2
3 = 按钮 3
4 = 按钮 4
5 = 按钮 1 和按钮 3 同时
6 = 按钮 1 和按钮 4 同时
7 = 按钮 2 和按钮 3 同时
8 = 按钮 2 和按钮 4 同时
9 =“信标”模式开启
10 = 按钮 1 和按钮 2 同时
11 = 按钮 3 和按钮 4 同时
遥控器图示如下:
1 0
- LeJOS学习(8):Sensor的API研究-InfraRedSensor
- LeJOS学习(6):Sensor的API研究-TouchSensor
- LeJOS学习(7):Sensor的API研究-ColorSensor
- LeJOS学习(4):Motor的API研究
- LeJOS学习(5):Motor的API研究-进阶篇
- LeJOS学习(3):继续打造Maven的开发环境
- LeJOS学习(2):继续 HelloWorld
- LeJOS学习(9):一个整合传感器与马达的简单例子
- LeJOS学习(1):一切从安装开始
- HttpClient学习研究---第五章:流利的API
- HTML5 audio API的研究与学习1
- [sensor] android的sensor架构
- leJOS——LEGO NXT的Java环境
- 最近研究的windows API
- Android 传感器(Sensor)API教程
- Android 传感器(Sensor)API教程
- Android学习之Sensor
- MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现
- 苹果开发 笔记(86)Stack View in xcode 7
- hdu 1800 Flying to the Mars(贪心)
- nyoj整数划分(二)
- C++局部对象的析构
- 虚函数、纯虚函数详解
- LeJOS学习(8):Sensor的API研究-InfraRedSensor
- [BZOJ1782] [Usaco2010 Feb]slowdown 慢慢游
- Git分支管理策略
- 逻辑运算符 && || ! 的一些理解
- 备忘kettle
- long long unsigned long long 的最大值最小值在不同平台测试
- poj 3904(莫比乌斯反演)
- Android岗位的面试总结
- LeetCode Implement Trie (Prefix Tree) 字典树/前缀树