Vertical Sync sensor: Difference between revisions
Jump to navigation
Jump to search
Wiki-admin (talk | contribs) |
mNo edit summary |
||
| (29 intermediate revisions by 4 users not shown) | |||
| Line 1: | Line 1: | ||
{{Infobox tsg | {{Infobox tsg | ||
| name = | | name = Vertical Sync sensor | ||
| image = | | image = sensorPic.jpg | ||
| caption = | | caption = Vertical Sync sensor | ||
}} | |||
{{Infobox tsg | |||
| name = Seeed Studio XIAO SAMD21 | |||
| image = Seeeduino_XIAO.JPG | |||
| caption = Seeed Studio XIAO SAMD21 | |||
| downloads = {{bulleted list | |||
| [https://wiki.seeedstudio.com/Seeeduino-XIAO/ XIAO SAMD21 product page] | |||
}} | |||
}} | |||
{{Infobox tsg | |||
| name = TEMT6000 Licht Sensor Module | |||
| image = temt6000.jpg | |||
| caption = TEMT6000 Licht Sensor Module | |||
| downloads = {{bulleted list | | downloads = {{bulleted list | ||
| | | {{Surfdrive|https://surfdrive.surf.nl/s/ZC2axMNWjYaTYFG|TEMT6000 Datasheet}} | ||
}} | }} | ||
}} | }} | ||
The Vertical Sync sensor is used on a computer/laptop monitor for time accurate visual presentation. The sensor measures screen brightness. It generates a BITSI trigger("A" = ON/light, "a" = OFF/noLight) when the amount of light is higher than the (customizable) threshold | The Vertical Sync sensor is used on a computer/laptop monitor for time accurate visual presentation. The sensor measures screen brightness. It generates a BITSI trigger to the com-port("A" = ON/light, "a" = OFF/noLight) when the amount of light is higher than the (customizable) threshold. This means that the onset of visual stimulus on screen can be marked. It can easily be attached with a pincher to the screen. The Vertical Sync sensor is connected to a computer with a usb connection, a serial port is emulated. You may want to read about [[presentation modes]] in order to decide how to use the sync sensor. | ||
== BITSI Protocol == | == BITSI Protocol == | ||
| Line 26: | Line 38: | ||
|} | |} | ||
Meaning when light falls on the sensor, a capital A will be sent to the serial port. A lowercase 'a' will be sent when the signal is deactivated(no light). | |||
===Output=== | ===Output=== | ||
The treshold for OFF is customizable and can be specified by sending a | The treshold for monitor OFF is customizable and can be specified by sending a byte to specify the value for screen OFF. Any byte satisfies, see example code. | ||
== Port Settings == | == Port Settings == | ||
| Line 82: | Line 92: | ||
== Software Settings == | == Software Settings == | ||
=== | === Python/PsychoPy === | ||
The | <br/>'''The basics using the Vertical Sync sensor in PsychoPy:''' | ||
<syntaxhighlight lang="python" line> | |||
# initialize treshold for OFF by sending a code | |||
ser.write(b'1') | |||
visual.Rect(win, .15, .25, pos=(-1, 1),fillColor="white", units="norm").draw() | |||
win.flip() | |||
# wait for a sync square | |||
b = ser.read() | |||
</syntaxhighlight> | |||
<br/>'''Example script using the Vertical Sync sensor in PsychoPy:''' | |||
<br/>'''Example using the Vertical Sync sensor in PsychoPy:''' | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
| Line 115: | Line 117: | ||
## Setup Section | ## Setup Section | ||
win = visual.Window([400,400], fullscr=True, winType = "pyglet", monitor="testMonitor",color=(-1, -1, -1), | win = visual.Window([400,400], fullscr=True, winType = "pyglet", monitor="testMonitor",color=(-1, -1, -1), waitBlanking=True) | ||
# connect to Vertical Sync sensor, find correct com port number | |||
# connect to Vertical Sync sensor, find com port number | |||
ser = serial.Serial('com3', 115200, timeout=1.0) | ser = serial.Serial('com3', 115200, timeout=1.0) | ||
# create sync box left corner | |||
rect = visual.Rect(win, .15, .25, pos=(-1, 1),fillColor="white", units="norm") | rect = visual.Rect(win, .15, .25, pos=(-1, 1),fillColor="white", units="norm") | ||
# define | # wait 5 sec for python to become stabel | ||
core.wait(5) | |||
ser.flushInput() | |||
# define screen OFF by sending a code | |||
ser.write(b'1') | ser.write(b'1') | ||
## Experiment Section | ## Experiment Section | ||
# show | # show sync box left corner | ||
rect.draw() | rect.draw() | ||
win.flip() | win.flip() | ||
tik = time.perf_counter() | |||
# wait for a sync square | # wait for a sync square | ||
b = ser.read() | b = ser.read() | ||
tok = time.perf_counter() | |||
# show | # show delay after a flip | ||
print("your timing: {}s".format(tik | print("your timing after a flip: {}s".format(tok-tik)) | ||
# as a remark 60Hz/~0.016s 120Hz/~0.008s | |||
## Cleanup Section | ## Cleanup Section | ||