## 5 Methodology
### Methods
#### 5.2.3 Procedures  
We tested the experimental setup using the n-pulse modulation scheme with various transmitter and receiver parameters. For the transmitter, we employed different light offsets (Lux), ranging from subtle illumination (13 Lux) to high brightness (75 Lux), ensuring operation within the safe range of the LED's capabilities. We also tested different frequency values (Hz), which closely aligned with the findings of [19]. For the modulation, we used different values of duty cycle (\(D\)) and a maximum number of pulses \(n_{\text{max}}\) equal to 4, encoding 2 bits per symbol, as explained in Section 4.1. By selecting these parameters, we tried to strike a balance between the number of modulated bits per symbol and the low cardinality of the symbol set. For the receiver, we used different bias sensitivity values. As explained in Section 3.1, this parameter sets the temporal contrast threshold and the refractory period values. This setting determines the camera's ability to detect, for instance, subtle luminosity variations or rapid changes in the stimulus generated by the transmitter. We transmitted a random word encoded with ASCII code. Each character was represented by eight bits, and the word length consisted of 50 characters. This transmission was repeated 20 times. In total, we transmitted 8000 bits. For each character, we used a start frame delimiter every 8 bits (4 symbols in this setup) and an additional extra guard time of 1 symbol, as explained in Section 5.2.2. The system initiated the detection of modulated lights, identifying pixels that exhibited spikes caused by the blinking LED. It constructed a synthetic frame by aggregating all events (both positive and negative) for each pixel. Subsequently, the synthetic frame values were normalized to obtain \"intensity\" values ranging from 0 to 255. Then, to distinguish the presence of the blinking LED pixels from the rest, an automatic image thresholding technique was applied, namely [PERSON]'s method [8]. This method segregated pixels into two classes, one that corresponded to pixels stimulated by the LED (high number of events) and the other by different noise sources or not stimulated (low numbers of events) [28]. This method is effective as long as the receiver and transmitter remain stationary. Then, for the group of pixels stimulated by the light source, the demodulator performed the alignment process for the received event data. It detected the start frame delimiter by counting transitions from positive events followed by negative events throughout 2 symbol periods, as explained in Section 5.2.1. When the count exceeded the potential number of maximum transitions for n-pulse-modulated symbols, detection was achieved. After this, the demodulator performed the symbol decoding process, counting transitions of events for every symbol period (considering the extra guard time used). Finally, the demodulator searched for the next SFD, and the process was repeated. All operations were coordinated by a computer. Consequently, to conduct the experiments, the computer initially configured the signal waveform generator to set up the LED with specific frequency and amplitude values. Subsequently, data representing the signal were generated and loaded into the signal waveform generator using a script. This script took as input the characters to be encoded and the modulation parameters (maximum number (\(n_{\text{max}}\)) and duty cycle (\(D\))). Once all configurations were completed, the computer  
Figure 8: The signal at the transmitter side consisted of four symbols (1, 2, 3, 4) followed by a start frame delimiter and an additional four symbols (1, 2, 3, 4). The inclusion of an extra guard time \(T_{\text{g}}\) resulted in improved separability of the signal at the receiver. proceeded to gather events with the camera and sent the start signal to the LED to initiate data transmission for a specific duration (in seconds).