3.4. Pinnen en randapparaten¶
Een pin is het eenvoudigste randapparaat op de MCU: een enkele draad die de chip met de buitenwereld verbindt. Elke interactie met echte hardware – een led aansturen, een schakelaar uitlezen, een spanning meten, bytes verzenden over een seriële lijn – verloopt uiteindelijk via een of meer pinnen.
3.4.1. Pinmodi¶
Een pin wordt geconfigureerd in een van enkele modi voordat hij iets nuttigs doet:
Pin.IN– invoer. De pin observeert de spanning die er van buitenaf op wordt gezet en rapporteert die als0(laag) of1(hoog).Pin.OUT– uitvoer. De pin stuurt zichzelf aan naar ofwel de voedingsspanning (1) ofwel de massa (0), zodat externe componenten die spanning zien.Pin.OPEN_DRAIN– uitvoer die de lijn alleen laag kan trekken. Om hoog te gaan laat de pin los (gaat zwevend) en tilt een externe pull-up-weerstand de lijn op. Gebruikt voor gedeelde bussen waar meerdere apparaten dezelfde lijn kunnen aansturen.
Invoeren kunnen optioneel een interne pull-weerstand inschakelen die een gedefinieerd niveau garandeert wanneer niets externs de pin aanstuurt:
Pin.PULL_UP– zwakke pull naar de voedingsrail.Pin.PULL_DOWN– zwakke pull naar de massa.
De constructor neemt id, mode en pull als positionele argumenten:
from machine import Pin
led = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)
3.4.2. Alternatieve functies¶
De meeste pinnen hebben naast hun GPIO-rol een alternatieve functie. Een enkele fysieke pad op de chip kan zijn:
Een digitale invoer of uitvoer (
machine.Pin).Een ADC-invoer die spanning meet (
machine.ADC).Een PWM-uitvoer die een blokgolf uitstuurt (
machine.PWM).De TX- of RX-lijn van een UART (
machine.UART).
Andere randapparaten (verdere seriële bussen, timers, enzovoort) claimen ook specifieke pinnen; de chipontwerper bedraadt elk hardwareblok aan een vaste set pads. De ADC bemonstert alleen pinnen die naar zijn multiplexer zijn geleid; een UART zendt op de ene pin waaraan zijn TX-signaal is bedraad.
Notitie
OpenMV-cams labelen de externe-connectorpinnen P0 tot P9 (varieert licht per board). Welke pin welke alternatieve functie draagt, is bordspecifiek; zie de OpenMV Cam-snelreferentie voor de tabel.
3.4.3. Bordvariaties¶
Enkele details variëren per board en moeten altijd worden gecontroleerd tegen de snelreferentie in plaats van te worden aangenomen op basis van een ander board:
Spanningstolerantie. Sommige cams hebben 5 V-tolerante I/O-pinnen (een 5 V-signaal kan rechtstreeks worden aangelegd zonder schade); andere draaien hun I/O op 3,3 V of 1,8 V en vereisen een level shifter voor elk signaal daarboven. Een 5 V-bron aansluiten op een niet-tolerante pin kan de chip beschadigen.
ADC-referentie. De spanning die de ADC als volledige schaal behandelt, hangt af van de I/O-voeding van het board.
read_u16()geeft altijd0..65535terug, maar de spanning die65535voorstelt, is wat de referentie van het board ook maar is.Aanstuurvermogen. Een GPIO-pin kan een beperkte stroom leveren of opnemen – doorgaans tientallen milliampère. Genoeg voor een kleine led via een weerstand; niet genoeg voor een motor, een zoemer of enige inductieve belasting. Grijp naar een externe driver (transistor, MOSFET, H-brug) voor alles wat zwaarder is.
De OpenMV Cam-snelreferentie geeft de exacte getallen per board.