The function setADCSampleTime(duration) is used to change the default sample time for analogRead().

On the Photon, P1, Electron, and E-Series this parameter can be one of the following values (ADC clock = 30MHz or 33.3ns per cycle):

  • ADC_SampleTime_3Cycles: Sample time equal to 3 cycles, 100ns
  • ADC_SampleTime_15Cycles: Sample time equal to 15 cycles, 500ns
  • ADC_SampleTime_28Cycles: Sample time equal to 28 cycles, 933ns
  • ADC_SampleTime_56Cycles: Sample time equal to 56 cycles, 1.87us
  • ADC_SampleTime_84Cycles: Sample time equal to 84 cycles, 2.80us
  • ADC_SampleTime_112Cycles: Sample time equal to 112 cycles, 3.73us
  • ADC_SampleTime_144Cycles: Sample time equal to 144 cycles, 4.80us
  • ADC_SampleTime_480Cycles: Sample time equal to 480 cycles, 16.0us (default)

The default is ADC_SampleTime_480Cycles. This means that the ADC is sampled for 16 us which can provide a more accurate reading, at the expense of taking longer than using a shorter ADC sample time. If you are measuring a high frequency signal, such as audio, you will almost certainly want to reduce the ADC sample time.

Furthermore, 5 consecutive samples at the sample time are averaged in analogRead(), so the time to convert is closer to 80 us, not 16 us, at 480 cycles.


setADCSampleTime is not supported on the P2, Photon 2, or Gen 3 devices (Argon, Boron, B-Series SoM, Tracker SoM).