Till KTH:s startsida Till KTH:s startsida

Visa version

Version skapad av Anders Lindström 2013-10-02 15:51

Visa < föregående | nästa >
Jämför < föregående | nästa >

Introduktion till Lego Mindstorms

Depositionsavgift

Innan gruppen kan hämta ut en robot måste en depositionsavgift, 2 500 kr för en robot, betalas i bokhandeln på plan 3.

Det finns projektskåp i sal 6024. Nyckel hämtas ut hos Micael Lundvall ... (tid anges senare).

Roboten, Lego Mindstorms NXT

http://mindstorms.lego.com/en-us/support/buildinginstructions/8547/8547%20user%20guide%20english.aspx - en teknisk beskrivning av robot, motor, sensorer m.m. Den byggbeskrivning som finns i början av dokumentet (steg 1-20) används som utgångspunkt för de enkla programexempel som presenteras längre ned.

Notera att ni kommer att använda er av programmeringsspråket NXC (Not eXactly C), inte det språk som anges i dokumentet ovan.

Programmeringsspråket Not eXactly C och utvecklingsmiljön Brix Command Center

http://bricxcc.sourceforge.net/ - utvecklingsmiljö, installationsinstruktioner

http://bricxcc.sourceforge.net/nbc/ - språket NXC, dokumentation och kodexempel
http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/ - dokument om syntax och alla fördefinierade funktioner

Några enkla kodexempel

Alla exempel nedan utgår från en robot byggd enligt steg 1-20 i beskrivningen ovan.

Komma igång

Koppla in den påslagna roboten till datorn med den medföljande USB-kabeln innan du startar BrixCC. När du startar BrixCC försöker utvecklingsmiljön kontakta roboten väljer du inställningarna nedan (för att kontakta en robot när BrixCC redan är igång väljer du Tools > Find Brick från menyn).
None

Kommandon för att kompilera kod, ladda ned kod till roboten samt exekvera kod finns på menyn Compile.

Syntax

Syntaxen för NXC liknar till stora delar C, men är något begränsad. Det finns dessutom ett stort antal fördefinierade funktioner för att t.ex. styra motorer eller läsa av sensor-värden.
Det går att definiera funktioner och funktionsprototyper (dock inget stöd för separata header-filer). NXC skiljer på procedurer, som inte returnerar något (d.v.s. void), respektive funktioner, som returnerar något.

Några enkla kodexempel

Kodexemplen hittar du undersidor till denna sida samt i denna zip-fil: NXC-examples.zip

Hello World

Alla NXC program börjar startar med "task main()". 
helloWorld.nxc spelar upp en ljudsekvens. 

Funktioner, procedurer

amoebaWithFunctions innehåller några korta procedurer (svänga, backa) samt ett main. Programmet läser av ultraljudssensorn. Om avståndet till ett hinder är < 15 cm backar roboten, svänger och försöker ta sig fram i den nya riktningen.

throwDice.nxc innehåller en enkel funktion (returnerar ett tal i intervallet 1-6) och en enkel procedur.. Huvudprogrammet läser av en trycksensor (som en knapp); om man trycker på sensorn slumpas ett tal 1-6 och visas på displayen.

Exempel med färgsensorn

colorSensorRaw.nxc läser rådata från färgsensorn i form R, G och B-värden.
colorSensor.nxc läser data med en funktion, ReadSensorColorEx, som  matchar sensorns värde mot en uppsättning färger.