Teknik 1 · område 1 · pass 1
Det första programmet
Ett program är instruktioner i ordning. Pico:n läser dem uppifrån och ner och gör exakt det som står, varken mer eller mindre. Det första programmet tänder och släcker en lysdiod – och det räcker för att förstå hur allt annat i blocket fungerar.
1. Blink
I VS Code: File → New File. Spara direkt som blink.py i
mappen teknik1 (Ctrl+S). Skriv av programmet rad
för rad – kopiera inte, det är genom att skriva du lär dig var tecknen sitter.
from machine import Pin
from time import sleep
led = Pin(25, Pin.OUT)
while True:
led.on()
sleep(0.5)
led.off()
sleep(0.5)
Raderna under while True: har fyra mellanslag i början. Det är så
Python vet att de hör till loopen. VS Code gör indraget själv när du trycker Enter
efter kolonet – ta inte bort det.
2. Vad varje rad gör
| Raden | Vad den gör |
|---|---|
from machine import Pin | Hämtar verktyget som styr pinnar. Det finns inte förrän du hämtat det |
from time import sleep | Hämtar verktyget som väntar |
led = Pin(25, Pin.OUT) | Pinne 25 är den inbyggda lysdioden. OUT betyder att vi skickar ut, inte lyssnar. Namnet led väljer du själv |
while True: | Gör raderna nedanför om och om igen, för alltid |
led.on() | Pinnen går hög – 3,3 volt – och lysdioden tänds |
sleep(0.5) | Vänta en halv sekund. Inget händer på pinnen under tiden |
led.off() | Pinnen går låg – 0 volt – och lysdioden släcks |
Det är hela idén: varje rad gör något med en pinne, eller väntar. Pinnen är antingen på eller av.
3. Kör, stoppa, ändra
- Klicka Run nere i listen (eller Ctrl+Shift+P →
MicroPico: Run current file on Pico). Den gröna lysdioden på kortet blinkar. - Klicka Stop. Den slutar.
- Ändra
0.5till0.1på båda ställena. Kör igen. Ändra till2. Kör igen. - Ta bort raden
led.off(). Gissa vad som händer innan du kör.
Gör så att den lyser länge och är släckt kort. Sedan tvärtom. Du behöver bara ändra två tal.
4. Breadboarden
Breadboarden är en platta med hål där du kopplar ihop saker utan att löda. Det enda du måste veta:
- De fem hålen i en rad sitter ihop elektriskt. Sätter du två ben i samma rad är de kopplade till varandra.
- De långa raderna längs kanten sitter ihop på längden. De används för plus och minus.
- Spåret i mitten delar plattan. Pico:n sätts över spåret så att benen hamnar på var sin sida – då kortsluts inte benen med varandra.
a b c d e f g h i j
1 o o o o o | o o o o o ← a1–e1 sitter ihop. f1–j1 sitter ihop.
2 o o o o o | o o o o o Men a1 och f1 gör det inte.
3 o o o o o | o o o o o
spåret
5. LED på pinne 15
Du behöver: en lysdiod, ett motstånd på 220 Ω (röd-röd-brun), två kopplingstrådar.
- Tråd från Pico:ns GP15 till en tom rad på breadboarden.
- Motståndet från den raden till en ny rad.
- Lysdiodens långa ben i motståndets rad. Det korta benet i en egen rad.
- Tråd från lysdiodens korta ben till GND på Pico:n.
Motståndet är inte valfritt. Utan det brinner lysdioden efter en stund. Långt ben till plus. Lyser den inte: vänd lysdioden. Den går inte sönder av att sitta fel.
Sedan samma program med en siffra ändrad. Spara som blink15.py:
from machine import Pin
from time import sleep
led = Pin(15, Pin.OUT)
while True:
led.on()
sleep(0.5)
led.off()
sleep(0.5)
Kör. Nu blinkar lysdioden på breadboarden i stället för den på kortet. Samma kod, annan pinne – det är precis så roboten kommer att styras om tre veckor.
6. SOS – din första uppgift
SOS på morse är tre korta, tre långa, tre korta. Kort = 0,2 sekunder, lång = 0,6. Mellan varje blink är den släckt 0,2 sekunder.
Skriv det först med talen inskrivna överallt. Det blir många rader. Det är meningen.
När det fungerar: du vill göra hela mönstret dubbelt så snabbt. Hur många ställen måste du ändra på? Det är därför variabler finns. Skriv om programmet så här i början, och använd namnen i stället för talen:
from machine import Pin
from time import sleep
led = Pin(15, Pin.OUT)
kort = 0.2
lang = 0.6
while True:
led.on()
sleep(kort)
led.off()
sleep(kort)
# … fortsätt själv: tre korta, tre långa, tre korta
Nu räcker det att ändra kort och lang på ett ställe.
Klart när — det här ska alla ha
Om du hinner — utmaning
Kryssen sparas i din webbläsare.
Klar med allt? Stationerna – tio små byggen med sensorkitet.
7. Felsökning
7 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
Röd text: IndentationError | Indraget under while True: saknas eller är olika på olika rader | Fyra mellanslag på varje rad i loopen. Inte tab på en och mellanslag på en annan |
Röd text: NameError: name 'pin' isn't defined | Litet p i pin | Python skiljer på stora och små bokstäver. Pin |
Röd text: SyntaxError och en pil | Ett tecken saknas – oftast kolonet efter while True eller en parentes | Titta på raden pilen pekar på, och raden ovanför |
| Programmet kör men lysdioden på breadboarden är släckt | Lysdioden sitter åt fel håll | Vänd den. Långt ben mot motståndet |
| Lysdioden lyser svagt eller inte alls, koden är rätt | Motstånd och lysdiod i samma rad, eller GND-tråden i fel rad | Kontrollera att varje del går från en rad till en annan rad |
| Run-knappen är grå | Ett program kör redan | Klicka Stop, eller tryck Ctrl+C i Pico:ns terminal |
Den inbyggda lysdioden blinkar fast jag kör blink15.py | Du ändrade inte 25 till 15, eller körde fel fil | Kontrollera att fliken du står i är blink15.py och att raden säger Pin(15, …) |
Ord på den här sidan
| Ord | Betyder |
|---|---|
| program | Instruktioner i ordning. Körs uppifrån och ner |
| import | Hämta ett verktyg så att det går att använda |
| pinne (GPIO) | Ett ben på Pico:n som programmet kan sätta på eller av, eller lyssna på |
| loop | Rader som körs om och om igen. while True: är en loop utan slut |
| indrag | Mellanslagen i början av en rad. Visar vad som hör till loopen |
| variabel | Ett namn som står för ett värde. kort = 0.2. Ändra på ett ställe, gäller överallt |
| breadboard | Kopplingsplatta. Fem hål i en rad sitter ihop |
| motstånd | Komponent som begränsar strömmen. 220 Ω skyddar lysdioden |
Ordträning