milluzaj wrote: I learned the screen has a refresh rate of about 50 ms. You might need a wait to display some of the stuff at higher speeds.
timpattinson wrote:10 FPS, hardware limitation.
Has anyone actually tested that? You could try using NeXTScreen at 50ms poll rate with AVI capture, and see how many frames you can see of the line growing:
Actually, thinking about it, my test wouldn't work if what's on the NXT's screen is different from what the NXT thinks is on its screen. (i.e. The hardware screen hasn't been refreshed yet, but the screen memory buffer and/or refresh flag* has changed.)
The only accurate test would be to make a video in real life. (Hint**: With a video camera.)
*Is there a such thing as a refresh flag?
** No, I am not insulting your intelligence.
Commit to LEGO Mindstorms Robotics Stack Exchange: bit.ly/MindstormsSE
Commit to LEGO Stack Exchange: bit.ly/Area51LEGOcommit
The 10Hz refresh rate is a limitation by the LCD screen's controller. It was discussed at an MCP meeting last year and confirmed by one of the hardware designers.
- 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)
10hz seems unlikely to me, but I am prepared to be totally wrong. I don't understand how people like Jason Railton or Dick Swan could be unaware of a 10hz limit if that were the case.
Jason J Railton wrote:What you’re doing in code is transferring screen data over a serial link to the single-frame buffer held on the LCD driver chip. You’re not controlling the display’s pixels directly. The LCD controller then refreshes the physical screen from that buffer at a rate of around 60Hz or 70Hz. It doesn’t matter how quickly you actually dump data over the serial link, the display only gets refreshed at the rate dictated by the LCD controller.
That’s why small matrix ‘passive’ LCD devices (like calculators, the original Nintendo Game Boy, and the Grapevine PDA on my desk) only have two shades of grey. They flick between two images as fast as possible, but are able to control the delay between refreshes slightly so that one of the frames lasts a little longer than the other, and you get two different shades of grey. They can’t regulate the brightness of individual pixels like more recent ‘active’ colour LCD displays do (TFTs have a discrete transistor for each pixel). [1]
Dick Swan wrote:This is also the place to change the frame rate from 76 to 95 as was mentioned in one of the other posts. [2]
Commit to LEGO Mindstorms Robotics Stack Exchange: bit.ly/MindstormsSE
Commit to LEGO Stack Exchange: bit.ly/Area51LEGOcommit
| 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)
muntoo wrote:They flick between two images as fast as possible, but are able to control the delay between refreshes slightly so that one of the frames lasts a little longer than the other, and you get two different shades of grey.
This means that, in theory, we could make a grayscale display for the NXT!
As far as motion is concerned, I'm not sure a 70hz refresh rate is much better than 10hz, because the pixels respond so slowly. A sprite moving to keep pace with a 70hz refresh will be severely blurred. As Aswin0 said though, that's good for static grayscale.
To God be the glory, great things He has done;
So loved He the world that He gave us His Son,
Who yielded His life an atonement for sin,
And opened the life gate that all may go in.