#R.O.B light flicker
1 messages · Page 1 of 1 (latest)
So. R.O.B. is running synchronously with the TV screen. Which run at 60 Hz. R.O.B. commands are bytes. The TV send bit one by frame. If it's a 0, the screen stays black. So, I'll need to wait one frame : 16.67 milliseconds.
If it's a one, according to the reverse engineering document, I need to set the screen to green 1.5 milliseconds, then set it of until the frame ends.
Yeah, here it is. https://learn.adafruit.com/controlling-a-classic-nintendo-r-o-b-robot-using-circuit-playground-express/control-via-led
Here's also an exemple program with a LED here. https://learn.adafruit.com/controlling-a-classic-nintendo-r-o-b-robot-using-circuit-playground-express/programming
what is he running the program on in the exemple
Looks like it set up a little circuit to send commands to R.O.B. with a LED, with an IR input device.
The intesting part is here : it describe what to do during one cycle. initial+command if val: # if it's a one, flash the IR LED IRled.value = True # Turn IR LED turn on for 1.5 ms time.sleep(0.0015) # 1.5 ms on IRled.value = False # Turn IR LED off for 15 ms time.sleep(0.0150) # 15 ms else: time.sleep(0.0167) # 1 cycle turn off
so basically what your trying to do is possible software wise but hardware is the problem modern screen cant take such low time frame
I see.
you can do the the program with the command i sent you before
but you won't be able to run it
I see. I understand...
you could use an arduino if you have the found
Ironically, I have an old CRT screen. I managed to set R.O.B. to work with it. But, only on an emulator, with the original NES games. Perhaps I make a program that works on it, but...I don't really want to be forced to use my CRT to do that...
Here it is. https://www.youtube.com/watch?v=JTi9bdqVzm4
A demo of Gyromite with R.O.B., on an emulator with a knockoff NES USB controller.
Oh ! That's not an original NES running on that video, it's a computer ! I managed to set the screen to the correct resolution and refresh rate to work with R.O.B.
I suppose if I write a program on this computer, R.O.B. will works as same as with the emulator.
it would yes
But this old screen is not really practical. It's at my parent house, and the computer I have here is really old (it's a Power Mac G5)...I can't bring it to my current house. It's too huge...^^'
maybe just maybe you dont need 1,5ms of flashing
- i don't know where that 1,5 ms come from since no monitor or CRT in the world can manage that
I'm not sure : Ladyada suggested 60 hz pulses (1/60 = 16.67 milliseconds). No luck.
(from the adafruit page)
Apparently, this is due to the blanking time.
Ladyada suggested 60 hz pulses (1/60 = 16.67 milliseconds). No luck. Then she said to use only the blanking time within the 16.67 microseconds which is 1.5 milliseconds. So out of each 60th of a second, have the on/off bit active for 1.5 milliseconds, then off for the remaining 15.167 milliseconds. Also, you must account for some instruction execution time. I shaved the on pulse down time to 15 ms.
Apparently, it's the woman who managed to find R.O.B.'s timing of operation.
she's also arduino CEO as i see it
(It's on this page I sent before. https://learn.adafruit.com/controlling-a-classic-nintendo-r-o-b-robot-using-circuit-playground-express/control-via-led )
...Oh !
ho no ok she's a very known engineer for her work on arduino and she hold a blog with tutorial to learn it
ok
But, if I'm correct (not really a big master about CRTs), the blanking time is the the time the tube takes to be back to it's original position, to start the next frame.
Me neither...
But as I understand, an LCD screen, even a really fast gaming one, can't reproduce that...
yes
(My screen can go to 144Hz, but, I suppose it's still not fast enough, frames take 6.9 milliseconds at this rate.)
on the page you sent it looks like they used an external arduino with led on it to reproduce it
wich can go extremly fast
Yeah, I've seen another project (based on this page), of small goggles to put on R.O.B.'s head, with a little fast circuit inside, and a LED, to operate it, but...They're not in stock anymore... https://www.tindie.com/products/cxelectronics/bluetooth-control-goggles-for-rob-nintendo/
(Oh ! And, your Discord name's looks to be french, I'm french too ! But I suppose it's better to speak english here)
And...With a Raspberry Pi ? I know we can connect leds to a Raspberry Pi. Can a pi be that fast
?
void loop() {
if(data) {
digitalWrite(LEDpin,HIGH)
delayMicroseconds(15000)
}
digitalWrite(LEDpin,HIGH)
}
this is the arduino code you could use
all arduino work at like 90000hz
soo
i worked with arduino uno in the past it work well
if the software use delay in microseconds its fast enough
Yeah, I see ! I don't have an arduino, perhaps I can buy one, but...I wanted to buy a Rasberry Pi for other purposes. It would be cool if the Pi can do it too !
it can with no problem
pi is 40$ something i think
a set of led is like 0.10
doable
Yeah, not now, because of the semiconductor crisis, but I'll hope they get back to this price soon.
I'll suppose I'll try with a Pi, so !
I still hope someday PC screens will be fast enough to operates R.O.B.^^
It was really fun to play Gyromite on the CRT screen, I thought it would be a good Unity exercice to try to do a PC version of Gyromite, but, if the PC can't operate R.O.B., that's not really fun...
yeah
As I now, the fastest PC screens of the market can go up to 300 Hz, if my calculations are correct, it's fast enough, but they are really, really expansive.
....yeah, forgot one zero, 300 is not fast enough.--'
It's far easier to use the CRT, but the CRT is really to big.--'
So, I think the question is answered. Thanks for your help !
no problem
...I understood !
I think I know how R.O.B. works.
Here's how.
When a frame begin, if the TV needs to send a 1 value, the screen turns green. The drawing time is 1.5 milliseconds.
Then, the tube resets it's position, during the rest of the frame. Because the tube is not active during that time, the screens turns black.