找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 6992|回复: 11

关于NXT8547 light sensot 测试状况!

  [复制链接]
发表于 2010-4-5 11:11:07 | 显示全部楼层 |阅读模式
#define THRESHOLD 50
task main()
{

   SetSensorLight(IN_3);
   SetSensorType(IN_3,SENSOR_TYPE_LIGHT);
   SetSensorColorBlue(S3);
while(true)
{
if(Sensor(IN_3)>THRESHOLD)
{

NumOut(10, 10, SensorMode(IN_3));
}
else if(Sensor(IN_3)<=THRESHOLD)
{
NumOut(10, 10, SensorMode(IN_3));
}
}
}


上面是我写的一段测试代码,本意是想按照NXT-G那样采集到百分比的参数,可结果却出乎意料,
如果灯不开的话Sensor(IN_3)恒为100,开了之后Sensor(IN_3)随着距离不同会得到不同的值
但是均大于100,为啥会出现这样的状况呢?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2010-4-5 17:30:39 | 显示全部楼层
你while里面的程序是没有意义的,不如直接改成
while(true)
{
NumOut(10, 10, SensorMode(IN_3));
}

至于出值的问题,因为我用的是robot c ,可能跟nxc还不一样。。所以我也不是很清楚。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-4-5 17:32:13 | 显示全部楼层
我发现问题了。。。你为什么要输出SensorMode()的值?这个是传感器的模式。
你应该输出Sensor(IN_3)的值。所以while里面应该是
while(true)
{
NumOut(10, 10, Sensor(IN_3));
}
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-4-5 19:05:03 | 显示全部楼层
Sorry,贴错了!
应该是NumOut(10, 10, Sensor(IN_3));上面是我后来有修改过,没删掉!
呵呵!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-4-5 22:31:30 | 显示全部楼层
回复 4# bluesky4016


    那现在状况如何呢?
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-4-5 22:47:16 | 显示全部楼层
根据你的建议,我修改了一下代码;如下:
task main()
{

   SetSensorLight(S3);
   SetSensorType(S3,SENSOR_TYPE_LIGHT_ACTIVE);
   SetSensorColorRed(S3); // Red light
while(true)
{
   NumOut(10, 10, Sensor(S3));
}
}

这样随着距离元件采的值是在000~460这个范围,后两位数会不断的发生变化;
我从论坛上下载了一版lightmeter(是G语言的)测量的结果是00~46范围;
所以我这样猜测程序采集的数据是正确的但精度比较高,所以三位显示,
后来我修改成NumOut(10, 10, Sensor(S3)/10)这句, 这样结果就与G语言的结果相符合;
只是猜测还需专家检验!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-4-6 10:59:40 | 显示全部楼层
你用的是8547,没有光电传感器,所以你一开始设置传感器类型为光电的就已经错了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-4-6 12:31:37 | 显示全部楼层
晕,不晓得我测出的结果是啥了!呵呵!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-4-8 12:51:11 | 显示全部楼层
回复 7# 糖伯虎


    应该可以的,NXT8547颜色传感器可以设置为Light Sensor mode,详见http://www.nxtprograms.com/NXT2/light_meter/index.html中的说明!
只是我的程序可能还没有设好吧!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2010-4-8 17:34:48 | 显示全部楼层
回复 9# bluesky4016


    是可以设置为光电传感器模式,但是你用的是NXC,函数用错了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2010-4-8 18:36:03 | 显示全部楼层
回复 10# 糖伯虎
能细说一下吗?
我一直没找到NXC怎样设置的,Thanks!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-5-6 15:04:47 | 显示全部楼层
看了大家的回答,其实都没有找到真正的问题。真正的问题是NumOut函数使用的不对。需要在最后加一个true参数。这个参数是刷新屏幕的意思,要不3位数最后一位就不被清除掉。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-4-28 14:23 , Processed in 0.082872 second(s), 18 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表