# GPIO: code verbinden met knoppen en lampjes [Begrippen uitgelegd](LEESMIJ.md) **GPIO** betekent *General Purpose Input/Output*: algemene in- en uitvoer. Een pin als ingang leest een elektrisch niveau; een uitgang stelt er één in. Raspberry Pi-GPIO gebruikt 3,3-voltlogica. Zie [de GPIO-uitleg van Raspberry Pi](https://pip-assets.raspberrypi.com/categories/685-whitepapers-app-notes/documents/RP-006553-WP/A-history-of-GPIO-usage-on-Raspberry-Pi-devices-and-current-best-practices) (Engels). De connector heeft ook voedings- en aardepinnen, die je niet kunt verwisselen met programmeerbare GPIO. Bekijk het [officiële GPIO-overzicht](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header) (Engels). ## Van een signaal naar een beslissing Pliro stelt digitale pinniveaus voor als Boolean-waarden: `waar` of `onwaar`. De bedrading van een knop bepaalt of ingedrukt hoog of laag betekent. Je programma moet de afspraak gebruiken van het onderdeel dat het uitleest. | Idee | Pliro-bewerking | Voorbeeld | | --- | --- | --- | | Een uitgang instellen | `pinUitgang(pin)` | Een pin voorbereiden op een ledsignaal. | | Een ingang instellen | `pinIngang(pin)` | Een pin voorbereiden op een knopsignaal. | | Een uitgangsniveau kiezen | `schrijfPin(pin, waarde)` | Hoog instellen met `waar`. | | Een logisch niveau lezen | `leesPin(pin)` | Een ingang gebruiken in een `als`-voorwaarde. | Stel elke pin vóór gebruik in. Schrijven vereist een uitgang en een Boolean. Een uitgang lezen geeft de laatst succesvol geschreven waarde; een ingang lezen geeft het huidige logische niveau. Pliro accepteert gehele BCM-pinnummers van 0 tot en met 27. ## Oefenen zonder draden Voer dit uit in de IDE en bekijk virtuele BCM 17 in de hardwarewerkbank: ```pliro # taal: nl laat ledPin = 17 pinUitgang(ledPin) schrijfPin(ledPin, waar) wacht(1) schrijfPin(ledPin, onwaar) zeg leesPin(ledPin) ``` De uitgang wordt één seconde hoog en daarna laag. De console toont `false`, de tekstweergave van de Boolean-waarde `onwaar`. Maak de wachttijd eens twee seconden. Interpreter- en browsersessies gebruiken virtuele pinnen. Een ingang begint als `onwaar`, tenzij een uitvoeromgeving, zoals het virtuele onderdeel in de IDE, een waarde levert. Deze code in de IDE uitvoeren bedient geen fysieke Pi. Een geëxporteerde applicatie voor een expliciet [Raspberry Pi-doel](raspberry-pi.md) gebruikt het Linux-GPIO-apparaat wanneer je haar op die Pi uitvoert. Ontbrekende apparaattoegang wordt als uitvoerfout gemeld. ## Zoek de aansluiting bij de naam **BCM-nummering** benoemt het GPIO-signaal, niet de plek op de connector. Op de standaardconnector met 40 pinnen is BCM 17 fysieke pin 11. Volg het schema van jouw bord. Gebruik een weerstand bij een led, zet nooit 5 V op een GPIO-ingang en gebruik een geschikte driver in plaats van een motor rechtstreeks aan te sluiten. Zie de [aansluitrichtlijnen van de fabrikant](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#gpio-and-the-40-pin-header) (Engels). ## Een digitale sensor geeft een ja-of-nee-antwoord Een drempelsensor in Pliro's werkbank kan aangeven of een waarde een gekozen grens passeert. `leesPin` geeft nog steeds een Boolean, geen temperatuur of doorlopend veranderende spanning. Denk aan “boven de grens?” in plaats van “hoeveel graden?” [Gids voor pinbesturing](../gidsen/pinnen-besturen.md) · [Raspberry Pi](raspberry-pi.md) · [Boolean-waarden](../syntaxis/booleaanse-waarden.md)