Digitala Projekt VT13. PING-Pong

Relevanta dokument
TETRIS. LTH, Campus Helsingborg EITA15 Digitala System

The Intelligent Timer

Helena Harrysson och Linnéa Wickberg

Temperaturmätare med lagringsfunktion DIGITALA PROJEKT EITF11 GRUPP 14, ERIK ENFORS, LUDWIG ROSENDAL, CARL MIKAEL WIDMAN

Snake. Digitala Projekt (EITF11) Fredrik Jansson, I-12 Lunds Tekniska Högskola,

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

Digitala Projekt (EITF11)

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Digitala projekt, EDI021 Rapport Handledare: Bertil Lindvall

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

Innehållsförteckning. Figur- och tabellförteckning. Figure 1 Blockschema över hårdvaran...4 Figure 2 Blockschema över programet...

The Secure Light. Digitala Projekt EITF11. Hanna Tinglöf, I-12 Anna Horvath, I-12 Filippa Österlin, I-12. Handledare: Bertil Lindvall

Gustaf Backman, Anton Nystedt, Nicholas Peebo Battleships. Lunds tekniska högskola. EITF11 Digitala projekt

Projekt EITA15. Väckarklocka. LTH Ingenjörshögskolan vid Campus Helsingborg Datateknik

Digitalt Projekt: Radiostyrd Bil

Pulsmätare med varningsindikatorer

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Department of Information Technology Digitala projekt. SuperKull. Daniel Öhman Alexander Persson

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Digitala projekt rapport

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Växtviskaren EITF11 Digitala projekt VT15, I12

Digitala Projekt(EITF40) - Larm

EITF11. WormFight. Axel Eriksson, Felix Geuken Handledare: Bertil Lindvall EITF11

Projektrapport i Digitala System

PROJEKTTYP: Rapportsammanfattning STUDENTER: Larsson, J. ( ) och Oredsson, J. ( ) DATUM: 26 april, 2015

Bilen som inte kan krocka

TEMPERATUR OCH VINDMÄTARE MED HÖGTALARFUNKTION

Whac A mole. Ett rektionstest i kursen Digitala Projekt EITF11 utfört av: Axel Spångberg I10 Marcus Witting I10. Handlett av: Bertil Lindvall

RemoteBud. Inlämnas: Patrik Johnsson, e01pjo Viktor Karlsson, e01vk

Digital Projekt EDI 021 Konstruktion av talande nummerpresentatör VT1 2004

DEPARTMENT OF INFORMATION TECHNOLOGY. Digitala Projekt. Redovisning av Projekt - Grupp 14

EDI021 Digitala projekt. Rapport LARMSYSTEM. Utförd av: Niklas Eklund E03 David Olsson E04. Inlämnad:

Digitala Projekt (EITF11) Hemlarm

Digitala projekt - Radiostyrd bil

Avståndsmätare. Digitala System EITA Grupp 7. Abdelsalem Yabrag, Abdulhadi kikar, Fredrik Peterson, Jesper Annefors

Konstruktion av en radiostyrd legobil. Digitala projekt av Arbon Vata Leonardo Vukmanovic Amid Bhatia

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Pong Mayhem. Innehållsförteckning Inledning Kravspecifikation Komponenter/Hårdvara Arbetsprocess Reflektion...

Effektpedal för elgitarr

DIGITALA PROJEKT (EITF40) Fartmätare

Digitala Projekt Konstruktion av Tamagocchi. Av: Oskar Andersson D05 & Danial Rehman D05

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

DIGITALA PROJEKT Väderstation

LABORATION. Datorteknik Y

Labyrintspelet EDI021 Grupp 5

Tetris By Tobbe. EDI021 Digitala Projekt. Tobbe Lundberg Handledare: Bertil Lindvall. Lund, Mars 2009

Pulsmätare Digitala Projekt EITF11

Digitala projekt Linjeföljande bil

EITF11 Digitala Projekt TIC TAC TOE. Lukas Ljungblom & Johan Lyckenvik I-13 Handledare: Bertil Lindvall

Jan Babor och Oscar Ågren Handledare: Bertil Lindvall 5/16/2011

UDPong - Pong over UDP

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Design av inbyggda system

DANCING ROBOT. EITF11, Grupp 10. Kajsa Salomonsson, Hugo Hedin och Petter Mårtensson

PROJEKT STAFFAN STALLEDRÄNG

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Innehåll. 1 Inledning 3

Programmera i teknik - kreativa projekt med Arduino

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

LUNDS TEKNISKA HÖGSKOLA. Väderstation. Digitala Projekt, EITF11. Martin Olofsson, I08 & Fredrik Oher, I08 Vt 2012

Programmering. Scratch - grundövningar

Cacheminne Intel Core i7

Laboration i datateknik

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Hur ser Blue-Bot ut i aktion?

Design av inbyggda system

Enchipsdatorer med tillämpningar LABORATION 7, ROBOT

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Robotfotboll med Arduino

Programmering av stegmotorer ett miniprojekt i samarbete med Svensk Maskinprovning

LABORATION. Datorteknik Y

Fyra i rad Javaprojekt inom TDDC32

Design vid utveckling av inbyggda system

Jämförelse av skrivtekniker till cacheminne

Projektrapport Målgång

TEMPERATURMÄTARE MED GRAFRITARE

1 Kravspecifikation Snake App

Accelerometer. Rikard Ekström Mattias Kindborg. Informationsteknologi Lunds Universitet

Tentamen PC-teknik 5 p Lösningar och kommentarer

Micro:bit. Börja skapa egna program

Liftmaestro. Lunds Tekniska Högskola Elektro- och informationsteknik. Olle Gemfors, I13 Dayanand Sagar, I13 Mattias Wendler, I13

Datorprojekt, del 1. Digitala system 15 p

Projektrapport - Roterande digital LED-klocka

Slutrapport Get it going contracts

Goda råd från studenterna som gjorde kandidatprojektet 2018

Feeding Daisy. EITF11 Lunds Tekniska Högskola. Grupp 12: Pontus Akervall Louise Landare Anton Schölin. En automatisk blomvattnare

Objektorientering i liten skala

Digitalt lärande och programmering i klassrummet

16. VOLLEY Volley är tillåtet dock inte på serven.

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

Väderstation. Digitala Projekt EITF11 Institutionen för Elektro- och Informationsteknik Lunds Tekniska Högskola

EITF40 - RFID-terminal. Joakim Marculescu (dt08jm6), Eric Johansson (dt08ej6)

Design av inbyggda system

HexaFlip. Kravspecifikation

Testning av applikationer

Lunds Tekniska Högskola EITF11 Digitala projekt. Bandspelaren

PROGRAMMERING I NXC. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Nätverksprogrammering, EDA095

Transkript:

Digitala Projekt VT13 PING-Pong Författare: Patrik Karlsson I-10, Erik Friberg I-10 Handledare: Bertil Lindvall Projektarbete Institutionen för Elektro- & Informationsteknik 2013-05-20 Abstract The purpose of this paper is to describe the project in which we have built and programmed a game-console. It describes the way we have structured our project, how we have executed the building process and what problems we have had during the project. During the project we have bumped in to numerous of challenges, which have given us a lot of valuable lessons. In the end we succeeded with the project and a prototype of a classic Pong-game was built.

Innehållsförteckning 1. Inledning... 3 1.1. Bakgrund... 3 1.2. Syfte... 3 1.3. Avgränsningar... 3 1.4. Rapportöversikt... 3 2. Kravspecifikation... 4 2.1 Högt prioriterade krav... 4 2.2 Lågt prioriterade krav... 4 3. Hårdvara... 5 3.1. Processor... 5 3.2. Display... 5 3.3. Knappar (Inkl. Or-gate)... 5 4. Mjukvara... 6 5. Genomförande av arbete... 6 5.1 Planering... 6 5.2 Hårdvarukonstruktion... 6 5.3 Programmering... 7 6. Slutsatser... 8 6.1. Resultat... 8 6.2. Diskussion... 8 6.3. Förslag kring fortsatt arbete... 8 7. Referenslista... 9 8. Appendix... 10 8.1 Kopplingschema... 10 2

1. Inledning 1.1. Bakgrund Kursen Digitala projekt - EITF11 är en konstruktionskurs under vilken vi projektdeltagare får en förståelse för hur konstruktionsarbete går till. Vi har under kursens gång, med hjälp av handledare, konstruerat en prototyp med tillhörande dokumentation. Som projekt valde vi att göra en prototyp av ett Pong-spel. Det finns främst två anledningar till varför vi valde just detta. Den första var att vi redan från början hade en bra plan för hur vi skulle kunna genomföra projektet och den andra var de möjligheter som fanns att utveckla produkten i mån av tid. 1.2. Syfte Vårt främsta syfte med projektet var att få en förståelse för samspelet mellan hårdvara och mjukvara. Att själva styra hela utvecklingsprocessen, från planering till utförande, ger en god inblick i de problem och möjligheter som kan uppstå under den här typen av projekt. 1.3. Avgränsningar Detta projekt innefattar kopplande av hårdvara, skrivning av mjukvara till denna samt integration mellan mjukvara och hårdvara. Dessutom skall dokumentation av alla projektdelar finnas. 1.4. Rapportöversikt I inledningen av rapporten beskrivs de krav vi ställde på systemet i början av projektet och som vi sedan har jobbat mot som mål under projektets gång. Vi går vidare med att beskriva vilken hårdvara och mjukvara vi använder samt hur vi har genomfört arbetet innan vi slutligen summerar projektet under rubriken Slutsatser. I appendix finner läsaren vårt kopplingsschema. 3

2. Kravspecifikation Nedan presenteras de krav som finns på systemet. Högt prioriterade krav är de krav som skall tillgodoses för att programmet skall anses färdigt. Lågt prioriterade krav är funktioner som skulle göra systemet bättre men som endast görs i mån av tid. 2.1 Högt prioriterade krav Pong ska kunna spelas på konsolen, med följande funktioner: o Det skall finnas en racket på varje sida om planen och dessa ska kunna flyttas i höjdled för att spela bollen. o Om bollen når toppen eller botten av spelplanen ska den studsa tillbaka. o Om en boll passerar någon racket ges poäng till motståndaren och poängställningen visas. o Hastigheten på bollen ökas gradvis upp till en viss maxnivå. o En ny boll startas genom att trycka på röd knapp. o Displayen stängs av genom att trycka på svart knapp och poängräkningen nollställs (sätt igång igen med röd knapp). Spelet skall styras av två knappsatser med vardera två knappar Spelet skall presenteras på en LCD-skärm 2.2 Lågt prioriterade krav Spelarna kan ställa in hur många bollar som ska spelas samtidigt. Spelet har en lista med rekorden på längst pågående matcher 4

3. Hårdvara 3.1. Processor Prototypens processor är en ATMega16. Denna processor har ett minne på 16kb samt 40 pinnar fördelade på fyra portar namngivna A D. Port B används för att skicka data från processorn till skärmen. Dessa data består antingen av koordinater eller vilka pixlar som ska vara tända eller släckta. Port A används för att skicka instruktioner till displayen för hur den ska tolka den data som skickas från port B. Port C används för J-tag, vilken används under programmeringsdelen. Port D används för de knappar som finns på prototypen. Även en OR-funktion är inkopplad till de pinnar som hanterar externa avbrott för att effektivisera prototypen. 3.2. Display Prototypen använder en 128 x 64 LCD-display för att visa spelet. Denna display är uppbyggd av två displayer med storleken 64 x 64 pixlar. De två displayerna hanteras individuellt. 3.3. Knappar (Inkl. Or-gate) Knapparna som används är av standardtyp. Varje spelare har ett knapp-par med vilket den kan röra racket antingen upp eller ner. När de trycks ner släpper de igenom en ström till respektive pinne som då blir hög. Om ingen knapp trycks ner är alla pinnar låga. För att effektivisera användandet av knapparna så är varje knapp-par kopplat till varsin ORgrind så att processorn endast läser av knapparna när pinnen som OR-gaten är kopplad till är hög. 5

4. Mjukvara Programkoden är skriven i C och den kan hittas i sin helhet på projektets hemsida. Då vi aldrig riktigt behövde oroa oss för minnesbrist så har vi haft möjlighet att lagra spelets status (som t.ex. position och om spelet är pausat eller ej) vilket har gjort att vi oftast inte behöver utläsa detta från skärmen utan istället kan använda dessa variabler för att hantera de olika situationer som kan uppstå. Spelet bygger på en huvudloop som pausar systemet till dess att en svart knapp trycks ner och spelet stängs av eller tills att en röd knapp trycks ner och en ny boll startas. När någon spelare förlorar bollen så skriver skärmen ut poängställningen innan systemet återvänder till pausloopen. 5. Genomförande av arbete Arbetet under projektet skulle kunna delas in i följande tre faser; planering, hårdvarukonstruktion samt programmering. 5.1 Planering Första steget i projektet var att inom gruppen diskutera vad vi ville göra för prototyp. Efter många diskussioner och noggrant övervägande föll valet tillslut på en spelkonsol. Vi valde att spelet på konsolen skulle vara Pong eftersom vi redan från början hade en plan för hur vi skulle vilja utforma det. Efter att ha valt vad vi ville göra för projekt så var det dags att planera mer detaljerat. Det första vi gjorde var att utforma en kravspecifikation. Vi hade många olika idéer för vilka möjligheter vårt spel skulle ha, och tillslut valde vi att dela upp dessa i hög-prioriterade och låg-prioriterade krav. Slutligen insåg vi att vi var tvungna att utforma någon slags projektplan för att strukturera upp vårt arbete. Även om vi under arbetets gång har varit tvungna att revidera denna ett flertal gånger har den ändå varit av stor nytta för oss. 5.2 Hårdvarukonstruktion Så var det äntligen dags för att påbörja byggandet av vår prototyp. Med tanke på vår bristande kunskap inom området var vi tvungna att läsa på en hel del först. När vi kände oss varma i kläderna utformade vi ett kopplingsschema och ytterligare ett par stöddokument för att kunna koppla så smidigt som möjligt. 6

Det sista vi behövde göra innan vi kunde börja bygga var att införskaffa alla nödvändiga komponenter, dessa beskrivs mer under rubriken 3. Hårdvara. Efter detta började ett par dagars intensivt lödande och virande. När vi tillslut hade dragit alla trådar samt testat för möjliga glappkontakter och kortslutningsmöjligheter så var det dags att ansluta med J-tagen. 5.3 Programmering Då vi tidigare aldrig har programmerat i C så krävdes det i början lite tid för att sätta sig in hur detta fungerar samtidigt som man även fick lära sig att utläsa relevanta instruktioner ur databladen. Mycket av programmeringsarbetet har bestått i att strukturera koden och skapa funktioner som gör att huvuddelen av programmeringen kan ske intuitivt istället för att hela tiden programmera direkt mot portarna. Detta kan t.ex. ses i den write -funktion som används genom att bara skicka in vilka koordinater som ska markeras, vilken del av skärmen det ska ske på samt vad som ska skrivas ut på dessa pixlar, och all kod som krävs för att göra detta behöver därför bara skrivas en gång vilket har minskat antalet ställen där saker kan gå fel i koden. Vissa problem har dock uppstått längs vägen och dessa har då främst berott på det faktum att skärmen måste hinna bli färdig med tidigare instruktioner för att kunna hantera nya anrop samt att skärmen vid vissa tillfällen inte beter sig riktigt som den borde och att man därför måste minska den påverkan som dessa buggar skulle kunna ha (genom att t.ex avmarkera skärmhalvorna så fort de inte används). 7

6. Slutsatser 6.1. Resultat Vår prototyp överensstämmer väl med de mål vi satte upp vid projektets början. Alla högprioriterade mål är uppfyllda, men de låg-prioriterade är inte uppfyllda då dessa visade sig vara mer komplicerade att genomföra än vi trodde samtidigt som tiden inte räckte till. 6.2. Diskussion Under kursens gång har vi blivit varse om att våra grundkunskaper inom såväl C- programmering som hårdvarukonstruktion inte varit speciellt bra. Detta har dock gjort kursen desto mer intressant då vi har varit tvungna att lära oss dessa saker för att komma vidare i projektet. En annan utmaning har varit att kursen rent tidsmässigt är så fri. Vi insåg ganska snabbt att vi var tvungna att utforma en projektplan för att bli klara i tid. Nästa problem var då att uppskatta tidsåtgången för de olika delarna av projektet eftersom i princip alla delar var helt nya för oss. Med facit i hand var det bra att vi hade en projektplan, men hade vi skrivit den idag hade den sett väldigt annorlunda ut. Efter många veckors hårt arbete var det med stor lättnad och glädje som vi kunde konstatera att vår prototyp var färdig. Det har varit oerhört inspirerande och frustrerande att bygga något från grunden, och när vi nu summerar kursen är det bara att konstatera att vi har blivit en nyttig erfarenhet rikare. 6.3. Förslag kring fortsatt arbete För en spelkonsol av den typ som vi byggde finns ändlöst med möjliga vidareutvecklingar. Dels går det att utveckla det spel vi nu har skrivit, bl.a. genom de låg-prioriterade krav vi satte upp i början av projektet, men det går även att implementera andra spel och program. Vårt nästa steg i utvecklingen av prototypen hade troligen varit att förbättra användargränssnittet för att förbättra användarupplevelsen. På denna front har vi många idéer på saker vi skulle vilja förbättra, men då vi kände att detta skulle ta oproportionerligt mycket tid i förhållande till hur mycket nya saker som vi skulle lära oss av det så har vi valt att inte göra detta inom projektets ramar. 8

7. Referenslista [1] Starta med Power Logic (PDF), http://www.eit.lth.se/fileadmin/eit/courses/edi021/pdf_files/powerlogic/power_logic.pdf [2] ATmega16 High-performance AVR 8-bit Microcontroller, http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/processors/atmega16.pdf [3] 128 X 64 Graphic Display, http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/display/gdm12864c.pdf [4] 74HC32 - Quad 2-Input OR http://www.eit.lth.se/fileadmin/eit/courses/edi021/datablad/logik/74hc/74hc32.pdf [5] Manual - Interrupts [6] Manual Convenience funtions for busy-wait delay loops http://www.eit.lth.se/fileadmin/eit/courses/edi021/avr-libc-usermanual/group avr interrupts.html http://www.eit.lth.se/fileadmin/eit/courses/edi021/avr-libc-usermanual/group util delay.html 9

8. Appendix 8.1 Kopplingschema 10