ESP32 MicroPython-Fehler beheben: 'ValueError: pin can only be input'

English Deutsch

Problem:

Sie versuchen, einen ESP32-Pin in MicroPython zu initialisieren mit

micropython_pin_example.py
import machine
machine.Pin(34, machine.Pin.OUT)

aber Sie sehen eine Fehlermeldung wie

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

Lösung

Auf dem ESP32 sind Pins mit Nummern >= 34 nur-Eingabe-Pins!

Sie müssen andere Pins < 34 verwenden, wenn Sie Ausgabefähigkeit benötigen!

Als Referenz siehe den entsprechenden MicroPython-Quellcode-Abschnitt:

micropython_machine_pin.c
// Modus konfigurieren
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