9789127448698

Page 1

– kreativa projekt med Arduino Programmera i teknik är en handbok för dig som är tekniklärare på högstadiet och som vill komma igång med programmering. Boken passar såväl nybörjare i programmering som mer erfarna.

konkreta verktyg och praktiska tips för att planera och utforma din undervisning genomgång av nödvändig elektronik grunderna i programmering kreativa och pedagogiskt utformade programmeringsprojekt med bedömningsstöd.

Författarna är tekniklärare med lång erfarenhet av programmering i sin egen undervisning.

Input-serien inspirerar till nya arbetssätt och metoder i det dagliga skolarbetet. Böckerna är avsedda att fungera som handböcker i den konkreta klassrumssituationen. Fler Input-titlar hittar du på nok.se/input.

Staffan Melin är lärare i teknik, matematik och fysik, civilingenjör och journalist.

ISBN 978-91-27-44869-8

Staffan Melin

• • •

– kreativa projekt med Arduino

Martin Blom Skavnes är lärare i teknik och NO, kodpedagog och musiker.

Bokens fyra delar ger dig:

Programmera i teknik

Martin Blom Skavnes

Boken kopplar samman programmering och praktisk elektronik med hjälp av den lilla datorn Arduino. Därmed flyttas resultatet av programmeringen från skärmen till den fysiska världen. Eleverna engageras när de direkt får se vad de har skapat. Innehållet i boken har tydlig koppling till kursplanen för teknikämnet.

Programmera i teknik

Programmera i teknik

Martin Blom Skavnes Staffan Melin

9 789127 448698

Programmera i teknik_170629.indd Alla sidor

2017-07-12 14:21


Kapitel 1

PROGRAMMERA ELEKTRONIK Att styra verkligheten Elektroniken finns överallt omkring oss, och många gånger kan vi uppleva att den styr oss. Vi vill istället visa sanningen för eleverna – att det är vi själva som styr elektroniken genom programmering. För att nå dit har vi valt att koppla samman programmering med praktisk elektronik och på så sätt flytta resultatet av programmeringen från skärmen till den fysiska världen. Det finns en mängd olika sätt att programmera med en dator, läsplatta eller mobiltelefon där du ser resultaten på skärmen. Du får då ett antal valmöjligheter inom en viss ram och så sker något på skärmen utefter vad du väljer, till exempel att en figur plockar upp ett föremål, går två steg fram, ett steg åt höger för att därefter släppa föremålet. Dessa kan vara både roliga och lärorika, men nackdelen med många av dem är att de rör sig nära tv-spelsvärlden där man kan göra antingen rätt eller fel. När du programmerar elektronik är det däremot helt öppet vad du väljer att konstruera. Fantasi och kreativitet får stort spelrum samtidigt som du lär dig att både hantera och förstå elektroniken. Vi är ganska säkra på att dina elever, precis som våra, går igång på att bygga, koppla och programmera. Det behövs inte färggranna blinkande spel och appar, utan det kan räcka med en liten högtalare när eleven själv får bestämma vilka ljud som ska komma ur den. Det är känslan av att kontrollera skeendet som fascinerar och engagerar när man programmerar elektronik.

8

Kapitel 1

Hela boken.indd 8

2017-07-13 15:07


Arduino När våra elever programmerar elektronik använder de sig av Arduino. Det är en liten enkel dator, även kallad mikrokontroller, som med sin tillhörande mjukvara är särskilt framtagen för undervisning. Den har stora möjligheter att läsa av och styra annan elektronik vilket ger en direkt koppling mellan koden som eleven skriver och de signaler som tas emot och skickas ut.

Arduino består av en liten enkel dator med tillhörande mjukvara.

Arduinon kräver inget operativsystem och därmed inte heller några installationer som kan krångla. Programmeringen sker på en vanlig dator som är kopplad till Arduinon med en vanlig USBsladd. Arduino är open source, öppen källkod, vilket betyder att hårdoch mjukvara är fri att användas av vem som helst. Till följd av det har det skapats en stor och välkomnande infrastruktur på nätet kring Arduino, med tusentals beskrivna projekt och en mängd olika forum där användare kan få inspiration och hjälp. Den öppna källkoden gör också att Arduino är framtidssäkert och fritt från kopplingar till stora företag eller organisationer – med andra ord perfekt för skolan. Eftersom Arduino programmeras med ett riktigt programmeringsspråk och autentiska elektriska komponenter används det inte bara i skolor världen över, utan även i professionella tillämpningar inom en mängd olika områden. Det gör att eleverna kan ha stor nytta av sina kunskaper om de väljer att fortsätta att programmera.

progrAMMErA ELEKTroniK

Hela boken.indd 9

9

2017-07-13 15:07


[ Läs mer om hur Arduino kan programmeras med surfplatta eller mobil på nok.se/programmeraiteknik ]

Givetvis finns det olika alternativ till Arduino. Dels finns en mängd kompatibla mikrokontroller som kör exakt samma kod som Arduinon, allt från sådana som är gjorda för att sys fast på kläder till LightBlue Bean som programmeras trådlöst med hjälp av Bluetooth. LightBlue Bean är ett bra alternativ till Arduino om dina elever inte har tillgång till datorer eftersom koden kan skrivas på en surfplatta eller en mobiltelefon. Ett annat alternativ är Raspberry Pi. Jämfört med Arduino är Raspberry Pi mer avancerad och kräver ett operativsystem för att fungera. Det betyder i sin tur att en hel del val och installationer måste göras för att få endast några lysdioder att blinka. Arduinon är mer direkt och tydlig i sin enkelhet och därför mer pedagogisk.

LightBlue Bean

Raspberry Pi

Projekten I bokens sista, och kanske viktigaste del har vi samlat ihop, sorterat och ordnat ett antal projekt som vi och våra elever har arbetat med i olika omgångar under de senaste åren. Projekten är av två olika sorter: grundläggande projekt och tillämpningar. De grundläggande projekten introducerar programmering av elektronik med en progression från enkla korta program med få elektriska komponenter, till mer avancerade program och större system med många elektriska komponenter. Tillämpningarna bygger på de kunskaper eleverna har tillägnat sig i de grundläggande projekten. Jämfört med de grundläggande projekten finns det större utrymme att forma om tillämpningarna utefter kreativitet, intresse, förmåga, resurser, samt möjligheter till ämnesintegrering. För varje tillämpning har vi angett vilka grundläggande projekt som är lämpliga att göra innan.

10

KApiTEL 1

Hela boken.indd 10

2017-07-13 15:07


Vandrande penna och Robotfotboll – två exempel på tillämpningar som eleverna uppskattar att arbeta med.

Alla projekt är utformade på samma sätt. Eleverna inleder med att koppla elektroniken och programmera Arduinon enligt tydliga instruktioner. Därefter arbetar de vidare med ett antal uppgifter som går ut på att förändra och utöka programkoden och den elektriska kretsen. I varje projekt finns det instruktioner om hur eleverna ska dokumentera sitt arbete.

programmera elektronik  11

Hela boken.indd 11

2017-07-13 15:07


Kapitel 2

PLANERA DIN UNDERVISNING Utrustning Den utrustningen som behövs till projekten finns listad längst bak i boken. När ni ska arbeta med tillämpningarna behövs, förutom datorer, Arduinos och elektronik, olika typer av enkla byggmateriel som exempelvis glasspinnar, tejp, gummiband och kartong. Dessutom kan det vara bra att bygga upp en liten enkel verkstad. Antalet datorer och Arduinos som krävs beror på hur många elever som ska arbeta samtidigt. Enligt oss är det bäst att eleverna arbetar två och två, med varsin dator och en Arduino. Det fungerar också bra att de även delar på en dator. Eleverna sparar sina program på datorn, inte på Arduinon. Därmed går de inköpta enheterna att återanvända till många olika projekt, och alla på skolan kan få användning av dem vid olika tillfällen. De elektriska komponenterna är många och små, och vi rekommenderar därför att de sorteras i någon form av lådsystem, annars blir det lätt rörigt och svårt att hitta. Särskilt om det är flera lärare på skolan som arbetar med samma material. Det är bra om lådsystemet går att flytta mellan olika klassrum.

14

Kapitel 2

Hela boken.indd 14

2017-07-13 15:07


Exempel på utrustning som är bra att ha tillgänglig när ni arbetar med projekten.

De grundläggande projekten är utformade så att eleverna i slutet av lektionen kan koppla isär all elektronik och Arduinon. På så sätt är materialet är inte låst till en särskild grupp elever, utan flera lärare kan använda materialet med sina elevgrupper under en och samma period. När eleverna arbetar med tillämpningarna blir dock elektroniken låst till deras konstruktioner, och då kan det krävas lite extra planering om det är flera lärare som arbetar med programmering samtidigt på skolan.

Tidsåtgång Tidsåtgången är förstås beroende av hur lång tid du lägger på att introducera ett projekt, till exempel genom att förklara kod och elektronik, hur snabbt eleverna arbetar och hur lång tid eleverna får lägga på att dokumentera sitt arbete. Enligt våra erfarenheter tar de grundläggande projekten ungefär två timmar vardera, medan tillämpningarna tar längre tid eftersom de oftast innehåller mer konstruktion. Avsätt därför ytterligare några timmar per til�lämpning.

planera din undervisning  15

Hela boken.indd 15

2017-07-13 15:07


Kapitel 5

ELEKTRISKA KOMPONENTER Kopplingsdäck

Kopplingsdäck i olika storlekar.

Ett kopplingsdäck, ”breadboard” på engelska, används för att provisoriskt koppla ihop komponenter till en krets, utan att behöva löda ihop dem. På så sätt kan kretsarna testas och förändras snabbt och enkelt. Det finns kopplingsdäck i olika storlekar. I bokens projekt är det lämpligt att arbeta med de som har 400 anslutningspunkter.

28

Kapitel 5

Hela boken.indd 28

2017-07-13 15:07


I de vågräta raderna (till exempel rad 2 a – e, markerad med grönt i figuren nedan) är alla fem hålen sammanlänkade, kopplade till varandra under den vita plasten. Det innebär att alla sladdar och komponenter vars ben sticks ned i hålen på denna rad blir sammankopplade. Skickar du ström in i en sladd som sitter i ett hål i raden, kan denna ström ledas vidare åt fyra olika håll, eller till fyra andra komponenter. De två kolumnerna längst till vänster och de två längst till höger är också sammanlänkade, fast lodrätt. Arduinon behöver ofta driva flera komponenter men den har bara en utgång med 5 V. I bokens projekt börjar vi därför alltid med att ansluta Arduinons 5 V-port till den röda kolumnen till vänster på kopplingsdäcket. Den är ofta markerad med +. Vi ansluter också Arduinons GND-port (jord) till den blå kolumnen intill, markerad med –. Det går bra att använda vilken GND-port som helst på Arduinon för anslutningen men vi använder oss av den som är intill 5 V-porten. Till dessa kolumner ansluter vi sedan de komponenter på kopplingsdäcket som behöver ström eller jord. Det görs enklast med en kopplingssladd.

Kopplingsdäck. Figuren visar några exempel på hål som är elektriskt sammankopplade.

elektriska komponenter  29

Hela boken.indd 29

2017-07-13 15:07


Kopplingsdäck är utmärkta att använda i undervisningen. Inte bara för att kopplingarna är provisoriska och därför lätta att ändra, utan också för att kretsarna blir överskådliga och strömmens väg blir tydlig. För att åskådliggöra hur vi använder kopplingsdäcket tar vi ett exempel, se figurerna nedan. Säg att du har en lysdiod och ett motstånd som det ska skickas ström genom. Då sätter du lysdiodens två ben i hål som sitter i olika rader på kopplingsdäcket. Motståndets ena ben ska sedan placeras i samma rad som ett av lysdiodens ben. Eftersom hålen i kopplingsdäckets rader är sammanlänkade, är nu lysdioden och motståndet kopplade till varandra. Ström kan nu gå via den gröna sladden genom motståndet, ner i rad fyra, upp genom lysdioden och vidare till jord genom den svarta sladden. USB

ANALOG

A0 (D14) A1 (D15) A2 (D16) A3 (D17) A4 (D18) A5 (D19)

POWER

RESET 3.3V 5V GND GND Vin

DIGITAL

RESET

GND 13 12 ~ 11 ~ 10 9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0

I våra projekt börjar vi alltid med att koppla in 5 V i kopplingsdäckets pluskolumn (+) och jord i minuskolumnen (–). I bland utnyttjas dock bara jord.

30

Kapitel 5

Hela boken.indd 30

2017-07-13 15:07


Kopplingssladdar

Kopplingssladdar. Hona-hane till vänster och hane-hane till höger.

För att koppla samman Arduinon med övriga komponenter behövs kopplingssladdar. Det går att tillverka egna sladdar, men vi rekommenderar att köpa fabrikstillverkade. Fördelarna är flera. De har kraftiga kontakter som tål en hel del, de finns i olika färger och längder och de finns som både hane-hane, hona-hona och hane-hona. Hane-hane används mest, men det är bra att även ha tillgång till några sladdar som är hona-hona och hane-hona då det finns komponenter, till exempel sensorer, som ibland kräver detta. Att tillverka egna kopplingssladdar är visserligen billigare, men efter en tids böjande fram och tillbaka går de lättare av jämfört med fabrikstillverkade, och behöver ersättas. Om du trots allt väljer att tillverka egna sladdar, ska du köpa några buntar sladdar i olika färger, klippa dem i lämpliga längder och skala bort plasten. Sladdarna ska ha en enda ledningstråd inuti, inte flera tunna. Tänk på att ha gott om sladdar för att inte bli begränsad eller försenad i arbetet med ett projekt.

elektriska komponenter  31

Hela boken.indd 31

2017-07-13 15:07


Lysdioder

Lysdioder finns i olika färger. Längst till höger visas en lysdiod som kan lysa i olika färger. Sådana använder vi dock inte i den här boken.

En lysdiod sänder ut ljus när ström passerar genom den. Precis som andra dioder släpper lysdioden igenom ström endast i en riktning och för att kunna koppla in den korrekt i kretsen är de två benen olika långa. Det långa benet tar emot ström och ska alltså vara kopplat till plus, och det korta benet ska kopplas till jord. För att lättare kunna placera lysdioden på ett kopplingsdäck, är det bra att böja det långa benet en aning och så att båda benen slutar på samma höjd.

+

+

Lysdiod. Det är viktigt att du kopplar lysdioden rätt med det långa benet till +. Om du bockar det långa benet är det lättare att placera lysdioden i kopplingsdäcket.

En lysdiod klarar inte för stark ström och måste därför alltid seriekopplas med ett motstånd. Vanliga lysdioder klarar ungefär 20 mA, och ett lämpligt strömbegränsningsmotstånd är då 220 Ω. Lysdioder finns i många olika färger och varianter. Till bokens projekt behövs standardlysdioder i minst tre olika färger som kostar runt en krona styck i förpackningar om 100 stycken.

32

Kapitel 5

Hela boken.indd 32

2017-07-13 15:07


Motorer

Motor. De motorer vi använder är sammankopplade med en växellåda som sänker hastigheten på hjulen.

För att en elektrisk motor ska fungera behöver den såklart ström. Beroende på åt vilket håll strömmen går genom elmotorn snurrar den antingen åt det ena eller det andra hållet. I de projekt där elmotorer används måste de kunna snurra åt båda hållen, vilket naturligtvis påverkar programmeringen. Motorns två anslutningar kopplas till varsin port. Om motorn ska snurra åt låt säga vänster, ska den ena porten programmeras så att den fungerar som en utgång som skickar ut ström (HIGH), medan den andra porten ska programmeras så att den fungerar som en ingång som tar emot den utskickade strömmen (LOW). Om motorn istället ska snurra åt höger måste programmet se till att portarnas funktion blir de omvända. Man kan se det som tömmarna på en häst. För att få hästen att svänga vänster ska du dra i vänster töm men måste samtidigt släppa på höger. Drar du i båda så stannar hästen, precis som motorn inte rör sig då ström skickas till båda ingångarna. Till de flesta motorer måste du löda sladdarna. Långa kopplingssladdar är utmärkta till detta.

elektriska komponenter  39

Hela boken.indd 39

2017-07-13 15:07


Kapitel 6

ATT PROGRAMMERA Programspråk Att programmera är att tala om för en dator vad den ska göra. Det kan göras på en mängd olika sätt, men gemensamt för alla är att någon form av språk används. Om vi säger “språk” så tänker du kanske på svenska, engelska eller något annat språk som talas av människor, och det är inte så dumt, eftersom vi använder mänskliga språk för att tala om vad vi själva eller andra människor ska göra. Ibland är det instruktioner av typen “gå till kiosken och köp en tidning”, och då börjar vi närma oss programmeringsspråk. Precis som de mänskliga språken följer datorspråken regler, de har en grammatik. Men till skillnad från exempelvis svenska är datorerna inte så förlåtande. De kräver att du anger exakt vad datorn ska göra för att resultatet ska bli det önskade. Det finns en uppsjö av olika programmeringsspråk, varav de flesta är på engelska. Arduino programmeras med ett språk som bygger på C++, ett av världens mest spridda språk. Även om du eller dina elever inte kommer att möta just det språket i framtiden, så innehåller alla språk ungefär samma byggstenar. Det vill säga, om du lär dig ett programmeringsspråk är det lätt att överföra den kunskapen till andra språk. Och även om du glömmer detaljerna i språket, lär du dig vad programmering är – ett antal instruktioner som kan sättas samman på olika sätt för att få en dator att göra det du vill.

42

Kapitel 6

Hela boken.indd 42

2017-07-13 15:08


Grafiska programspråk Det finns programmeringsspråk som är grafiska. Ett exempel på detta är Scratch. Där motsvarar ett block ungefär en rad i Arduino-koden. Grafiska programmeringsspråk är ibland lättare att ta till sig för yngre elever. Webbplatsen code.org har en mängd olika kurser för programmering i ett Scratch-liknande språk, bland annat deras satsning Hour of Code där de tillhandahåller övningar som låter eleverna prova på att programmera under cirka en timme. Det kan vara en bra introduktion till programmering för elever från mellanstadiet och uppåt.

[ Det finns grafiska programmeringsspråk även för Arduino. Läs mer på nok.se/programmeraiteknik ]

Programmeringens byggstenar Många saker i vardagen kan egentligen ses som program. Noter är en form av program där kompositören (programmeraren) med hjälp av noter (program) talar om vad musikern (datorn) ska spela (göra). Ett annat exempel är recept i en kokbok, där kokboksförfattaren med hjälp av recept talar om för dig hur maten ska lagas. När du programmerar kommer du att stöta på och använda byggstenar som finns i nästan alla programmeringsspråk. Nedan följer några exempel som bara är för genomläsning; du behöver alltså ingen dator.

Exempel 1 – Funktioner Du ber din vän: Vänta i tio sekunder.

Så här skulle det se ut i ett påhittat programmeringsspråk, ofta kallat pseudokod:

vänta(10) I Arduino skulle det se ut så här: delay(10000);

att programmera  43

Hela boken.indd 43

2017-07-13 15:08


delay() är ett exempel på en funktion, som alltid skrivs med en

parentes på slutet. En funktion består av en bit programkod som du eller någon annan redan skrivit, och den ser till att en särskild uppgift blir utförd när den anropas i ett program. När du programmerar Arduinon kommer du att använda flera funktioner som är inbyggda. Du vet inte i detalj hur de fungerar, bara att de gör det du vill, till exempel att funktionen delay(10000) pausar programmet i 10 000 millisekunder. Siffrorna i parentesen efter delay() kallas för ett argument. De används för att ändra funktionens beteende. delay() är en funktion som kan vänta olika lång tid beroende på vad du skriver i parentesen – vilket argument du skickar till den. Det är ungefär som när du beställer en tågbiljett och talar om vart du vill åka. Du bokar biljetten på samma sätt oavsett vart du ska åka, men anger olika resmål. ”Resmålet” är då ett argument till funktionen ”att beställa en tågbiljett”. Att funktionen tar ett argument innebär alltså att den kan utföra sin uppgift på olika sätt beroende på vilket värde vi skickar till den. Alla rader avslutas med ett semikolon för att Arduinon ska förstå att raden är slut.

Exempel 2 – Flera funktioner på rad Du säger till din vän: För att låna en bok så lägger du lånekortet på utlåningsmaskinen, slår in din kod och lägger sedan boken på maskinen.

Vad du egentligen säger är:

ta fram lånekortet och lägg det på utlåningsmaskinens kortläsare slå in din kod lägg boken på utlåningsmaskinen

I Arduinon skulle det kunna se ut så här: placeCardOnMachine(); enterCode();

putBookOnMachine();

44

Kapitel 6

Hela boken.indd 44

2017-07-13 15:08


De tre funktionerna placeCardOnMachine(), enterCode() och putBookOnMachine() skulle kunna vara tre funktioner som redan är skrivna och som du kan använda dig av. Program körs uppifrån och ned, från början till slut. Ordningen är därför mycket viktig. Om du till exempel lägger boken på utlåningsmaskinen utan att ha slagit in koden kan du inte låna boken. Mellanslag mellan ord är svåra för en dator att förstå. Därför skrivs funktionernas namn ihop med stor bokstav i början av varje ord.

Exempel 3 – Variabler och if-satser I verkligheten gör du olika saker beroende på olika omständigheter. Detsamma gäller i ett program. Du kanske säger något i stil med: Borsta tänderna och gå och lägg dig om klockan är över elva.

Vad du egentligen säger är:

ta reda på vad klockan är om klockan är mer än elva på kvällen så borsta tänderna gå och lägg dig

Så här skulle programmet kunna se ut: int timeOfDay;

timeOfDay = getHour();

// gå till sängs om klockan är mer än 23 if (timeOfDay > 23) { brushTeeth(); goToBed(); }

att programmera  45

Hela boken.indd 45

2017-07-13 15:08


Kapitel 9

INLEDNING Grundläggande projekt Boken innehåller sju grundläggande projekt som introducerar programmering av elektronik med en progression från enkla korta program med endast få elektriska komponenter, till mer avancerade program och större system med flera elektriska komponenter. Enligt våra erfarenheter tar ett grundläggande projekt ungefär två timmar att genomföra.

• • • • • • •

Ljus Ljud Strömbrytare Motstånd Servo Sensor Motorstyrning

Tillämpningar Boken innehåller sex tillämpningar som bygger på de programmeringskunskaper och den elektronik som introducerats i de grundläggande projekten. De är friare i sin utformning och ger eleverna större utrymme för konstruktion efter egna önskemål. En tillämpning tar lite längre tid att genomföra jämfört med de grundläggande projekten, allt från två till åtta timmar beroende på tillämpning.

68

Kapitel 9

Hela boken.indd 68

2017-07-13 15:08


Inom parentes anges vilka grundläggande projekt som eleverna bör ha genomfört innan de börjar arbeta med tillämpningen.

• • • • • •

Vandrande penna (Ljus, Servo) Flipper (Ljus, Strömbrytare, Servo) Lyftkran (Ljus, Motstånd, Servo) Robotfotboll (Ljus, Strömbrytare, Servo, Sensor) Bil (Ljus, Motorstyrning) Robot (Ljus, Strömbrytare, Servo, Sensor, Motorstyrning)

Projektbeskrivningarnas upplägg Samtliga projektbeskrivningar är skrivna så att de lätt ska kunna läsas och följas av eleverna. De har också en gemensam struktur.

[ Projektbeskrivningarna finns som kopieringsunderlag på nok.se/programmeraiteknik ]

• Introduktion

Beskriver målet med projektet.

• Materiel

Anger vilka komponenter som används.

• Gör så här

Beskriver steg för steg hur eleven ska koppla och programmera.

• Elektronik

Visar hur elektroniken ska kopplas samman.

• Beskrivning av elektroniken

Beskriver hur komponenterna fungerar i helheten och vad de fyller för funktion i projektet.

• Programkod

Visar den programkod som projektet utgår ifrån.

• Beskrivning av programkoden

Beskriver hur programkoden är uppbyggd och hur den styr elektroniken.

• Uppgifter

Beskriver hur elektroniken och programkoden ska ändras. Vägleder till hur uppgifterna ska dokumenteras.

Inledning  69

Hela boken.indd 69

2017-07-13 15:08


Gör så här I projektbeskrivningarna under rubriken Gör så här finns nedanstående arbetsgång: 1. 2. 3. 4.

Koppla ihop Arduinon med datorn. Koppla samman komponenterna på kopplingsdäcket. Skriv in programkoden. Prova att din krets och ditt program fungerar som de ska.

Det kanske kan verka konstigt att Arduinon ska kopplas till datorn innan kretsen kopplas samman, men det finns en anledning. Vi har nämligen märkt att datorn kan tappa kontakten med Arduinon om den kopplas in och ur hela tiden. För att allt ska fungera igen måste datorn startas om. När det är ström i kretsen kan det dock bli ganska krångligt att koppla in rörliga delar, exempelvis servon, eftersom de börjar röra på sig. En bra lösning kan därför vara att dra ut den kopplingssladd som går från Arduinons 5 V till kopplingsdäcket medan kretsen byggs. Innan koden skickas över till Arduinon kopplas denna sladd åter in. 9V EXTERNAL POWER

USB

ANALOG

A0 (D14) A1 (D15) A2 (D16) A3 (D17) A4 (D18) A5 (D19)

POWER

RESET 3.3V 5V GND GND Vin

DIGITAL

RESET

GND 13 12 ~ 11 ~ 10 9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0

Bryt strömmen till kopplingsdäcket när du du bygger projekten (i stället för att dra ur USB-sladden till Arduinon).

70

Kapitel 9

Hela boken.indd 70

2017-07-13 15:08


Förberedelser Precis som i all annan undervisning krävs förberedelser. Vissa självklara men andra är lätta att glömma. Här vill vi därför ge en liten påminnelse om vad som kan vara bra att ha gjort innan ni kör igång med projekten. Innan eleverna börjar arbeta med projekten bör du gå igenom vad Arduino är för något, hur komponenter kopplas ihop, hur eleverna skriver och för över programkod samt hur ett program byggs upp med setup() och loop() . Läs om detta i följande kapitel:

• Programmera elektronik (Kapitel 1) • Arduino – Signaler, spänning och ström (Kapitel 4) • Att programmera Arduino (Kapitel 7) Repetera begrepp som ström, spänning, jord och kopplingsscheman tillsammans med eleverna. Förstår de strömmens väg i en krets är det mycket lättare för dem att förstå hur och varför de olika komponenterna ska kopplas på ett visst sätt. Det underlättar också förståelsen för själva programmeringen. Plocka fram material och kontrollera att allt finns och fungerar. Det är annars lätt hänt att man får lägga mycket av sin undervisningstid på att hämta och laga material, när man egentligen vill hjälpa eleverna med själva programmeringen. Mot slutet av varje projekt finns lite mer fria uppgifter som ger eleverna större utrymme att koppla efter egna önskemål. Då är det bra att ha gott om sladdar i olika längder och lysdioder i olika färger redo. Inför tillämpningarna är det särskilt bra om det finns mycket materiel för eleverna att välja mellan, så att deras kreativitet kan få så fritt spelrum som möjligt. Förbered eleverna inför dokumentationen och bedömningen av projekten. I projektens uppgifter finns vägledning till hur arbetet kontinuerligt ska dokumenteras, men våra erfarenheter är att eleverna behöver stöttning för att få till en bra dokumentation. Uppmana eleverna att spara sina program efter varje uppgift. Dels kan eleverna gå tillbaka för att se sina tidigare lösningar, dels finns underlag för bedömning kvar. Programmen kan till exempel döpas till Elevnamn_Projekt_Ljud_Uppgift_3.

Inledning  71

Hela boken.indd 71

2017-07-13 15:08


PROJEKT | LJUD

s1

I det här projektet ska du koppla en krets som innehåller en högtalare och skriva ett program som får högtalaren att spela toner och melodier.

Materiel ▶ Arduino ▶ dator ▶ kopplingsdäck ▶ högtalare ▶ lysdioder (uppgift 6) ▶ motstånd 220 Ω (uppgift 6) ▶ kopplingssladdar Gör så här 1. 2. 3. 4.

Koppla ihop Arduinon med datorn. Koppla samman komponenterna på kopplingsdäcket enligt bilderna nedan. Skriv in programkoden som finns på nästa sida. Prova att din krets och ditt program fungerar som de ska.

Elektronik

80

KApiTEL 10

Arduino Projekt.indb 1

Hela boken.indd 80

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

2017-07-07 13:45

2017-07-13 15:08


PROJEKT | LJUD

s2

USB

ANALOG

A0 (D14) A1 (D15) A2 (D16) A3 (D17) A4 (D18) A5 (D19)

POWER

RESET 3.3V 5V GND GND Vin

DIGITAL

RESET

GND 13 12 ~ 11 ~ 10 9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0

Beskrivning av elektroniken Högtalarens ena ben är kopplat till jord. Det andra benet är kopplat till Arduinons digitala utgång 8, som styrs av programmet.

Programkod // Kod som körs en gång då ett nytt program laddas in i Arduinon void setup() { // tysta högtalaren (som är ansluten till port 8) // pinMode behövs ej då noTone gör port 8 till en utgång noTone(8);

Staffan Melin 2015

} // Slinga som utförs gång på gång så länge Arduinon är på void loop() { // spela en ton i 1000 millisekunder tone(8, 440, 1000); // behåll detta läge i 1000 millisekunder delay(1000); // tysta högtalaren noTone(8);

}

// behåll detta läge i 1000 millisekunder delay(1000);

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

Arduino Projekt.indb 2

Hela boken.indd 81

grunDLäggAnDE projEKT

81

2017-07-07 13:45

2017-07-13 15:08


PROJEKT | LJUD

s3

Beskrivning av programkoden Programmet styr högtalaren så att den spelar en ton med frekvensen 440 Hz (hertz, tonen A) under en sekund. Därefter tystar programmet högtalaren och väntar en sekund innan allt upprepas.

Uppgifter Nu har du kopplat, skrivit kod samt kontrollerat att allt fungerar, och det är dags att börja ändra i koden och kretsen. Detta gör du genom att arbeta med uppgifterna nedan. Tänk på att dokumentera ditt arbete och dina resultat enligt instruktionerna i uppgifterna så att din lärare kan se hur du arbetat och vad du lärt dig.

1. För att ändra hastigheten på ljudens växlingar ändrar du värdet i parentesen efter delay(). Värdet anges i millisekunder, tusendelar av en sekund. 1000 ms = 1 s. Ändra i programmet så att tonen blir längre men tystnaden förblir en sekund. Tips! Du behöver ändra värden på två ställen i programmet. Beskriv hur du prövade dig fram, vilka ändringar du gjorde och hur programmet nu fungerar. Använd begreppen tone() och delay().

2. Ändra i programmet så att både tonen och pausen blir kortare. Beskriv hur du ändrade programmet och hur det fungerar nu. Använd begreppen tone() och delay().

3. Gå tillbaka till det ursprungliga programmet. Ta bort tystnaden efter tonen, och lägg istället till en ny ton med en annan frekvens. Tips! Frekvensen är det andra värdet av de tre värdena efter tone(). Beskriv hur du ändrade programmet och hur det fungerar nu. Använd begreppet tone() och delay(). Funktionen tone() spelar en ton med hjälp av högtalaren. För att spela tonen behöver tone() information om tre saker:

■ ■ ■

Vilken port är högtalaren ansluten till? I det här programmet är den ansluten till port 8. Vilken frekvens ska ljudet ha? I det här programmet är den 440 Hz. Hur länge ska tonen spelas? I det här programmet spelas den i 1000 ms.

Det kanske kan verka konstigt att tonens längd måste anges på två ställen, dels i funktionen tone() och dels i den efterföljande delay()-funktionen. Anledningen till detta är att tone() sätter igång en ton som spelas i 1 000 ms. Ofta vill vi dock att tonen ska få spelas klart innan programmet fortsätter. Med hjälp av delay() får vi då programmet att vänta tills tonen spelat klart. Värdet i delay() ska vara minst lika långt som värdet i tone().

82

KApiTEL 10

Arduino Projekt.indb 3

Hela boken.indd 82

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

2017-07-07 13:45

2017-07-13 15:08


Kapitel 11

TILLÄMPNINGAR Det här kapitlet börjar med en kort presentation av tillämpningarna. Därefter följer projektbeskrivningarna.

[ Projektbeskrivningarna finns som kopieringsunderlag på nok.se/programmeraiteknik ]

Projekten i korthet Projekt Vandrande penna Eleverna bygger en insektsliknande maskin och skriver ett program som styr maskinen så att den kan vandra över en plan yta. Ge gärna dina elever i uppgift att utforma och smycka maskinen så att den får en personlighet!

• • • •

Tidsåtgång: 2 timmar Grundläggande projekt: Ljus och Servo Elektronik: Servo, kondensator Programmeringsbegrepp: myServo.attach(), myServo.write()

• Bibliotek: Servo Tips! Se till att biblioteket Servo är installerat på alla datorer innan eleverna börjar arbeta med projektet.

Projekt Flipperspel Eleverna bygger ett flipperspel. Grunden i spelet utgörs av en flipperarm som styrs med en strömbrytare. I projektet skapar eleverna ett spel som de sedan kan visa upp, gärna för elever i lägre årskurser!

Tillämpningar  111

Hela boken.indd 111

2017-07-13 15:08


• • • • •

Tidsåtgång: 3 – 4 timmar Grundläggande projekt: Ljus, Strömbrytare och Servo Elektronik: Servo, kondensator och strömbrytare Programmeringsbegrepp: if, myServo.write(), delay() Bibliotek: Servo

Tips! Se till att biblioteket Servo är installerat på alla datorer innan eleverna börjar arbeta med projektet.

Projekt Lyftkran Eleverna bygger en lyftkran som kan förflytta föremål både i höjdled och i sidled. Konstruktionen består av två servon som styrs av två potentiometrar. Ge gärna eleverna en uppgift som lyftkranen ska lösa!

• • • •

Tidsåtgång: 3 – 4 timmar Grundläggande projekt: Ljus, Motstånd och Servo Elektronik: Servo, kondensator, potentiometer Programmeringsbegrepp: myServo.attach(), myServo.attach(), analogRead(), map()

• Bibliotek: Servo Tips! Se till att biblioteket Servo är installerat på alla datorer innan eleverna börjar arbeta med projektet.

Projekt Robotfotboll En sensor och ett servo kan kombineras på många sätt. Med dessa två komponenter kan Arduinon både känna av och påverka omvärlden. I det här projektet bygger dina elever ”robotfotbollsspelare” som har förmågan att slå till en boll som kommer i närheten. Robotarna delas in i två lag som möter varandra i en match ”robotfotboll”. Varje grupp bygger varsin fotbollsspelare och ett lag bör bestå av minst två spelare. Eftersom projektet ger eleverna stor frihet i konstruktion av robotarna är det bra att anpassa planen för att maximera spelet, det vill säga chansen att robotarna träffar bollen. När vi har genomfört projektet med våra elever har vi byggt en plan enligt måtten som bilden på nästa sida visar. Vi har också haft en regel som säger att robotarnas basyta inte får vara större än 5 x 5 cm. Det är även bra att sätta en maxlängd på armen/foten, runt 15 cm.

112

Kapitel 11

Hela boken.indd 112

2017-07-13 15:08


Mål

Mål

40 cm

70 cm

• • • • •

Tidsåtgång: 4 timmar Grundläggande projekt: Ljus, Strömbrytare, Servo och Sensor Elektronik: Servo, kondensator och sensor Programmeringsbegrepp: if, myServo.write(), delay() Bibliotek: Servo och NewPing

Tips! Se till att biblioteken Servo och NewPing är installerade på alla datorer innan eleverna börjar arbeta med projektet. Gå igenom målet med projektet, hur reglerna för robotfotboll lyder och att det kan vara värt att tänka på hur ”spelarna” utformas och placeras taktiskt på planen.

Projekt Bil Eleverna bygger en enkel bil och skriver ett program som styr bilen så att den åker framåt, bakåt, svänger eller står stilla.

• • • •

Tidsåtgång: 6 – 8 timmar Grundläggande projekt: Ljus, Motorstyrning Elektronik: Motor, H-brygga Programmeringsbegrepp: Funktioner, analogWrite(), digitalWrite()

Tips! Om du behöver hjälp med att skriva funktionerna motorSvangVanster() och motorSvangHoger(), se Projekt Robot.

Projekt Robot Eleverna bygger samman delarna från de grundläggande projekten. Resultatet blir en robot som kan åka omkring på en plan yta utan att krocka med hinder. Låt eleverna bygga en personlig robot, det vill säga utforma den med huvud, färger med mera!

Tillämpningar  113

Hela boken.indd 113

2017-07-13 15:08


PROJEKT | FLIPPERSPEL

s3

Beskrivning av elektroniken Servot har tre anslutningar:

Kontroll. Är ofta orange. Via denna anslutning kan Arduinon styra till vilket läge servot ska rotera. Läget anges i grader. Servot monteras så att läge 90 grader är ”rakt fram”, vilket innebär att läge 0 grader är åt vänster, och läge 180 grader är åt höger.

Strömförsörjning. Är ofta röd och ska kopplas till 5 V på Arduinon. Denna ström driver servot. Signalerna som når servot via Kontroll kan ses som informationen om vilket läge servot ska rotera till, medan strömförsörjningen driver servots motor att inta detta läge.

Jord. Är ofta svart/brun.

Servot hanteras av ett så kallat bibliotek (engelska library). I ett bibliotek finns färdigskrivna funktioner som alla program kan använda sig av. Det enda som krävs är att du inkluderar dem i ditt program genom raden #include. Det bibliotek som du ska använda heter Servo. Kondensatorn hjälper till att leverera ström till kretsen när servot rör på sig.

Programkod #include <Servo.h> // ett bibliotek som låter oss använda servot int pinServo = 10; // servot är anslutet till D10 int pinButton = 5; // strömbrytaren är ansluten till D5 Servo myServo; // används för att kommunicera med servot void setup() { pinMode(pinButton, INPUT); // Läs av strömbrytaren

}

myServo.attach(pinServo); myServo.write(90); // ställ in utgångsläge på 90 grader

void loop() { // när strömbrytaren trycks ned rör sig servot if (digitalRead(pinButton) == HIGH) { myServo.write(180); // antal grader delay(500); // vänta 500 ms så servot hinner vrida sig

}

122

KApiTEL 11

Arduino Projekt.indb 3

Hela boken.indd 122

}

myServo.write(90); // gå tillbaka till utgångsläget delay(50);

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

2017-07-07 13:45

2017-07-13 15:08


PROJEKT | FLIPPERSPEL

s4

Beskrivning av programkoden Programmet roterar först servot till utgångsläget 90 grader. Då kan det rotera 90 grader åt båda håll. Därefter väntar programmet på att strömbrytaren ska tryckas ned. När den gör det ser programmet till att servot först roterar till läge 180 grader och sedan direkt tillbaka till ursprungsläget 90 grader. Den rörelsen slår till bollen.

Uppgifter Nu har du kopplat, skrivit kod samt kontrollerat att allt fungerar, och det är dags att börja ändra i koden och kretsen. Detta gör du genom att arbeta med uppgifterna nedan. Tänk på att dokumentera ditt arbete och dina resultat enligt instruktionerna i uppgifterna så att din lärare kan se hur du arbetat och vad du lärt dig.

1. Ändra i programmet så att flipperarmen får det utgångsläge som passar ditt flipperspel bäst. Beskriv hur du ändrade programmet (och eventuellt konstruktionen) och hur det nu fungerar. Använd begreppet myServo.write().

2. Ändra i programmet så att flipperarmen rör sig på det sätt som passar ditt flipperspel bäst, till exempel hur långt armen ska svänga när den slår till och hur länge den ska vänta innan den går tillbaka till utgångsläget. Beskriv hur du ändrade programmet och hur det nu fungerar. Använd begreppen myServo.write() och delay().

3. Lägg till ytterligare ett servo och en strömbrytare och ge flipperspelet två armar. Beskriv hur du ändrade programmet och konstruktionen och hur de nu fungerar. Använd begreppen myServo.write() och delay().

4. Lägg till lysdioder och högtalare så att ditt flipperspel får ljus- och ljudeffekter. Beskriv hur du prövade dig fram och ändrade programmet och konstruktionen samt hur det nu fungerar. Använd begreppen setup(), digitalWrite(), tone() och delay().

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

Arduino Projekt.indb 4

Hela boken.indd 123

TiLLäMpningAr

123

2017-07-07 13:45

2017-07-13 15:08


PROJEKT | LYFTKRAN

s1

I det här projektet ska du bygga en lyftkran som kan förflytta föremål både i höjdled och i sidled. För att det ska vara möjligt har lyftkranen två axlar som roterar med hjälp av varsitt servo.

Materiel ▶ Arduino ▶ dator ▶ kopplingsdäck ▶ två servon ▶ kondensator 100 µF, elektrolytisk

▶ ▶ ▶ ▶ ▶

två potentiometrar 10 kΩ fotoresistor kopplingssladdar byggmaterial (till exempel glasspinnar, plast eller kartong) krok eller magnet så att lyftkranen kan ta tag i saker

Gör så här 1. 2. 3. 4. 5.

124

KApiTEL 11

Arduino Projekt.indb 1

Hela boken.indd 124

Koppla ihop Arduinon med datorn. Koppla samman komponenterna på kopplingsdäcket enligt bilderna nedan. Skriv in programkoden som finns på sidan 3. Prova att din krets och ditt program fungerar som de ska. Konstruera din lyftkran. ■ Bygg en ställning så att lyftkranen kan stå stabilt. Servo 1 fästs i denna. ■ Fäst servo 2 på servo 1:s axel. ■ Bygg en arm som du fäster i servo 2:s axel så att den med denna kan nå ner till marken. ■ Ändra i programmet så att lyftkranen rör sig på det sätt som du tycker blir bäst. ■ Lägg till en krok eller magnet längst ut på lyftkranens arm och plocka upp gem, sladdar eller något annat.

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

2017-07-07 13:45

2017-07-13 15:08


PROJEKT | LYFTKRAN

s2

Elektronik

USB

ANALOG

A0 (D14) A1 (D15) A2 (D16) A3 (D17) A4 (D18) A5 (D19)

POWER

RESET 3.3V 5V GND GND Vin

DIGITAL

RESET

GND 13 12 ~ 11 ~ 10 9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0

Beskrivning av elektroniken Ett servo har tre anslutningar:

Kontroll. Är ofta orange. Via denna anslutning kan Arduinon styra till vilket läge servot ska rotera. Läget anges i grader. Servot monteras så att läge 90 grader är ”rakt fram”, vilket innebär att läge 0 grader är åt vänster, och l äge 180 grader är åt höger.

Strömförsörjning. Är ofta röd och ska kopplas till 5 V på Arduinon. Denna ström driver servot. Signalerna som når servot via Kontroll kan ses som informationen om vilket läge servot ska rotera till, medan strömförsörjningen driver servots motor att inta detta läge.

Jord. Är ofta svart/brun.

Servot hanteras av ett så kallat bibliotek (engelska library). I ett bibliotek finns färdigskrivna funktioner som alla program kan använda sig av. Det enda som krävs är att du inkluderar dem i ditt program genom raden #include. Det bibliotek som du ska använda heter Servo. Kondensatorn hjälper till att leverera ström till kretsen när servot rör på sig. En potentiometer är ett motstånd där vi kan ändra motståndets storlek genom att vrida på det. Genom att koppla det till Arduinons analoga ingång kan vi läsa av olika värden, från 0 till 1 023, beroende på hur mycket du vrider på potentiometern.

KOPIERINGSUNDERLAG © Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN 978-91-27-44869-8

Arduino Projekt.indb 2

Hela boken.indd 125

TiLLäMpningAr

125

2017-07-07 13:45

2017-07-13 15:08


– kreativa projekt med Arduino Programmera i teknik är en handbok för dig som är tekniklärare på högstadiet och som vill komma igång med programmering. Boken passar såväl nybörjare i programmering som mer erfarna.

konkreta verktyg och praktiska tips för att planera och utforma din undervisning genomgång av nödvändig elektronik grunderna i programmering kreativa och pedagogiskt utformade programmeringsprojekt med bedömningsstöd.

Författarna är tekniklärare med lång erfarenhet av programmering i sin egen undervisning.

Input-serien inspirerar till nya arbetssätt och metoder i det dagliga skolarbetet. Böckerna är avsedda att fungera som handböcker i den konkreta klassrumssituationen. Fler Input-titlar hittar du på nok.se/input.

Staffan Melin är lärare i teknik, matematik och fysik, civilingenjör och journalist.

ISBN 978-91-27-44869-8

Staffan Melin

• • •

– kreativa projekt med Arduino

Martin Blom Skavnes är lärare i teknik och NO, kodpedagog och musiker.

Bokens fyra delar ger dig:

Programmera i teknik

Martin Blom Skavnes

Boken kopplar samman programmering och praktisk elektronik med hjälp av den lilla datorn Arduino. Därmed flyttas resultatet av programmeringen från skärmen till den fysiska världen. Eleverna engageras när de direkt får se vad de har skapat. Innehållet i boken har tydlig koppling till kursplanen för teknikämnet.

Programmera i teknik

Programmera i teknik

Martin Blom Skavnes Staffan Melin

9 789127 448698

Programmera i teknik_170629.indd Alla sidor

2017-07-12 14:21


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.