Reliability of the tachistoscope
Important question is:
what I put in as presentation time will it also come out?

Therefore we have to develop a measurement method to verify that.

The simplest thing and cheapest thing is to connect a microprocessor(Arduino) to a photoelectric cell and register every millisecond the value of the light that comes out of the lens of the tachistoscope.
One can also use an oscilloscope and a photoelectric cell to measure the presentation time.

Then we let the tachistoscope lcd light flash for e.g. 100 milliseconds and followed by a pause of e.g. 2000 milliseconds (not a too short pause because the SSR relais has to reset itself)
Register the measured values and check whether the time corresponds with the intended presentation time.

In the next measurement we let the lcd flash e.g. 50 milliseconds with a pause of 2000 milliseconds
and so on: flash 5 milliseconds.

With a microprocessor its even possible to measure with microseconds.




Photoelectric cell 3,50 euro
First measurement results in microseconds:
flash of 10 milliseconds
Sensor: Lichtsensor ALS-PT19 analoog - Adafruit 2748
Arduino routine pulseIn() is used:

void loop()  {
   noInterrupts(); 
   duration = pulseIn(pin, HIGH);  // default timeout is 1 second
   interrupts();
   if (duration != 0) {
   Serial.println(duration);
   delay(500); // wait half a second
      }
}
In fact the above measurement is wrong. In the Arduino discription of the pulseIn() command it says that the interrupt routine should be "on":
A second measurement was performed with the following sketch:

int pin = 7;

unsigned long duration;


void setup()
{
  Serial.begin(9600);     //start setial port at 9600 baud
  Serial.print("10 ms, interrupts on, first light-sensor ALS-PT19");
  Serial.println("");
 

  pinMode(pin, INPUT);
  digitalWrite(pin, LOW); 
  interrupts();  // activate interrupts for pulsIn() command                                                               
                                                                     
}

void loop()  {
  
   duration = pulseIn(pin, HIGH);  // default timeout is 1 second
  
   if (duration != 0) {
   Serial.println(duration); // toegevoegd
                                                                     
  }
}
Results of this measurement in microseconds even more accurate:
The measurement overview:
Arduino-2 Sketch to measure the flash:

int pin = 7;

unsigned long duration;


void setup()
{
  Serial.begin(9600);     //start setial port at 9600 baud
  Serial.print("10 ms, interrupts on, first light-sensor ALS-PT19");
  Serial.println("");
 

  pinMode(pin, INPUT);
  digitalWrite(pin, LOW); 
  interrupts();  // activate interrupts for pulsIn() command                                                               
                                                                     
}

void loop()  {
  
   duration = pulseIn(pin, HIGH);  // default timeout is 1 second
  
   if (duration != 0) {
   Serial.println(duration); // toegevoegd
                                                                     
  }
}
Arduino-1 Sketch to present the LED flash:

void setup() {
 
  pinMode(13, OUTPUT);      // initialize digital pin 13 as an output.
}

void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(10);                // wait for 10 milliseconds
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(2000);              // wait for a second or two
}