====== std.hardware.gpio_pin ====== **Typsichere Pin-Wrapper.** Ein ''GpioOutputPin'' kennt nur ''Write'', ein ''GpioInputPin'' nur ''Read'' — der Compiler weist jeden Versuch ab, einen Eingang zu beschreiben oder einen Ausgang zu lesen. Das ist der Unterschied zwischen einem Fehler beim Übersetzen und einem stillen Fehlverhalten in der Anlage. Beide Wrapper sind 16 Byte groß und halten den GPIO-Kontext plus die Pin-Nummer. Der Ablauf ist immer derselbe: ''Alloc'' → ''Init'' (mit Pull-Modus) → beliebig oft ''Read''/''Write'' → ''Free''. Der zugrunde liegende Kontext aus [[lyx_-_programmiersprache:units:hardware:gpio_mmio|std.hardware.gpio_mmio]] muss dabei offen bleiben. [[lyx_-_programmiersprache:units:hardware:gpio|std.hardware.gpio — Übersicht]] · [[lyx_-_programmiersprache:guides:gpio|GPIO-Guide]] · [[lyx_-_programmiersprache:units|Standard Library]] ---- ===== Schnittstelle ===== ^ Signatur ^ | ''GpioOutputPinAlloc(gpio_ctx: int64, pin_nr: int64): int64'' | | ''GpioOutputPinInit(pin_ctx: int64, pull: int64): int64'' | | ''GpioOutputPinWrite(pin_ctx: int64, state: int64): int64'' | | ''GpioOutputPinFree(pin_ctx: int64)'' | | ''GpioInputPinAlloc(gpio_ctx: int64, pin_nr: int64): int64'' | | ''GpioInputPinInit(pin_ctx: int64, pull: int64): int64'' | | ''GpioInputPinRead(pin_ctx: int64): int64'' | | ''GpioInputPinFree(pin_ctx: int64)'' | ^ Konstante ^ Wert ^ Bedeutung ^ | ''GPIO_PIN_CTX_SIZE'' | ''16'' | – | ---- ===== Beispiel ===== import std.hardware.gpio_mmio; import std.hardware.gpio_pin; fn main(): int64 { var ctx := GpioCtxAlloc(); GpioInit(ctx); var led := GpioOutputPinAlloc(ctx, 18); GpioOutputPinInit(led, GPIO_PULL_NONE); GpioOutputPinWrite(led, GPIO_PIN_HIGH); var btn := GpioInputPinAlloc(ctx, 17); GpioInputPinInit(btn, GPIO_PULL_UP); var gedrueckt: int64 := GpioInputPinRead(btn); GpioInputPinFree(btn); GpioOutputPinFree(led); GpioClose(ctx); GpioCtxFree(ctx); return 0; } Quelle: ''std/hardware/gpio_pin.lyx'' · geprüft mit ''lyxc 1.0.21A'' · Stand 2026-08-12 Codebeispiele geprüft: gegen **lyxc 1.2.5C** übersetzt (Prüflauf 2026-09-08 über die gesamte Doku: 574 Vollprogramme, 0 echte Fehler; zusätzlich 5159 Aufrufe gegen die ''pub fn''-Signaturen in ''aurum/std'' gehalten, 0 Abweichungen). ---- Letzte Aktualisierung: 2026-08-30 (Dateistand)