microbit_pinout.pngPinnen op de edge connector

Naast de pinnen 0, 1, 2, 3V en GND kent de micro:bit nog veel meer pinnen die geen aanduiding hebben. Via de zogenaamde "edge connector" zijn deze pinnen toegankelijk. Om duidelijk te maken waar de pinnen zitten op de edge connector, dient de figuur hiernaast. Klik op de afbeelding voor een grotere weergave in een apart tabblad.

Sommige pinnen hebben meerdere functies. Zo zie je dat button A gelijk is aan pin P5, en button B gelijk aan pin P11. Het aansturen van P5 met een puls heeft dan ook hetzelfde effect als het drukken op knop A. Zie ook de kennisbank INVOER.

Via de blokken in het PINNEN menu kunnen pinnen met aanduiding Pxx als input of als output gebruikt worden. Sommige pinnen kunnen als digitale of analoge input gebruikt worden. De pinnen zonder ANALOG IN aanduiding zijn alleen als digitale input te gebruiken. Alle Pxx pinnen zijn als analoge of digitale output te gebruiken. Sommige pinnen worden ook gebruikt voor de kolom aansturing van de led matrix, en weer andere pinnen worden gebruikt voor seriele communicatie, SPI en I2C.

terug naar boven

blok pinnen lees digitaal pin.png

Deze functie geeft een waarde 0 of 1 terug afhankelijk van de aangeboden spanning op de aangegeven pin. In de praktijk ligt de grenswaarde zo'n beetje tussen de 1,3 en 1,8 Volt. Het is het best om het volgende aan te houden:

  • is de aangeboden spanning hoger dan 2V dan is het resultaat een 1
  • is de aangeboden spanning lager dan 1V dan is het resultaat een 0

Let op: sluit nooit een spanning aan hoger dan 3,3V anders kun je de micro:bit kapot maken.


Officieel zijn de omslagpunten afhankelijk van de spanning waarop de micro-controller van de micro:bit werkt, en heb je te maken met de volgende definities:

  • voor een 1 moet de ingangsspanning hoger liggen dan VIH Input High Voltage, en die is 0,7 * VDD
  • voor een 0 moet de ingangsspanning lager liggen van VIL Input Low Voltage, en die is 0,3 * VDD
  • hierbij staat VDD voor de spanning waarop de micro:bit werkt 
    (3V of iets minder als je met batterijen werkt, en 3,3V als de usb kabel is aangesloten)

terug naar boven

blok pinnen als pin pulseerde.png

De code tussen de haak wordt uitgevoerd als er een puls wordt aangeboden op de aangegeven pin. De puls moet dan minimaal 5 microseconden zijn. Je kunt hiermee dus hele korte pulsen waarnemen. 

Dit is een groot verschil met blok invoer wanneer pin wordt aangeraakt.png waar de puls minimaal 55 milliseconden moet zijn (11.000 keer zo lang).


denderend contact.pngLet wel: Soms is er sprake is van een zogenaamd 'denderend' contact of verbinding met GND, dus een 'slecht' of 'niet ideaal' contact dat in een hele korte tijd (micro-seconden) meerdere malen gemaakt en verbroken wordt (zie de figuur). De pulsdetectie met het "als pin pulseerde" blok meet zo snel dat er dan ook meerdere events gegenereerd worden door de micro:bit. Bij 3x denderen wordt het blok "als pin pulseerde" dan ook 3x achter elkaar uitgevoerd.

Als de puls niet elektronisch wordt gegeven maar bijvoorbeeld tot stand komt door een schakelaar of draadverbinding, dan is er bijna altijd sprake van denderen.

terug naar boven

blok pinnen puls in pin pulseerde.png

Dit blok wacht op een puls (instelbaar 'hoog' of 'laag') en meet dan de puls-duur in micro-seconden van de puls aangeboden op de gekozen pin. Als er na 3 seconden nog geen puls geweest is, geeft het blok de waarde 0 en gaat het programma verder.

uitroepteken.pngLET OP !!! Dit blok geeft niet de juiste waarde terug van de pulsduur, maar slechts 2/3 van die waarde. Dus een pulse-duur van 1 ms = 1000 micro-seconden levert een waarde op van 667. Deze fout is gemeld en hopelijk komt er snel een update.

terug naar boven

blok pinnen pulsetijd.png

Dit blok geeft een waarde terug van de puls-lengte die aangeboden wordt op één van de pinnen. Het blok kan bijvoorbeeld als volgt gebruikt worden:

als pin pulseerde voorbeeldcode.png

Het blok "als pin pulseerde" wacht op een aangeboden puls, in dit geval P0. Het getoonde nummer wordt gelijk aan de puls-duur in micro-seconden van de puls aangeboden op P0. Als bij "als pin pulseerde" gekozen wordt voor P1, dan geeft "pulsetijd" de puls-duur weer van de puls op P1.

Let op: de micro:bit moet wel weten van welke pin je de puls-duur wilt meten, dus het is wel nodig om het "pulsetijd" blok te gebruiken binnen een "als pin pulseerde" blok/haak. Doe je dat niet, dan komt er een willeurige waarde terug van "pulsetijd".

terug naar boven

blok pinnen schrijf analoog pin.png

Analoge output is in werkelijkheid niet echt analoog. De uitgang van de pin wisselt snel van hoog (3,3V) naar laag (0V). Dit gebeurt met een frequentie van 50Hz. Dus elke 20ms is de pin even hoog en even laag. Afhankelijk van de ingevoerde waarde (van 0 tot 1023) wordt de tijd dat de pin hoog is langer of korter. Dit wisselen tussen hoog en laag gaat dus zo snel, dat als je daar b.v. een led mee aanstuurt, je deze continu ziet branden, maar in een gedimde stand. Daarmee lijkt het analoog. Dit heet puls-breedte-modulatie, ofwel PWM (pulse width modulation).

50 100 500 1000
PWM 0050.png PWM 0100.png PWM 0500.png PWM 1000.png

De verhouding tussen de tijd dat het signaal hoog is, en de periodetijd (hier meestal 20ms) wordt de duty-cycle genoemd.

ingevoerde waarde puls hoog
(bij een periodetijd van 20ms)
duty-cycle
0 0/1024 * 20 = 0,00ms 0/1024 = 0,0%
50 50/1024 * 20 = 0,97ms 50/1024 = 4,9%
100 100/1024 * 20 = 1,95ms  100/1024 =  9,7%
500 500/1024 * 20 =  9,76ms 500/1024 = 48,8% 
1000 1000/1024 * 20 = 19,5ms 1000/1024 = 97,6%
1023 1023/1024 * 20 = 20,0ms 1023/1024 = 100,0%

De ingevoerde waarde kan varieren tussen 0 en 1023, dus 1024 mogelijke waarden. Daarom wordt in de formule door 1024 gedeeld. Strikt genomen klopt dit niet helemaal. Bij waarde 1023 zou het signaal in theorie nog een hele korte tijd laag moeten zijn. In de praktijk is de uitgang van de betreffende pin continu laag bij waarde 0, en continu hoog bij waarde 1023.

terug naar boven

blok pinnen stel analoge periode pin.png

Standaard staat de frequentie van het PWM signaal voor 'schrijf analoog pin' op 50Hz ofwel een periodetijd van 20ms = 20.000microsec. (lees eerst hoe PWM werkt in het blok 'schrijf analoog pin') Met dit 'stel analoge periode pin' blok kun je de periodetijd voor het PWM signaal aanpassen. Als je de periodetijd bijvoorbeeld 5.000microseconde = 5ms zet, dan levert dat een PWM frequentie op van 200Hz. Als je daarna 'schrijf analoog pin' instelt op 512 (precies de helft van het maximum), zul je een sigaal zien van afwisselend 2,5ms hoog en 2,5 laag.

De periodetijd kan teruggeschroeft worden tot minimaal 2 microseconde. Let wel dat bij die lage waardes de duty-cycle niet meer goed uit de verf komt, want de kortste tijd dat een pin hoog of laag kan staan is 1 microseconde.

terug naar boven

blok pinnen schrijf servo op pin.png

Het aansturen van een servo gebeurt met PWM (pulse width modulation, ofwel puls-breedte-modulatie). Zie voor de uitleg hiervan: "schrijf analoog pin".

Het verschil is hier dat er afspraken zijn over de pulslengte (specificaties) en de uitslag (hoek) die de servo maakt. De frequentie van het signaal is 50Hz, net als bij de analoge output. Dus elke 20ms is er een puls. De lengte van de (positieve) puls varieert met de ingevoerde waarde (hoek, van 0 tot 180 graden).

0 graden 60 graden 90 graden 180 graden
puls = 0,50ms puls = 1,17ms puls = 1,50ms puls = 2,50ms
Servo 10.png Servo 60.png Servo 90.png Servo 180.png

 

Voor het aansluiten van een servo, bijvoorbeeld de SG-90, zie de kennisbank externe componenten.


Let op: alleen servo's die voldoen aan de bedoelde specificatie gedragen zich zoals je zou verwachten. Er kunnen echter ook andere type servo's op de markt zijn met andere specificaties, die zullen zich dan anders gedragen. Met paar simpele testjes en de kennis van het 'schrijf servo' blok kun je er dan toch achter komen hoe je die servo moet aansturen. Je kunt met enig rekenwerk zelfs het 'schrijf analoog' blok gebruiken, of beter nog: gebruik het blok 'stel puls van servo in op pin', bijvoorbeeld voor als je pulsen nodig hebt die langer zijn dan 2,5ms.


Let op: gebruik het blok 'stel analoge periode pin' niet op de pin waar je een servo mee wilt aansturen. Alleen voor 'schrijf analoog pin' kan de periodetijd worden aangepast. Het aansturen van een servo met het blokje "schrijf servo" gebeurt dus altijd met een periodetijd van 20ms (= 50Hz).

terug naar boven

blok pinnen stel puls van servo in op pin v2.png

Gebruik dit blok om de pulslengte tot op de microseconden nauwkeurig te sturen. Dit werkt ook voor hele korte pulzen van slechts 1 microseconde. Dit is een goede vervanger voor het blok 'schrijf servo op pin' indien er andere pulslengtes nodig zijn voor het toegepaste type servomotor.

terug naar boven