#R.O.B light flicker

1 messages · Page 1 of 1 (latest)

marble sandal
coarse mortar
#

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.

marble sandal
#

imma read that

#

do you have an online documentation ?

coarse mortar
marble sandal
#

what is he running the program on in the exemple

coarse mortar
#

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

marble sandal
#

so basically what your trying to do is possible software wise but hardware is the problem modern screen cant take such low time frame

coarse mortar
#

I see.

marble sandal
#

you can do the the program with the command i sent you before

#

but you won't be able to run it

coarse mortar
#

I see. I understand...

marble sandal
#

you could use an arduino if you have the found

coarse mortar
#

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...

marble sandal
#

a classic adapter can work to go from hdmi to crt

#

you could try that

coarse mortar
#

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.

marble sandal
#

it would yes

coarse mortar
#

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...^^'

marble sandal
#

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
coarse mortar
#

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.

marble sandal
#

who is ladyada ?

#

creator ?

coarse mortar
#

Apparently, it's the woman who managed to find R.O.B.'s timing of operation.

marble sandal
#

she's also arduino CEO as i see it

coarse mortar
#

...Oh !

marble sandal
#

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

coarse mortar
#

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.

marble sandal
#

yes

#

but i don't know what they mean by using the blank time

coarse mortar
#

Me neither...

#

But as I understand, an LCD screen, even a really fast gaming one, can't reproduce that...

marble sandal
#

yes

coarse mortar
#

(My screen can go to 144Hz, but, I suppose it's still not fast enough, frames take 6.9 milliseconds at this rate.)

marble sandal
#

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

coarse mortar
#

(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
?

marble sandal
#
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

coarse mortar
#

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 !

marble sandal
#

it can with no problem

#

pi is 40$ something i think

#

a set of led is like 0.10

#

doable

coarse mortar
#

Yeah, not now, because of the semiconductor crisis, but I'll hope they get back to this price soon.

marble sandal
#

true

#

walk to the factory

coarse mortar
#

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.^^

marble sandal
#

about that

#

welcome to the 1000W monitor

#

bye bye electricity bill

coarse mortar
#

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...

marble sandal
#

yeah

coarse mortar
#

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.

marble sandal
#

imma need to look into how rob worked

#

hmmm you need

#

hz

coarse mortar
#

....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 !

marble sandal
#

no problem

coarse mortar
#

...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.