如何修复 ESP32 MicroPython 'ValueError: pin can only be input'
问题:
你正在尝试使用 MicroPython 初始化 ESP32 引脚
micropython_pin_example.py
import machine
machine.Pin(34, machine.Pin.OUT)但你看到类似这样的错误消息
micropython_pin_error_output.txt
>>> machine.Pin(34, machine.Pin.OUT)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: pin can only be input解决方案
在 ESP32 上,编号 >= 34 的引脚是仅输入引脚!
如果你需要输出功能,需要使用 < 34 的其他引脚!
供参考,请参见相关的 MicroPython 源代码部分:
micropython_machine_pin.c
// 配置模式
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);
}
}Check out similar posts by category:
Embedded, MicroPython, Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow