NXC: NXT 2.0 color sensor in lamp mode

Discussion specific to NXT-G, NXC, NBC, RobotC, Lejos, and more.
mightor
Site Admin
Posts: 1079
Joined: 25 Sep 2010, 15:02
Location: Rotterdam, Netherlands
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mightor »

Matt,

I will run some tests with ROBOTC now, will let you know how it goes.

- Xander
| My Blog: I'd Rather Be Building Robots (http://botbench.com)
| RobotC 3rd Party Driver Suite: (http://rdpartyrobotcdr.sourceforge.net)
| Some people, when confronted with a problem, think, "I know, I'll use threads,"
| and then two they hav erpoblesms. (@nedbat)
mattallen37
Posts: 1818
Joined: 02 Oct 2010, 02:19
Location: Michigan USA
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mattallen37 »

mightor wrote:I have no idea tbh. One way you could find out is to compare the time it takes with various firmwares :) Use an NXT 1.0 light sensor to measure, it's got a 3ms update time.

- Xander
Hmm, ok. Sometime I might run a test with the Lego FW (enhanced).
mightor wrote:Matt,

I will run some tests with ROBOTC now, will let you know how it goes.

- Xander
Ok, thanks.
Matt
http://mattallen37.wordpress.com/

I'm all for gun control... that's why I use both hands when shooting ;)
afanofosc
Site Admin
Posts: 1256
Joined: 26 Sep 2010, 19:36
Location: Nashville, TN
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by afanofosc »

The time that it takes to switch from one type of device to another for the color sensor is part of the design of the device itself. The standard NXT firmware specifically includes wait states any time you change the color sensor type (i.e., red, green, blue, full, or none) in order to make sure that the device works correctly as you switch it from one type to another. It might be possible to handle the device as a custom sensor and manually "program" it via the digital pins but that is not something I have ever tried. If all you cared about was using it as a light output device it may not matter if you strictly adhere to the way it is used internally by the firmware.

John Hansen
Multi-platform LEGO MINDSTORMS programming
http://bricxcc.sourceforge.net/
mightor
Site Admin
Posts: 1079
Joined: 25 Sep 2010, 15:02
Location: Rotterdam, Netherlands
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mightor »

My results are quite surprising. I used the setup in the image below. An NXT 1.0 light sensor in ambient mode and the colour sensor facing it. I made sure the space between the two sensors was quite well insulated from outside light. I had an average measured raw value on my light sensor of about 23, which is really quite low, so I was pretty sure not a lot of light was coming in.
IMAG0153.jpg
IMAG0153.jpg (281.99 KiB) Viewed 7684 times
I measured the time it took for the light to turn on and for the light to turn off using RGB, Red, Green and Blue mode. All times are measured in ms.

Code: Select all

Mode   ON      OFF
------------------
RGB    139     17
Red    320     122
Green  319     122
Blue   319     122
I have no idea why it takes longer to switch on and off in non-RGB mode. Let me know if you get similar results.

This is the code I used:

Code: Select all

#pragma config(Sensor, S1,     COLOUR,              sensorCOLORNONE)
#pragma config(Sensor, S2,     LIGHT,               sensorLightInactive)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

#define THRESHOLD 30
#define SAMPLES 100

task main () {
  long timer1 = 0;
  long timer2 = 0;
  for (int i = 0; i < SAMPLES; i++) {
    time1[T1] = 0;
    SensorType[COLOUR] = sensorCOLORBLUE;
    while(SensorRaw[LIGHT] < THRESHOLD); EndTimeSlice();
    timer1 += time1[T1];
    time1[T1] = 0;
    SensorType[COLOUR] = sensorNone;
    while(SensorRaw[LIGHT] > THRESHOLD); EndTimeSlice();
    timer2 += time1[T1];
  }
  nxtDisplayCenteredBigTextLine(0, "%d", timer1 / SAMPLES);
  nxtDisplayCenteredBigTextLine(3, "%d", timer2 / SAMPLES);
  while (true);
}
Edit: The sensor is set to BLUE here, I just tweaked for each run.

- Xander
| My Blog: I'd Rather Be Building Robots (http://botbench.com)
| RobotC 3rd Party Driver Suite: (http://rdpartyrobotcdr.sourceforge.net)
| Some people, when confronted with a problem, think, "I know, I'll use threads,"
| and then two they hav erpoblesms. (@nedbat)
mattallen37
Posts: 1818
Joined: 02 Oct 2010, 02:19
Location: Michigan USA
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mattallen37 »

Thanks for the tests. It appears to similar to the Lego FW speed, based on "about 1/3 of a second". I'll try to do a test sometime, and report back.

BTW, how do you get time measurements in exact milliseconds? I always do something like the following, which I know is not true milliseconds.

Code: Select all

until(SENSOR_1>500){
  i++;
  Wait(1);
}
//then I read the variable "i" to see how long it took.
I know it is not an accurate way of doing it, but how do you use the internal timers so that it IS true milliseconds?
Matt
http://mattallen37.wordpress.com/

I'm all for gun control... that's why I use both hands when shooting ;)
mightor
Site Admin
Posts: 1079
Joined: 25 Sep 2010, 15:02
Location: Rotterdam, Netherlands
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mightor »

In ROBOTC I have four ms timers, T1...T4 that I can access with time1[T1] to get 1ms, time10 to get 10ms and time100 to get 100ms accuracy, respectively. You reset them with a time1[T1] = 0 and then read them when you're done timing.

- Xander
| My Blog: I'd Rather Be Building Robots (http://botbench.com)
| RobotC 3rd Party Driver Suite: (http://rdpartyrobotcdr.sourceforge.net)
| Some people, when confronted with a problem, think, "I know, I'll use threads,"
| and then two they hav erpoblesms. (@nedbat)
mattallen37
Posts: 1818
Joined: 02 Oct 2010, 02:19
Location: Michigan USA
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mattallen37 »

Ok. Is there anything like that in NXC?
Matt
http://mattallen37.wordpress.com/

I'm all for gun control... that's why I use both hands when shooting ;)
mightor
Site Admin
Posts: 1079
Joined: 25 Sep 2010, 15:02
Location: Rotterdam, Netherlands
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mightor »

mattallen37 wrote:Ok. Is there anything like that in NXC?
Is there no way to get the current tick count?

- Xander
| My Blog: I'd Rather Be Building Robots (http://botbench.com)
| RobotC 3rd Party Driver Suite: (http://rdpartyrobotcdr.sourceforge.net)
| Some people, when confronted with a problem, think, "I know, I'll use threads,"
| and then two they hav erpoblesms. (@nedbat)
gloomyandy
Posts: 323
Joined: 29 Sep 2010, 05:03

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by gloomyandy »

Hi,
From looking at your test code it would seem that with RobotC the setting of the sensor mode is asynchronous )or at least might be). That is that after setting SensorType[COLOUR] then it may take some time before the light is turned on or off. Is this correct? If this is the case how in RobotC do you know when the sensor has finished setting things up? Could this be the cause of your timings for off being different? In leJOS the process is synchronous and after the method call has returned the sensor is in that mode (light on or off). So anyway running your test (or at least a Java version of it), on leJOS gives 180mS to either turn on or off in all modes...

Andy
mightor
Site Admin
Posts: 1079
Joined: 25 Sep 2010, 15:02
Location: Rotterdam, Netherlands
Contact:

Re: NXC: NXT 2.0 color sensor in lamp mode

Post by mightor »

I don't know if it is asynchronous or not, that is why I didn't rely on the sensor itself to give me the info. I use the normal light sensor to check when the light turns on or off. I have no explanation for the weird time difference.

- Xander
| My Blog: I'd Rather Be Building Robots (http://botbench.com)
| RobotC 3rd Party Driver Suite: (http://rdpartyrobotcdr.sourceforge.net)
| Some people, when confronted with a problem, think, "I know, I'll use threads,"
| and then two they hav erpoblesms. (@nedbat)
Post Reply

Who is online

Users browsing this forum: Semrush [Bot] and 0 guests