Can Pico use IO0 for analog in?

Hi all,

I guess the title says it all. Is this something Pico can support without the expansion board? Thank you.

Unfortunately gpio0 is on the forbidden ADC2 peripheral. Also, if it is held low during power on, it will put the ESP32 into bootloader mode and won’t function.

It is best used as a normally-high input, like a button (the Pixelblaze V2 used gpio0 of the esp8266 for this purpose), or as an active-low output as it will float high during boot before a pattern runs.

The touch sensor is also connected to that pin, so it could be used as a capacitive touch sensor.

1 Like

Thank you. If I understood you correctly, it appears that another input (button) on pico is capable of getting analog input. Is this indeed correct and already supported by the OS? If so, what are the limitations? Is the button constantly in the “on” state until pressed, so that passing signal through that pin will work even if the button is not pressed? Again, thank you for your help.

No, the button can’t be used. Putting analog on the pin the button is on would interfere with the button handling code.

You can use digital signals on gpio0 though, with the above caveats.

1 Like

I don’t know if this is an acceptable solution for you, Ico, but you could use one of the A/D converters from a sensor board connected to the Pico. However, if you’re using a Pico, space constraints might preclude this.

1 Like

Thank you both. Does GPIO0 support PWM or onewire protocol?

No, sorry.

If you’re looking to output analog voltages though, (and are driving WS28XX LEDs) you can use a WS2811 chip in the sequence of LEDs and write three channels worth of 8-bit values to it! Filter the output through an RC circuit to a produce analog levels.

For data out, Websockets may be of some use depending on your need.

If you explain your design goals, we might be able to help think of something else!

1 Like

Thank you, @jeff. I am looking to capture analog sensor data (voltage ranging from 0-3.3v-ish) and I know that the regular PixelBlaze be can do this over pin33. It would be nice if Pico could do it, as well, given its attractive form factor. Not sure if either own or onewire can be used for input…

Ah, I see. I should’ve inferred you meant using IO0 as input (measuring PWM or receiving 1-Wire). I don’t know a great way for the Pico to do this. Can you do your project with a v3 (regular form factor) instead?

1 Like

Yes, that is currently what I am using. Was hoping to go to an even smaller form factor, though, with the integration of features on the main board being highly preferred.