Potmeter
Een potmeter is een draaiknop. Draai je eraan, dan verandert het getal dat de Nano leest: helemaal naar de ene kant bijna 0, helemaal naar de andere kant bijna 65535. Zo stel je met de hand iets in, bijvoorbeeld hoe fel een lampje brandt. In een joystick zitten er twee.
Materiaal
- Nano op het shieldArduino Nano RP2040 Connect op het Leaphy Murphy Shield
- DraaipotmeterMet drie pootjes, bijvoorbeeld van 10 kΩ
Verder: 3× jumperdraden
Tussen de twee buitenste pootjes zit een weerstand. Het middelste pootje, de loper, schuift daarlangs als je draait. Hoe dichter de loper bij het pootje aan de plus komt, hoe hoger het getal.
Aansluiten

Op het shield heeft elke pin van de Nano een eigen rijtje van drie pinnen. De binnenste, naast de Nano, is de pin zelf (bijvoorbeeld D7). De middelste is 3V3 en de buitenste is GND. Sluit een onderdeel aan op het rijtje van zijn pin: dan zitten signaal, 3V3 en GND naast elkaar, en past er een stekker van drie pinnen op. In het schema zegt de legenda welke draad op welke pin komt.
- de loper (het middelste pootje) aan de pin A0 (binnenste rij; op het shield A0/D14)
- pootje 3 aan 3V3 (middelste rij)
- pootje 1 aan GND (buitenste rij)
Verwissel je pootje 1 en 3, dan werkt de potmeter nog steeds, maar dan draait hij andersom: het getal wordt lager waar het eerst hoger werd. In het schema kruist de zwarte draad de blauwe, want het midden van het rijtje is voor GND.
Code
Het getal uitlezen
from machine import ADC
from time import sleep
pot = ADC("A0")
while True:
print(pot.read_u16())
sleep(0.2)
Draai aan de knop. In de Shell gaat het getal van ongeveer 0 naar ongeveer 65535.
ADC("A0")maakt van A0 een pin die een getal leest in plaats van een 0 of een 1, net als bij de analoge IR-sensor.pot.read_u16()geeft dat getal: 0 bij 0 volt op de loper, 65535 bij 3,3 volt.
Controlevraag
Je zet de knop precies halverwege. Welk getal verwacht je ongeveer?
Antwoord
Ongeveer 32768, de helft van 65535. Precies dat getal zie je bijna nooit: het springt steeds een klein beetje heen en weer, en geen knop staat precies in het midden.
Een getal van 0 tot 100
Met een getal tot 65535 werkt het lastig. Dit programma maakt er een percentage van.
from machine import ADC
from time import sleep
pot = ADC("A0")
while True:
procent = pot.read_u16() * 100 // 65535
print(f"{procent} %")
sleep(0.2)
// deelt en laat weg wat achter de komma komt. Zo krijg je een heel getal, van 0 tot en met 100.
Een lampje dimmen
Het lampje LED op de Nano kan ook half branden, met PWM: de pin gaat heel snel aan en uit, zo snel dat je alleen ziet hoe fel het lampje is. Dat ken je van de buzzer.
from machine import ADC, Pin, PWM
from time import sleep
pot = ADC("A0")
lampje = PWM(Pin("LED"))
lampje.freq(1000)
while True:
lampje.duty_u16(pot.read_u16())
sleep(0.02)
Draai aan de knop: het lampje wordt feller of zwakker.
lampje.freq(1000)zet het lampje duizend keer per seconde aan en uit.lampje.duty_u16(...)zegt hoe lang het lampje per keer aan staat, van 0 (uit) tot 65535 (steeds aan). Dat zijn dezelfde getallen als die vanread_u16(), dus het getal van de potmeter kan er zo in.
Opdracht: rood boven de helft
Laat het rode lampje op de Nano branden zodra de knop meer dan halverwege staat, en uit gaan als hij er weer onder komt.
Tip
Halverwege is ongeveer 32768. Gebruik Pin('LED_RED', Pin.OUT), en denk eraan dat bij dat lampje value(0) aan is en value(1) uit.
Oplossing
from machine import ADC, Pin
from time import sleep
pot = ADC("A0")
led = Pin('LED_RED', Pin.OUT)
while True:
if pot.read_u16() > 32768:
led.value(0) # aan
else:
led.value(1) # uit
sleep(0.05)
Er gaat iets mis
Het getal is steeds 0, of steeds ongeveer 65535
Oorzaak: op A0 zit een buitenste pootje in plaats van de loper. Een buitenste pootje zit vast aan GND of 3V3, dus het getal verandert niet als je draait.
Oplossing: zet het middelste pootje op A0, en de twee buitenste op 3V3 en GND.
Het getal wordt lager als ik naar rechts draai
Oorzaak: pootje 1 en 3 zijn verwisseld. Dat is niet fout: de potmeter draait dan alleen andersom.
Oplossing: verwissel de rode en de zwarte draad als je het andersom wilt. Of draai de knop de andere kant op.
Het getal springt een beetje, ook als ik niet draai
Oorzaak: dat is normaal. De pin meet heel nauwkeurig, en een heel klein beetje ruis is al te zien.
Oplossing: werk met een percentage zoals hierboven. Daar valt die ruis bijna helemaal weg.