keskiviikko 21. toukokuuta 2014

Loppuraportti

1. Projektityön valinta

Projektityöni oli Arduinolla tehty reaktiopeli neljällä ledillä ja neljällä kytkimellä sekä LCD-näytöllä. Löysin idean peliin, kun googlasin "Arduino projects" tai jotakin vastaavaa. Peli oli samantyylinen kuin mitä olin suunnitellut, ei kuintenkaan aivan samanlainen. Siinä oli esimerkiksi elämäpisteet ja mahdollisuus kerätä extrapisteitä.


2. Projektiryhmä

Tein projektin yksin, joka oli varmasti yksi syistä siihen, että projekti eteni kurssin alussa suunnitellun aikataulun mukaisesti loppuun asti. Näin jälkeenpäin voin myös todeta, että projektissa ei olisi ollut työtäkään useammalle kuin yhdelle.  


3. Projektin valmistelu

Ennen varsinaista projektin aloittamista tein projektisuunnitelman Openofficella ja myöskin Openproj -ohjelmalla. Projektiin tarvittavat osat löytyivät Arduinon komponenttilaatikosta demo-versiota varten. Viimeistä versiota varten tilasin netistä värilliset painokytkimet. 

Projektisuunnitelma


4. Projektityön suorittaminen

Aloitin itse projektin suunnittelemalla komponenttien sijoittelun levylle. Digitaaliset portit olivat lähellä loppua kesken. Jouduin ottamaan kaikki mahdolliset portit käyttöön, myöskin portit 0 ja 1, että saan LCD-näytönkin toimivaksi. Kun sain kaikki komponentit järkevästi sijoiteltua demo-levylle, aloitin koodin kirjoittamisen. Pohjaksi löysin samantyylisen pelin koodin, josta kopioin lähinnä kohdan, jossa tietyn ledin syttyessä piti painaa tiettyä kytkintä, että valo sammuu ja seuraava syttyy.

Koodin valmistumiseen meni eniten työvaiheista aikaa, n. 6 työpäivää, eli jaksomme tuntimäärällä kolme viikkoa. Tämä oli myös työvaiheista ainoa, joka kesti enemmän kuin aikatauluun suunnittelin. Projekti pysyi kuitenkin helposti aikataulussa, koska puolestaan useampaan muuhun vaiheeseen meni oletettua vähemmän aikaa. Lopulliseen koodiin tuli muun muassa aloitus- ja lopputekstit, pelin päätyttyä pelajaan taso, eli "rank" (Beginner, Intermediate, Professional, Champion), normaali pistelasku (1 oikea painallus = 1 piste), sekä "highscore", eli paras tulos mitä pelissä on saatu. Muisti tosin tyhjenee kun peli sammutetaan.

Aloitusteksti


Pistelasku


Peli hävitty


Kuva rankista


Highscore


Hävityn pelin jälkeen

Kun olin saanut koodista toimivan haluamallani ominaisuuksilla, aloin suunnittelemaan pelin "ulkoistusta" pois Arduinon harjoituslaudalta. Aloitin vaiheen katkomalla sopivia paloja piirin jaloista ledeille ja näytölle, ettei kyseisiä Arduinon omia komponenttejä tarvitse suoraan tinata kiinni reikälevylle. Saatuani piirin jalat tinattua, seuraava vaihe oli saada tilatut painokytkimet kiinni jotenkin järkevästi. Monen kokeilun ja vääntelyn jälkeen päädyin ratkaisuun, jossa kytkimet tulivat kiinni muovikoteloon, ja jaloista hyppylangat levylle. Porasin reiät hyppylangoille ja myöskin muovikotelon jaloille, joita myöhemmin sulatin sen verran, että kotelo pysyy paikoillaan. Sitten tinasin hyppylangat kiinni.

Kytkimet + kotelo

Sen jälkeen etsin opettajankopin komponenttikarusellistä oikeankokoiset vastukset (4x 220 Ω, 4x 10 kΩ) ja tinasin ne oikeille paikoille. 10 kΩ vastukset tulivat kytkimien eteen ja 220 Ω vastukset ledien eteen. Vastuksien jälkeen piti etsiä sopivaa kaapelia, joista tehdä hyppylangat Arduinolta levylle. Kaapelin piti olla todella ohutta, jotta ne mahtuvat Arduinon portteihin. Sellaista löytyi ICT-käytävän varastosta. Kyseessä oli jonkinlainen puhelinkaapeli. Katkoin ja kuorin sivuleikkureilla siitä yhteensä 15 hyppylankaa. Tämän jälkeen projekti oli vielä viimeistä testausta vaille valmis. Lopputulos oli onnistunut. Paitsi. Peli toimi aikamoisella viiveellä johtuen mahdollisesti hyppylangoista tai kytkimistä. Siihen en enää keksinyt ratkaisua.


5. Loppuyhteenveto

Projekti onnistui mielestäni hyvin, viimeisestäkin versiosta saatiin toimiva, vaikka viivettä tiedonsiirrossa hiukan enemmän onkin. Jos olisin tiennyt kurssin alussa, että Arduino projektit koteloidaan yleensä, olisin varannut myös sille suunnitelmissa jonkin verran aikaa.

Projektin valinta myös näin jälkeenpäin ajateltuna oli oikea. Projekti opetti paljon lisää Arduinon koodikielestä ja komponenttien ohjaamisesta.

Lopputulos

Ei kommentteja:

Lähetä kommentti