Das Objekt PinAus Attraktor WikiVersion vom 21. Januar 2024, 10:47 Uhr von Kapest (Diskussion | Beiträge) In Python ist alles ein Objekt und Objekte haben eine ID.
Nach dem StartDirekt nach dem Einschalten sehen die Pins folgendermassen aus: MicroPython v1.21.0 on 2023-10-06; Raspberry Pi Pico W with RP2040 Type "help()" for more information. >>> from machine import Pin >>> for i in range(30): print(i,id(Pin(i)),Pin(i)) 0 268906036 Pin(GPIO0, mode=ALT, pull=PULL_DOWN, alt=31) 1 268905924 Pin(GPIO1, mode=ALT, pull=PULL_DOWN, alt=31) 2 268905812 Pin(GPIO2, mode=ALT, pull=PULL_DOWN, alt=31) 3 268905700 Pin(GPIO3, mode=ALT, pull=PULL_DOWN, alt=31) 4 268905588 Pin(GPIO4, mode=ALT, pull=PULL_DOWN, alt=31) 5 268905476 Pin(GPIO5, mode=ALT, pull=PULL_DOWN, alt=31) 6 268905364 Pin(GPIO6, mode=ALT, pull=PULL_DOWN, alt=31) 7 268905252 Pin(GPIO7, mode=ALT, pull=PULL_DOWN, alt=31) 8 268905140 Pin(GPIO8, mode=ALT, pull=PULL_DOWN, alt=31) 9 268905028 Pin(GPIO9, mode=ALT, pull=PULL_DOWN, alt=31) 10 268904916 Pin(GPIO10, mode=ALT, pull=PULL_DOWN, alt=31) 11 268904804 Pin(GPIO11, mode=ALT, pull=PULL_DOWN, alt=31) 12 268904692 Pin(GPIO12, mode=ALT, pull=PULL_DOWN, alt=31) 13 268904580 Pin(GPIO13, mode=ALT, pull=PULL_DOWN, alt=31) 14 268904468 Pin(GPIO14, mode=ALT, pull=PULL_DOWN, alt=31) 15 268904356 Pin(GPIO15, mode=ALT, pull=PULL_DOWN, alt=31) 16 268904244 Pin(GPIO16, mode=ALT, pull=PULL_DOWN, alt=31) 17 268904132 Pin(GPIO17, mode=ALT, pull=PULL_DOWN, alt=31) 18 268904020 Pin(GPIO18, mode=ALT, pull=PULL_DOWN, alt=31) 19 268903908 Pin(GPIO19, mode=ALT, pull=PULL_DOWN, alt=31) 20 268903784 Pin(GPIO20, mode=ALT, pull=PULL_DOWN, alt=31) 21 268903660 Pin(GPIO21, mode=ALT, pull=PULL_DOWN, alt=31) 22 268903536 Pin(GPIO22, mode=ALT, pull=PULL_DOWN, alt=31) 23 268903412 Pin(GPIO23, mode=ALT, alt=31) 24 268903288 Pin(GPIO24, mode=ALT, alt=31) 25 268903164 Pin(GPIO25, mode=ALT, pull=PULL_DOWN, alt=31) 26 268903052 Pin(GPIO26, mode=ALT, pull=PULL_DOWN, alt=31) 27 268902940 Pin(GPIO27, mode=ALT, pull=PULL_DOWN, alt=31) 28 268902828 Pin(GPIO28, mode=ALT, pull=PULL_DOWN, alt=31) 29 268902716 Pin(GPIO29, mode=ALT, pull=PULL_DOWN, alt=31) >>> Die ID's der Pin-Objekte sind immer gleich! Egal, wann die Pins initialisiert werden, es bekommt jeder Pin immer dieselbe ID! Diese ID unterscheidet sich aber bei unterschiedlichen Micropython Versionen. Weitere UntersuchungenDie Instanz Pin(11) existiert, auch wenn GPIO11 noch nicht initialisiert worden ist: >>> from machine import Pin >>> id(Pin(11)) 268904804 Sie besitzt auch schon einige default Einstellungen: >>> print(Pin(11)) Pin(GPIO11, mode=ALT, pull=PULL_DOWN, alt=31) # Nach einem Hardware-Reset Pin(GPIO11, mode=IN, pull=PULL_DOWN) # Nach einem Software-Reset bleiben die vorherigen Einstellungen erhalten Wenn eine Instanz von Pin erzeugt wird, so wird ihr ein Namen zugewiesen und ggf. die Einstellungen gesetzt: >>> b_up = Pin(11, Pin.IN, Pin.PULL_DOWN) >>> id(b_up) 268904804 >>> print(b_up) Pin(GPIO11, mode=IN, pull=PULL_DOWN) Eine solche Instanz kann auch mehrere Namen haben: >>> x = b_up >>> print(x) Pin(GPIO11, mode=IN, pull=PULL_DOWN) >>> id(x) 268904804 Es bleibt aber immer die selbe ID, also auch das selbe Objekt.
>>> Pin(11) == b_up True >>> Pin(11) == x True >>> Pin(11) is b_up True >>> Pin(11) is x True
|