Problem:
You are trying to initialize an ESP32 pin in MicroPython using
import machine machine.Pin(34, machine.Pin.OUT)
but you see an error message like
>>> machine.Pin(34, machine.Pin.OUT) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: pin can only be input
Solution:
On the ESP32, pins with numbers >= 34
are input-only pins!
You need to use other pins < 34
if you need output capability!
For reference, see the relevant MicroPython source code section:
// configure mode if (args[ARG_mode].u_obj != mp_const_none) { mp_int_t pin_io_mode = mp_obj_get_int(args[ARG_mode].u_obj); if (self->id >= 34 && (pin_io_mode & GPIO_MODE_DEF_OUTPUT)) { mp_raise_ValueError("pin can only be input"); } else { gpio_set_direction(self->id, pin_io_mode); } }