https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython
- Raspberry Pi Pico
- Koblingsbrett
- Ledninger
- 3 LED (rød, grønn, gul)
- 2 impulsbrytere
- 1 variabel motstand (1KΩ)
- 3 resistorer (330Ω)
Last ned firmware fra: https://circuitpython.org/board/raspberry_pi_pico/
https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/circuitpython
Last ned fra https://codewith.mu
Les mer på https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/installing-mu-editor
Lag et program som får LED-lyset på Raspberry Pi Pico-kortet til å blinke.
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
Endre verdiene på time.sleep(...)
for å få lysdioden til å blinke saktere eller raskere.
Koble opp skjemaet og last opp koden for å se at lysdioden blinker. Husk å koble lysdioden riktig vei.
import board
import digitalio
import time
led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
Koble til en ekstra LED og endre programmeringskoden så begge blinker.
Se løsningsforslag på oppgaven.
I eksemplet nedenfor vil LED-lampen lyse når man holder inne knappen.
import board
import digitalio
led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.GP14)
button.switch_to_input(pull=digitalio.Pull.DOWN)
while True:
if button.value:
led.value = True
else:
led.value = False
Endre programmeringskoden så LED-en skrur seg på med ett klikk på knappen og skrur seg av med et nytt klikk. Det er ikke nødvendig å endre kretsen.
Se løsningsforslag på oppgaven.
Lag et trafikklys som går fra rødt, gult til grønt etter man har trykket på en knapp, og så tilbake noen sekunder senere.
Se løsningsforslag på oppgaven.
Dette eksemplet viser hvordan man kan lese verdien fra en skru-knapp (potensiometer) ved hjelp av analog inngang på mikrokontrolleren. Åpne serial-konsollet for å se verdiene som blir lest av.
Når man skrur på knappen vil man få et tall på mellom 0 og 65535 (16-bit) ved å skru på Pot-meteret.
Les mer på: https://learn.adafruit.com/circuitpython-libraries-on-any-computer-with-raspberry-pi-pico/adc
import time
import board
import analogio
knob = analogio.AnalogIn(board.A0)
def get_voltage(raw):
return (raw * 3.3) / 65536
while True:
raw = knob.value
volts = get_voltage(raw)
print("raw = {:5d} volts = {:5.2f}".format(raw, volts))
time.sleep(0.5)
Dette eksemplet vil bruke pulsbreddemodulering for å en LED-lampe til å vekselvis lyse svakere og sterkere. Åpne serial-konsollet og plotteren for å se signalet.
Les mer: https://learn.adafruit.com/circuitpython-essentials/circuitpython-pwm
import time
import board
import pwmio
led = pwmio.PWMOut(board.GP15, frequency=5000, duty_cycle=0)
while True:
for i in range(100):
if i < 50:
led.duty_cycle = int(i * 2 * 65535 / 100) # Up
else:
led.duty_cycle = 65535 - int((i - 50) * 2 * 65535 / 100) # Down
print((led.duty_cycle,)) # Open plotter
time.sleep(0.02)
I denne oppgaven skal du lære å dimme en LED-lampe ved å vri på en variabel motstand. Legg merke til at både led.duty_cycle
og knob.value
er 16-bit, så vi slipper å tilpasse verdiene til hverandre. Åpne serial-konsollet og plotteren for å se signalet.
Les mer: https://learn.adafruit.com/circuitpython-libraries-on-any-computer-with-raspberry-pi-pico/pwm
import board
import pwmio
import analogio
import time
knob = analogio.AnalogIn(board.A0)
led = pwmio.PWMOut(board.GP15, frequency=1000)
while True:
led.duty_cycle = knob.value
print((led.duty_cycle,)) # Open plotter
time.sleep(0.05)
Få en led til å blinke saktere eller fortere ved å vri på en variabel motstand. Det er ikke nødvendig å endre kretsen.
Se løsningsforslag på oppgaven.
I denne oppgaven skal du lære å lese av den innebyggede temperatursensoren. Åpne serial-konsollet og plotteren for å se signalet. Prøv å holde fingeren på den svarte brikken midt på kretskortet og se at temperaturen øker.
Les mer: https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/temperature-gauge
import microcontroller
import time
while(True):
print((microcontroller.cpu.temperature,)) # Open plotter
time.sleep(0.5)
En Raspberry Pi Pico kan programmeres til å opptre som en USB-enhet (mus, tastatur, mediakontroller, etc.). I denne oppgaven vil du lære hvordan du lager en volumkontroller som kan styre volumet på samme måte som volumknappene på tastaturet ditt. Hold nede knappen til venstre for å øke volumet, eller hold nede knappen til høyre for å senke volumet.
Last ned biblioteker og pakk ut i lib
på CIRCUITPY-disken for å få eksemplet nedenfor til å virke.
import board
from digitalio import DigitalInOut, Direction, Pull
from adafruit_debouncer import Debouncer
import usb_hid
from adafruit_hid.consumer_control import ConsumerControl
from adafruit_hid.consumer_control_code import ConsumerControlCode
import time
button_one = DigitalInOut(board.GP15)
button_one.direction = Direction.INPUT
button_one.pull = Pull.UP
volume_up = Debouncer(button_one)
button_two = DigitalInOut(board.GP14)
button_two.direction = Direction.INPUT
button_two.pull = Pull.UP
volume_down = Debouncer(button_two)
cc = ConsumerControl(usb_hid.devices)
while True:
volume_up.update()
volume_down.update()
if volume_up.fell:
print('Volume up pressed')
cc.press(ConsumerControlCode.VOLUME_INCREMENT)
if volume_up.rose:
print('Volume up released')
cc.release()
if volume_down.fell:
print('Volume down pressed')
cc.press(ConsumerControlCode.VOLUME_DECREMENT)
if volume_down.rose:
print('Volume down released')
cc.release()
Kan du forenkle programmeringskoden ovenfor ved å bruke funksjoner?