Guide: Få knappen til at virke
Du skal bruge følgende:
- Et breadboard
- En Raspberry Pi Pico Microcontroller
- En lysdiode
- En knap
- 2 modstande
- Ledninger
Beskrivelse:
Hvis man skal læse en knap fra picoen kan man bygge følgende kredsløb. Vi bygger det sammen med lysdiode kredsløbet fra opgave 5A, så vi kan bruge knappen til at tænde og slukke led’en.
Knappen er forbundet til GP3, og har desuden en pull-up modstand på 10K ohm (brun-sort-orange).
1. Prøv at bygge dette kredsløb:
Skriv følgende program i Thonny og prøv det:
import machine
button = machine.Pin(3, machine.Pin.IN)
while True:
if button.value() == 0:
print("Du trykkede på knappen!")
Beskrivelse af koden
Først checker vi om knappen virker og er forbundet rigtigt med følgende program
- For at få adgang til alle picoens benforbindelser og forskellige måder at styre dens hardware på skal vi importere biblioteket "machine"
- Vi sætter en variabel, button til at være lig med GP3 fra vores machine bibliotek ved at skrive tallet 3 og sætter samtidig den pin til at være input, da vi gerne vil registere et tryk på knappen.
- Derefter laver vi et uendeligt loop med while True:
- Følgende if sætning checker om knappen bliver trykket på. Da vi i vores kredsløb bruger en pull-up modstand, i stedet for pull-down, vil der være 0V på GP3, når vi trykker knappen ned, og ellers 3,3V. Derfor skal vi checke om knappens værdi er lav/0, for at checke om den bliver trykket ned.
Yderligere beskrivelse:
Med picoen er det også muligt helt at undvære pull-up eller pull-down modstande, da den har indbyggede modstande den kan koble til og fra via programmet.
2. Prøv at bygge dette kredsløb:
Bemærk modstanden er fjernet fra knap-kredsløbet, så vi kan bede picoen om at bruge en intern pull-down modstand i stedet. Derfor forsyner vi knappen med 3,3V og fører knappens andet ben tilbage til GP3 og har desuden en modstand på 120 ohm modstand (brun-rød-brun) og 10 kohm (10.000 ohm) modstand (brun-sort-orange).
Skriv følgende program i Thonny og prøv det:
import machine
import utime
led = machine.Pin(4, machine.Pin.OUT)
button = machine.Pin(3, machine.Pin.IN, machine.Pin.PULL_DOWN)
while True:
if button.value() == 1:
print("Du trykkede på knappen!")
utime.sleep(0.5)
Beskrivelse af koden
De første lignjer kode er identiske med ovenstående kode.
- Vi sætter en variabel, button, til at være lig med GP3 fra vores machine bibliotek ved at skrive tallet 3, og sætter samtidig den pin til at være input. Derudover anvendes den indbyggede pull down modstand.
- Derefter laver vi et uendeligt loop med while True:
- Følgende if sætning checker om knappen bliver trykket på. Da vi i vores kredsløb bruger den indbyggede pull-down modstand, vil der være 3,3V på GP3, når vi trykker knappen ned. Derfor skal vi checke om knappens værdi er høj/3,3V, for at checke om den bliver trykket ned.
- Vi holder også en kort pause med utime.sleep(0.5) for at sikre os, at vi ikke skriver ud for ofte (hver halve sekund), da picoen ellers ville skrive “Du trykkede på knappen!” virkelig mange gange, hver gang vi bare trykker kort på knappen.
Svaret: Du kan anvende kommandoen toggle(). Se nedenstående kodeeksempel/kodebeskrivelse.
Skriv følgende program i Thonny og prøv det:
import machine
import utime
led = machine.Pin(4, machine.Pin.OUT)
button = machine.Pin(3, machine.Pin.IN, machine.Pin.PULL_DOWN)
while True:
if button.value() == 1:
led.toggle()
utime.sleep(0.5)
Beskrivelse af koden
De første lignjer kode er identiske med ovenstående kode.
- Programmet er lavet, så led’en automatisk skifter, hver gang der trykkes på knappen. Hvis den er tændt, slukker den, og hvis den er slukket tænder den. Det kaldes på engelsk for toggle, og der findes heldigvis en kommando med samme navn, led.toggle() som vi kan bruge.
Ekstra opgave: Du kan også prøve at lave et program, der tænder lysdioden, når du trykker på knappen, og automatisk slukker den 5 sekunder senere.