A light detection and ranging (LIDAR) device (10, 100), comprising: a pulsed illumination source configured to emit a sequence of pulses of illumination light having a first repetition pattern from the LIDAR device (10, 100) into a three dimensional environment; a photosensitive detector configured to detect an amount of light reflected from the three dimensional environment illuminated by each of the pulses of illumination light and generates an output signal indicative of the detected amount of light associated with each of the pulses of illumination light; characterized by a set of energy storage elements coupled to the pulsed illumination source, wherein the number of the energy storage elements in the set that are simultaneously coupled to the pulsed illumination source is adjusted to control an amplitude and timing of a current signal provided to the pulsed illumination source; and a computing system configured to: receive the output signal indicative of the detected amount of light; determine a distance between the LIDAR device (10, 100) and an object in the three dimensional environment based on a difference between a time when a pulse is emitted from the LIDAR device (10, 100) and a time when the photosensitive detector detects an amount of light reflected from the object illuminated by the pulse of illumination light; and generate a command signal that causes the current signal provided to the pulsed illumination source to be generated based on the number of the energy storage elements, to change the sequence of pulses of illumination light to a second repetition pattern that is different from the first repetition pattern in that the first repetition pattern and the second repetition pattern have different pulse sequences. a pulsed illumination source configured to emit a sequence of pulses of illumination light having a first repetition pattern from the LIDAR device (10, 100) into a three dimensional environment; a photosensitive detector configured to detect an amount of light reflected from the three dimensional environment illuminated by each of the pulses of illumination light and generates an output signal indicative of the detected amount of light associated with each of the pulses of illumination light; characterized by a set of energy storage elements coupled to the pulsed illumination source, wherein the number of the energy storage elements in the set that are simultaneously coupled to the pulsed illumination source is adjusted to control an amplitude and timing of a current signal provided to the pulsed illumination source; and a computing system configured to: receive the output signal indicative of the detected amount of light; determine a distance between the LIDAR device (10, 100) and an object in the three dimensional environment based on a difference between a time when a pulse is emitted from the LIDAR device (10, 100) and a time when the photosensitive detector detects an amount of light reflected from the object illuminated by the pulse of illumination light; and generate a command signal that causes the current signal provided to the pulsed illumination source to be generated based on the number of the energy storage elements, to change the sequence of pulses of illumination light to a second repetition pattern that is different from the first repetition pattern in that the first repetition pattern and the second repetition pattern have different pulse sequences. receive the output signal indicative of the detected amount of light; determine a distance between the LIDAR device (10, 100) and an object in the three dimensional environment based on a difference between a time when a pulse is emitted from the LIDAR device (10, 100) and a time when the photosensitive detector detects an amount of light reflected from the object illuminated by the pulse of illumination light; and generate a command signal that causes the current signal provided to the pulsed illumination source to be generated based on the number of the energy storage elements, to change the sequence of pulses of illumination light to a second repetition pattern that is different from the first repetition pattern in that the first repetition pattern and the second repetition pattern have different pulse sequences.