Lego Mindstormprogrammering

Relevanta dokument
Laboration - Programmering av LEGO Mindstorm robot

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

Programmera Lego Mindstormsrobotar

Laboration i datateknik

LEGO NXT Robotprogrammering

Introduktion i programmering med språket NXC

Labbrapport - LEGO NXT Robot

Programmering av LEGO NXT Robot

KUNG. TEKNISKA HÖGSKOLAN. Laboration. Programmering av LEGO-robot

LEGO Mindstorm-robot

[Introduktion till programmering ]

Laborationsrapport av robotprogrammering

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

KUNGLIGA TEKNISKA HÖGSKOLAN. Laboration II1310. Programmera Lego Mindstorm robot i NXC

Robotprogrammering felsökning & analys.

Peter Ottosson 31/ Introduktionskurs i datateknik II1310

Programmering av LEGO NXT Robot

Robotar i NXc. En laboration med Mindstormrobotar. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Kevin Lane Kungliga Tekniska Högskolan Introduktionskurs i Datateknik (II1310) TIEDB0. [NXT Legorobot] [Programmering och felsökning]

Felsökning av mjukvara

KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!

KUNGLIGA TEKNISKA HÖGSKOLAN. Linefollower. Med LEGO Mindstorms och NXC. Paul Coada Introduktion i datateknik II1310

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Praktisk programmering

Simon Johansson Introduktionskurs Datateknik 1310

Simon Boström Introduktionskurs i Datateknik

Programmering av LEGO NXT robot Laborationsrapport för programering av robot för att följa svartmarkerad linje på maken

Programmering med NXC Lego Mindstorm

Laboration i datateknik

Programmering av en Lego robot

Labbrapport. Introduktionskurs i datateknik (II1310) Stefan Dalarsson,

Programmeringslaboration med LEGOrobot

Programmera LEGO NXT

Felsökande av en Lego Mindstorm robot

Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC

Programmera en NXT Robot

Labbrapport LEGO-robot linefollower

PROGRAMMERING AV LEGO-ROBOT VIA NXC

LEGO Robot programmering och felsökning Hur svårt ska det vara att följa den svarta linjen?

[Introduktionskurs i Datateknik]

Introduktion till programmering med hjälp av Lego Mindstorm

LPP Programmering. Syfte, övergripande mål Lära känna och kunna utföra enkla programmeringar i Scratch samt Lego Mindstorms.

Om NXTprogrammering. Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT? Vad är MINDSTORMS NXT?

Laborationer i SME094 Informationsteknologi I för

Föreläsning 1: Intro till kursen och programmering

LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT. Honey Hunter. Androidspel. Martin Karlsson 1/17/2014

Strukturerad problemlösning. Metoder och verktyg för datavetare Ht09

Föreläsning 1: Intro till kursen och programmering

TDIU01 (725G67) - Programmering i C++, grundkurs

Kojo med Inga Ingenjör

Editering, Kompilering och Exekvering av Javaprogram

Grundkurs i programmering - intro

PlantPuppy Räddaren för den som inte kan hålla växterna vid liv

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Programming in C# and.net Framework

Konstruera, styra, reglera och programmera en röd tråd F-9

Roboten. Sida 1 av 11

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

Välkomna till DIT012 IPGO

Välkomna till kursen i grundläggande programmering DVGA08, ISGA04

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

LEGO MINDSTORMS Education EV3

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmering från början

Scanner Detektor lärarhandledning Mojäng

Programmeringsteknik II

Programmeringsteknik I

Slutrapport Thunderbug

Legorobot. Lär dig programmera en legorobot. Teknikåttan Ola Ringdahl Lena Kallin Westin

Programmera och hitta buggarna. Se video

Programmering. Den första datorn hette ENIAC.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 1: Introduktion till kursen

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 ANVÄNDANDET AV SENSORER... 4

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Objektorienterad programmering

Pedagogisk planering. Ron Chlebek. Centralt Innehåll. Svenska/Engelska. Lego Mindstorms. Syfte: Matematik

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Programmering. Analogt och med smårobotar. Nina Bergin

Extramaterial till Matematik Y

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Programmering, dans och loopar

Programmering som språk

Snabbstartsguide. för programmering med KUBO

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Säker programmering - Java

Lego Robot [ ] [ ] [ ]

Koda ett mattetest 1 av 5. Lektionen handlar om att använda programmeringskunskaper för att skapa ett enkelt multiplikationstest.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

ELEKTRONIK. Ämnets syfte. Kurser i ämnet

Programmering. ur ett ämnesövergripande perspektiv

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

EV3 Roboten. Sida 1 av 13

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

Slump och statistik med Scratch

Kursplanering för EE3D i kursen Programmering 1, 100p.

Uppdrag för LEGO projektet Hitta en vattensamling på Mars

Transkript:

KUNGLIGA TEKNISKA HÖGSKOLAN Lego Mindstormprogrammering med NXC Björn Ehrby 2013-08-26 behrby@kth.se II1310 - Introduktionskurs i datateknik

Sammanfattning Lego har en serie programmerbara robotar som heter Mindstorm NXT, som går att programmera med programmeringsspråket NXC. Syftet för uppgiften var att lära elever med lite förkunskaper grunderna i programmering. Som utvecklingsmiljö användes programmet BricxCC och programmeringstekniken par-programmering tillämpades. Med hjälp av par-programmeringen lyckades vi tillsammans korrigera ett antal fel i koden och till slut få roboten att följa en svart linje och mata ut text på displayen. Laborationen gav oss en bra introduktion i programmering och tjänade därför sitt syfte mycket väl. Innehållsförteckning Sammanfattning... 2 1. Inledning... 3 1.1 Bakgrund... 3 1.2 Syfte och målsättning... 3 2. Genomförande... 3 3. Resultat... 4 4. Analys... 4 5. Diskussion... 4 Referenser... 5 Bilagor... 5 Informationsteknik Kungliga Tekniska Högskolan Sida 2 av 5

1. Inledning Laborationen handlar om att modifiera ett program till en Lego Mindstorm NXT-robot samt få insikt i ett C-likt program ser ut. Laborationen går även igenom grunderna i par-programmering. 1.1 Bakgrund Lego har producerat en serie programmerbara robotar som heter Lego Mindstorm NXT. Dessa kan programmeras med ett antal olika programmeringsspråk, dock har vi i denna laboration endast fördjupat oss i det öppna språket NXC. Detta är ett språk som syntaktiskt liknar språket C, som är språket som legat till grund för många andra språk. Par-programmering som appliceras i denna uppgift är ett effektivt programmeringssätt för att undvika fel vid programmering genom att en person skriver kod och den andra personen kontinuerligt granskar koden. På så sätt undviks misstag och programmeringen blir mer effektiv. 1.2 Syfte och målsättning Grundläggande programmeringskunskaper, problemlösning och teamwork är viktiga egenskaper för en ingenjör. Speciellt viktigt är programmeringskunskaper för ICT-studenter. I den här laborationen får eleven pröva på att jobba i ett språk som liknar C för att programmera Lego-robotar. Det är viktigt att eleven får en introduktion till C-syntax, då flera andra språk bygger på denna. Eleven får även pröva på par-programmering, som är en viktig programmeringsteknik. Syftet med laborationen är just att ge eleven programmeringsvana och lite hands-on erfarenhet där eleven känner ändringar i koden får en direkt motsvarighet till verkligheten. 2. Genomförande Labb-PM lästes igenom på Bilda samt drivrutin, mjukvara och kodfil laddades ned. Drivrutin installerades och program packades upp. Kodfilen gick att öppna i programmet. Guiden Programming LEGO NXT Robots using NXC lästes igenom innan laborationen. Programmet kompilerades och fel upptäcktes. Felet korrigerades och programmet kompilerades igen. Vid testning upptäcktes det att ytterligare logiska fel fanns kvar. Vi turades om att vara driver respektive navigator i par-programmeringsparadigmet och vi hittade tillsammas de resterande felen genom lusläsning av kod samt lite trial-and-error. Programmet testkördes kontinuerligt efter smärre kodändringar, för att se effekterna av dessa ända tills programmet fungerade. Informationsteknik Kungliga Tekniska Högskolan Sida 3 av 5

3. Resultat Följande kodändringar gjordes. Radnummer Ny kod Kommentar 1,2 #define SpeedSlow 40 Ändrade hastigheter. #define SpeedFast 80 34 string groupmembers[] = { Bytte från int till string. 35,36 "Hannes", "Bjorn" Våra namn lades till. Dock gick det ej att använda ö i texten. 46 TextOut(0, (LCD_LINE2 - (8*(i+2)-16)), names[i]); Använder i +2 för att justera radavstånd. Dock hade -16 varit ett smidigare alternativ. 52-55 /* */ Kommenterade bort dance(). 76 lightintensity = SensorRaw(IN_3); Bytte sensor till ljussensorn. 94 OnFwd(OUT_A, SpeedFast); Ändrade till Fast för att få svängen att upphöra. 98 OnFwd(OUT_B, SpeedSlow); Ändrade till Slow för att få en sväng. Roboten lyckades följa den svarta linjen ända in till väggen. Därefter visade den en korrekt formaterad text på displayen över vilka som var med i gruppen och en kort melodi spelades upp. 4. Analys Ändringarna på rad ett och två var bara för att få en lugnare sicksack-rörelse, lite olika värden testades ända tills vi kom fram till något vi tyckte var passande. Det tog sedan ett tag innan vi upptäckte felet på rad 76, men efter det felet var korrigerat fungerade programmet mer eller mindre felfritt. Vi kommenterande också bort funktionen dance() då denna inte fyllde någon funktion och endast gjorde det svårare för roboten att hitta linjen. 5. Diskussion Jag tyckte att laborationen gav oss en bra introduktion till programmering och fick oss att lära oss skillnaden på kompileringsfel och logiska fel. Då jag redan kunde en hel del om programmering var just det här inte speciellt lärorikt, har även jobbat med Lego Mindstorm NXT-robotar tidigare. Dock är det alltid bra att öva på C-syntax och i allmänhet att programmera. Par-programmering var något nytt för mig och om det appliceras bra kan det säkert vara en bra teknik, dock var denna uppgift för simpel för att riktigt uppskatta alla fördelar programmeringstekniken har. Informationsteknik Kungliga Tekniska Högskolan Sida 4 av 5

NXC verkar vara ett relativt enkelt språk som jag gärna vill jobba i igen. Dock verkar det begränsat till endast Mindstorm-robotar, vilket gör att användningsområdena inte blir så många. Programvaran BricxCC var även den simpel att använda och fungerade utan problem. Referenser Labb-PM på Bilda, https://bilda.kth.se/courseid/10164/content.do?id=21060042 Programming LEGO NXT Robots using NXC.pdf, på Bilda. Bilagor Informationsteknik Kungliga Tekniska Högskolan Sida 5 av 5