maanantai 29. toukokuuta 2017

Image programming in the Racket MOOC

Racket MOOC spring 2017 has now completed. This was the fourth time Koodiaapinen MOOC was arranged for primary school teachers in Finland. As the instructor of Racket track, I must say that the most interesting part has been to follow the outcome of the image programming lessons. Right after the first lesson this plethora of images was returned as the first coding assignment:


The task was to code one simple image or a flag but many took the assignment further and created something original.

The last assigment was to release your inner creativity and play around with Racket Turtle. This is what was created as a result:



And you didn't have to stay with pictures only, you could animate them too. Here are some animation examples from the third lesson:

Test this animation by moving the ice cream with your mouse
Test this animation
Test this animation by moving your mouse over it
Image programming is a good way to ignate interest in programming. Programming images makes the end result concrete and you can create something of your own. It is a good starting point for 7. graders next fall, when school start to implement the requirements of the new curriculum of math. More information about Racket programming can be found from here: racket.koodiaapinen.fi (in Finnish).

Kuvakoodausta kevään Racket MOOC:ssa

Kevään Racket MOOC on jälleen ohi. Tämä oli sarjassansa 4. Koodiaapinen MOOC. Kurssin vetäjän näkökulmasta hauskinta on ollut seurata kuvakoodausjaksojen satoa. Heti ensimmäisen viikon jälkeen palautusseinällä kuhisi tällaisia kuvia:


Tässä tehtävänä oli koodata jokin yksinkertainen lippu tai logo, mutta mukaan mahtuu myös monta aivan omaa luomusta.

Kurssin viimeisessä ohjelmointitehtävässä sai päästää oman luovuutensa täysin valloilleen Racket Turtlen kanssa ja tällaisia kuvia sieltä sitten syntyi:



Eikä kurssilla toki tarvinnut pitäytyä still-kuvissa, sai niitä myös animoida. Tässä muutama makupala:

Testaa animaatiota liikuttamalla jäätelöä hiirellä
Testaa animaatiota
Testaa animaatiota liikuttamalla hiirtä
Moni kurssilainen innostuikin ohjelmoinnista juuri kuvakoodaamisen kautta. Siitä on hyvä aloittaa ensi syksynä 7. luokkalaisten kanssa kun uusi OPS tulee ohjelmointeinen voimaan. Täältä saat lisätietoja mm. kuvakoodaamisesta: racket.koodiaapinen.fi.

lauantai 20. toukokuuta 2017

Lietsun koodauskerho Innokas-robottikisoissa Oulussa

Taas oli se aika vuodesta, että kerholaiset kuljetettiin bussilla Innokas-robottikisoihin esittelemään osaamistaan ja oppimaan uutta. Tällä kertaa reissuun lähti 5 kerholaista vaikka kerhossa on vuoden aikana käynyt enemmänkin porukkaa. Keskiviikkoaamuna 17.5. klo 8.45 bussi suuntasi kohti Oulun yliopistoa.

Lähtötilanne oli jälleen melko tuskainen: XSumo-robottimme oli sinänsä valmis mutta sen koodi ei toiminut, Freestyle-robotilla ei ollut kuoria, koska 3D-tulostin ei suostunut niitä tulostaamaan (ei Lielahdessa eikä Pohjois-Hervannassa), Pelastaja 1:llä ei ollut kouran toimintaan koodia ja Pelastaja 2 oli viikkoa ennen kisaa jouduttu purkamaan, koska alkuperäiset telaketjut luistivat mäessä liikaa. Onneksi meillä oli edes sponsorimme Eatech Oy:n hommaamat kisapaidat nostattamassa kisafiilistä...

Kisarobotteja koodattiin ja rakennettiin vielä majoituskoululla
Majapaikassamme Rajakylän koululla ensimmäinen ilta meni siis koodin debuggaamisen ja pahviaskartelun parissa. Nukkumaanmenoaikaan klo 23 kisarobotit olivat kuitenkin jo sellaisessa kunnossa, että niitä kehtasi muillekin esitellä.

Kisat alkoivat vauhdikkaasti XSumo-otteluilla. Niitä sitten riittikin 16 kappaletta! Ninjabanskujen Viima-robotti aloitti kisat hienosti voittamalla ensimmäiset ottelunsa vaikka robotti ei ollutkaan kovin nopea lähtörampilla. Sitten päätuomari Erkki totesi, että robotin etukiila oli sentin liian korkea ja määräsi sen poistettavaksi, ja seuraavat ottelut eivät menneetkään sitten enää niin hyvin. Kiila saatiin lopulta laskettua alemmas ja Ninjabanskut saivat taas muutaman voiton mutta jäivät oman sarjansa 8. sijalle mikä ei riittänyt jatkopaikkaan. Viiman rakentamiseen osallistui kerhossa myös Lenni.

Ninjabanskut Niko ja Pinja Viima-robotin kera


Pelastussarjassa ensimmäisenä päivänä oli joukkueiden haastattelu, jossa katsastettiin robotin rakenne ja tutkittiin koodia. Haastattelussa joukkueet saivat myös ohjeita robotin jatkokehittämiseen. Lietsun pelastajat 1 ja 2 suorittivat ensimmäisen päivän pelastusradan pistein 290 ja 280, ollen lopulta sijoilla 3 ja 4 ensimmäisen päivän jälkeen. Ei ollenkaan huonosti!

Ensimmäisen päivän pelastus 2 sarjan osallistujat Oliwer ja Ulrika
Lietsun pelastaja 1:n kompastuskivi ensimmäisenä päivänä oli valkoiset speedbumpit, joiden kohdalla robotti karkasi radalta. Myöskään pelastettavan tölkin poistaminen kentältä ei mennyt aivan suunnitelmien mukaan vaan robotti vein sen mukanaan.


Lietsun pelastaja 2:n suurin ongelma oli ylämäessä, josta se ei selviytynyt. Myös speedbumpien kanssakin oli pientä ongelmaa ja lopussa sekin karkasi pelastettavan kanssa omille teilleen.


Panssarivaunu Freestyle-joukkueemme sai aamupäivän aikana valmiiksi robottinsa pahvikuoret sekä työnsä esittelyvideon. Kaikki oli siis valmista kun tuomarit vierailivat pöydän luona iltapäivällä. Huomattavaa työssä oli se, että Panssarivaunun soittama musiikki on myös itse ohjelmoitu. Panssarivaunuprojektin rakentamiseen ja koodaamiseen osallistui myös Verneri.

Panssarivaunu -tiimin työtä esitteli Samppa


Ensimmäinen kisapäivä huipentui iltaohjelmaan, joka tälläkertaa oli vierailu Oulun Superparkissa.

Lietsun koodauskerho rentoutumassa Superparkissa
Toisena päivänä kisat jatkuivat pelastuksen osalta erittäin jännittävissä merkeissä. Lietsun pelastaja 1:n koodia oli paranneltu edellisenä iltana sekä koko aamupäivä, ja Oliwer sai kuin saikin kouran toimimaan oikealla tavalla juuri ennen kisaa. Kisasuorituksessa pelastettava ei kuitenkaan osunut kouran kohdalle ja edellisen päivän pisteet jäivät voimaan. Huono tuuri kertakaikkiaan!


Lietsun pelastaja 2:n koodi ja robotti olivat aivan samat kuin ensimmäisenäkin päivänä mutta robotti toimi kakkospäivän radalla paremmin. Pisteitä tuli kasaan huimat 305 ja niillä yllettiin 4. sijalle. Ei ollenkaan huono suoritus! Hyvä Ulrika!


Ensivuonna ehkä kannattaisi yhdistää parhaat puolet näitä kahdesta robotista niin koossa olisi jo aika kovatasoinen kisakone.
Lietsun pelastajat 1 ja 2 olivat hyvin samankaltaisia
Kisalajien välissä oli mahdollisuus tutustua myös muiden kisailijoiden robotteihin. Tässä parhaita paloja Freestyle - sarjasta.

Bilesauna, Robotti Niinistö ja Robottitar Haukio, Lottokone ja kameran avulla näkevä robottiauto
Kaikenkaikkiaan huippuhienot kisat jälleen kerran. Opimme paljon uusia asioita robotiikasta ja ohjelmoinnista sekä yhteistyön tärkeydestä ja siitä, että kisaprojektit kannattaa aloittaa hyvissä ajoin. Lietsun koodauskerho kiittää myös sponsoriamme Eatech Oy:tä, joka kustansi ruokailumme sekä hienot kisapaidat.
Lietsun koodauskerho kiittää hyvistä kisoista

maanantai 6. helmikuuta 2017

DFROBOT Beginner Kit for Arduino - testauksessa

Nyt testauksessa DFROBOT:n Beginner Kit for Arduino -setti. Ensimmäinen LED:in vilkutus ainakin toimi, joten ensiviikolla sitten oppilaiden kanssa tekemään.

Ajatuksena oli seurata tämän tutoriaalin juttuja ja kopioida valmiita koodeja ja tehdä siitä sitten eteenäin. Katsotaan miten käy.


Laatikollinen leluja

1. Harjoitus: lataa koodi


Lataa kaikki mallikoodit: lataa koodi (zip)

torstai 30. kesäkuuta 2016

Peliohjelmointikurssilla opittua

Kahdeksannen luokan peliohjelmointikurssi jatkui keväällä. Ensimmäisellä kokoontumiskerralla tiimit viimeistelivät suunnitelmansa OneDrive:ssa oleviin dokumentteihin. Me opettajat toimimme katselmoijina ja kyselimme epäselviä asioita sekä tarkennuksia ja lopulta suunnitelmat olivat jotakuinkin yksiselitteisiä niin, että graafikot ja koodarit saattoivat aloittaa omat hommansa.

Koodarit aloittivat tutustumalla opettajan Racket:illä koodaamaan pelipohjaan, jossa oli valmiina hahmojen piirtäminen ruudulle, tietorakenteet "peli" sekä "hahmo", hahmojen liikkumiseen sekä pelaajan ja toisen pelihahmon törmäyksen havaitsemiseen liittyvät funktiot sekä pelimoottori big-bang. Tietorakenteen kentille oli myös valmiiksi koodaattu set- ja get-funktiot.

Peli-tietorakenteessa oli seuraavat kentät:
  • tilanne : Symboli (esim. 'alku 'käynnissä 'pause 'loppu)
  • taso : Luku
  • pisteet : Luku
  • aika : Luku
  • pelaajat : Lista<hahmo>
  • dynaamiset : Lista<hahmo>
  • staattiset : Lista<hahmo>
 Hahmo-tietorakenteessa oli seuraavat kentät:
  • tyyppi : Symboli (esim. 'pejaaja 'kerättävä 'vaara)
  • id : Luku
  • tila : Symboli (esim. 'elossa 'kuollut)
  • varusteet : Lista<symboli> (esim. 'lippis 'pipo)
  • sijainti : Posn (x- ja y-koordinaatti)
  • suunta : Posn (vektori jossa x:n ja y:n suuntainen siirtymä)
  • laskuri : Luku (jos 0 niin ei liiku)
  • asento : Symboli (esim. 'vasen 'oikea)
Vaikka pelipohjassa oli paljon koodia, se ei vielä toteuttanut yhdenkään pelin logiikkaa joten ensimmäinen vaihe oli suunnitella miten kunkin ryhmän peli käyttäisi tietorakenteita hyväkseen, millaisia tiloja pelillä ja hahmolla piti olla jne. Tämä tehtiin isolle paperiarkille.

T'ässä pelissä sipsipussin piti kerätä hyppimällä juomia ja vältellä sivulta tulevia Shrekkejä (toinen "vuoristo"-taso jäi toteuttamatta)
Kun suunnitelma oli valmis, lähdimme tekemään pelejä yhdessä. Vaikka pelit olivatkin hyvin erilaisia, yllättävän monessa pelissä oli samoja piirteitä, jotka saatoimme koodata yhdessä opettajan johdolla kuitenkin niin, että kukin koodaripari sovelsi vaiheen omaan peliinsä sopivaksi. Lähdimme ensin luomaan kuhunkin peliin liittyviä hahmoja ja laitoimme ne liikkumaan oikeaan suuntaan (säätämällä suuntavektoria). Koska meillä ei ollut grafiikoita, ryhmät käyttivät erivärisiä ympyröitä, kolmioita ja nelikulmioita hahmojen kuvina. Ensimmäisinä koodasimme siis funktiot: tee-hahmo ja piirrä-hahmo. Kutsuimme tee-hahmo-funktiota riittävän monta kertaa, että saimme big-bangin käynnistyttyä muutamia hahmoja liikkumaan. Seuraava vaihe oli lisätä funktio, joka toteuttaa pelaajan liikkumisen käyttämällä nuolinäppäimiä. Koodasimme siis funktion: hoida-näppäimet. Kun pelaaja liikkui saatoimme lisätä törmäyksen havaitsemisen sekä pisteiden lisäämisen tai vähentämisen riippuen törmäyksen kohteesta. Nämä toteutettiin funktioiden: päivitä-peli ja törmäsikö? avulla. Lopuksi lisäsimme funktion, joka automaattisesti arpoi peliin lisää hahmoja. Tämä toteutettiin funktion lisää-hahmoja ja arvo-hahmot avulla.

Zombipelissä piti ampua sivuilta tulevia zombeja (huomaa läpinäkyvä ase ja matalalla liitävät ammukset)
Näiden perustoimintojen lisäksi, yhdessä pelissä hahmolle (sipsipussi) piti lisätä painovoima, eli se piti saada hyppäämään ja sen jälkeen putoamaan takaisin. Toisessa pelissä pisteiden laskenta toimi niin, että kolmen "vihanneksen" jälkeen pisteet nollautuivat kokonaan, eli peli loppui ja alkoi taas uudelleen. Kolmannessa pelissä hahmojen lisäksi taustakuva liikkui ajan suhteen, näin saatiin aikaan hahmon putoamisilluusio. Neljännessä pelissä hahmo ampui luoteja hiiren avulla, joten siihen piti lisätä myös hoida-hiiri-funktio. Viides peli jäi alkutekijoihinsä, koska koodareilta loppui mielenkiinto koodaamiseen melko nopeasti. Tämän ryhmän kanssa teimme niin, että graafikot siirtyivät kuvien valmistuttua koodaamaan ja ne ottivat käyttöön Scratch-työkalun, että saisivat jotain valmiiksi siinä  lyhyessä ajassa mitä oli enää jäljellä.

Tässä pelissä sankari hyppää katolta ja kerää matkallaan ES:iä ja nugetteja ja samalla väistelee lintuja (pallot kuvaavat ruokia, jotka jäivät graafikoilta toteuttamatta)
Pelejä koodattiin 7 kaksoistuntia ja samaan aikaan graafikot tekivät peligrafiikoita kuvataiteen opettajan ohjauksessa. Ensimmäisen kerran yritimme liittää kuvia ja koodia yhteen toukokuun alussa. Siinä vaiheessa tuli ilmi montakin ongelmaa, hahmojen kuvissa oli turhia valkoisia taustoja ja kuvia ei oltu rajattu mahdollisimman pieniksi, jotta törmäysehdot toimisivat moitteetta. Myöskään putoamisilluusion luomiseen tarkoitetut talon palaset eivät olleet sellaiset kuin piti (palat olivat eri kokoisia). Graafikot saivat tärkeää palautetta ja he palasivat korjaamaan kuvia, ja koodarit koodasivat pelejä hieman lisää. Kurssin loppu tuli kuitenkin vastaan aivan liian nopeasti, ja lopulta sovimme niin että opettaja koodaa jokaista peliä eteenpäin max 1h per peli. Lopulta neljän pelin loppuun koodamiseen meni 2h15min. Hankalin peli oli zombiepeli, koska siinä sekä zombit että ammukset liikkuivat ja ammuksen ja zombin törmäys piti havaita, kuten myös zombin ja pelaajan törmäys.

Tässä pelissä tehtävänä oli syödä taivaalta putoavia ruokia ja vältellä vihanneksi, tosin vihannekset jäivät graafikoilta piirtämättä ja tilalle tuli läjä sitä itseään.
Pelin lisäksi ryhmän piti tehdä pelille mainossivu, ja tämä toteutettiin blogikirjoituksen muodossa. Ryhmän graafikko ja tarinavastaava tekivät tämän kurssin lopussa. Vielä viimeiselläkin kerralla työstimme vielä pelejä, koska grafiikoissa oli edelleen puutteita: kerrostalon seinässä oli reikiä joista paistoi taivas, pitsapalassa oli turhaa näkymätöntä reunaa ja zombit ja zombien ampuja oli vielä piirtopöydällä. Lopulta kaikki viisi peliä olivat jotakuinkin pelattavassa kunnossa, hyvin riisuttuina versioina tosin mutta kuitenkin. Muutama graafinen elementti jäi puuttumaan, ilmeisesti pienten kommunikaatio-ongelmien takia ja zombien ampujan asekin jäi läpinäkyväksi ja ammusten lähtötaso säätämättä mutta näin voi käydä kun aika vain loppuu kesken.

Tässä pelissä piti hyppiä tasoilta toiselle ja kerätä rahoja, tasoja piti olla eri värisiä ja niiden piti kadota ja tulla taas esiin mutta tämä peli ei toteutunut aivan suunnitellulla tavalla
Kaiken kaikkiaan tämä oli hyvin mielenkiintoinen projekti. Tässä kurssissa tarkoitus ei ollut varsinaisesti oppia ohjelmointia vaan pääpaino oli uuden pelin ideoinnissa sekä projektityöskentelyn opettelussa. Ainakin ryhmille tuli selväksi, että jokaisen työpanosta tarvitaan, eikä peli tule valmiiksi jos jokin osa-alue jää tekemättä. Pelin suunnittelu oli aluksi vaikeaa, mutta lopulta suunnitelluista peleistä tuli jopa hieman turhan monimutkaisia toteutettavaksi näin lyhyen kurssin aikana. Pelipohja toimi siinä mielessä, että sen avulla pystyttiin tekemään nämä pelit, mutta kovin helppokäyttöinen se ei vieläkään ole. Lausekielen (tällä kurssilla Racket) käyttäminen näin suppealla kurssilla ei ehkä vastaa tarkoitustaan varsinkin kuin osalla koodareista ei ollut aikaisempaa kokemusta ohjelmoinnista. Asian (ohjelmointi) syväoppiminen ja pelin valmiiksi saaminen eivät ehkä toteudu saman kurssin puitteissa... Ensi lukuvuonna 8. luokan kurssin nimi onkin pelkkä "ohjelmointi". Katsotaan saako "ohjelmointi" enemmän tilaa, kun "peli"-aspekti jää pois.

Tässä pelien esittelyt löytyvät kurssin blogissa.

sunnuntai 22. toukokuuta 2016

Lietsun koodauskerho RobocupJunior - kisoissa Helsingissä 19.-21.5.2016

Lietsun koodauskerho osallistui tänäkin vuonna RobocupJunior - kilpailuihin, jotka pidettiin Kaapelitehtaalla Helsingissä. Joukkueemme koostui 9 oppilasta, yhdestä huoltajasta ja yhdestä opettajasta. Osallistuimme XSumo-, Alkeispelastus- sekä Freestyle-kilpailuihin.

XSumo

XSumo on alakoululaisille tarkoitettu yleisöystävällinen kisalaji. Siinä kaksi robottia taistelevat sumoareenalla. Se joka jää viimeisenä taistelukentälle voittaa. Tänä vuonna kisaa oli vaikeutettu niin, että sumoareenalle päästäkseen robotin oli seurattava mustaa viivaa, jonka poikki kulki kolme kirkasta teippiä.

XSumo:n kisakenttä - Joona
Meillä oli tähän kilpailuun kaksi XSumo-robottia. Robotit saatiin valmiiksi jo Tampereella viikkoa ennen kilpailuja. Molemmissa oli toimiva värisensoreiden kalibrointiohjelma ja sumolaudalle pääsy oli huolella testattu joten olimme hyvässä iskussa, kun itse kilpailut alkoivat perjantaiaamuna.

Lietsun Xsumo - robotti
Palapelitehdas - robotti
Molemmat robotit pärjäsivät kilpailuissa todella hyvin. Lietsun Xsumo oli oman lohkonsa toinen ja pääsi ensimmäisen päivän jälkeen jatkoon. Palapelitehdas oli oman lohkonsa 4, ja oli siis myös hyvin lähellä päästä jatkoon, kun lohkon 3 parasta pääsivät kilpailemaan voitosta. Lietsun Xsumo ei päässyt semifinaaleihin mutta taisteli hyvin kahdella moottorilla ja kahdella renkaalla,  kun vastustajilla saattoi olla neljäkin moottoria ja 8 rengasta!!!

Jatkokilpailuissa vastustajat olivat enimmäkseen laatikkomallisia - Oliwer
Rakentelualueella sai tuunata robotteja - Verneri ja Lenni

Muutosten jälkeen Palapelitehtaan robotti kävi uusintakatsastuksessa
Lietsun Xsumon "lumikola" osoittautui tehokkaaksi tavaksi kammeta raskaampikin vastustaja kentältä. Myös Palapelitehdas rakensi omaan robottiinsa vastaavan mekanismin toisen päivän kilpailuihin, joten robotit myös kehittyivät hienosti kisan aikana.



Alkeispelastus

Alkeispelastuksessa meillä oli sama tiimi kuin viime vuonnakin: Lauri ja Ulrika. Tällä kertaa sekä robotti, että ohjelmisto olivat valmiina viikkoa ennen kilpailua (viime vuoden pelastajarobotti ei osannut seurata viivaa vielä Tampereelta lähdettäessä). Myös pelastusryhmä oli ottanut värisensorin kalibroinnin haltuun jo ennen kilpailuja.

Lietsun Pelastajat - robotti
Alkeispelastuksessa on kaksi yritystä suorittaa pelastusrata, jossa seurataan mustaa teippiä, joka kulkee useamman "huoneen" läpi. Reitillä on ramppi, oviaukkoja, esteitä, hidasteita, katkoksia seurattavassa viivassa, 90-asteen kulmia sekä kirkkaalla teipillä merkittyjä pelastettavia, joiden kohdalla on pysähdyttävä vilkuttamaan valoja tai annettava äänimerkki. Tehtävä on haastava, koska valaistusolosuhteet ovat hyvin erilaiset talon "alakerrassa" ja "yläkerrassa", samoin molemmat radat ovat erilaiset ja niiden keskinäinen valaistus on myös erilainen. Tällä kertaa ei ollut mahdollisuutta harjoitella harjoitusradalla, mikä vaikeutti entisestään kilpailua. Onneksi torstaina sai harjoitella hieman itse kisaradoilla, ja siinä selvisi se että robotti ei pääse mäkeä ylös ilman telaketjuja ja tämä muutos ehdittiin tehdä ennen kilpailujen alkamista.

Lietsun pelastajat - Lauri ja Ulrika
Ensimmäinen pelastusyritys lähti hyvin käyntiin, robotti selvisi ensimmäisestä huoneesta mutta sitten tapahtui jotain käsittämätöntä, robotti sekosi täysin eikä pystynyt jakamaan. Syytä sekoamiseen etsittiin ja lopulta selvisi, että moottorin johto oli irronnut mystisesti kesken kisasuorituksen. Onneksi joukkue ei tästä masentunut vaan jatkoi robotin kehittelyä, lisäsi siihen kolmannen värisensorin uhrin tunnistusta helpottamaan ja ohjelmoi paremman algoritmin viivan löytämiseksi uhrin tunnistuksen jälkeen. Nämä muutokset ja johtojen tiukentaminen siivittivät robotin kolmanneksi parhaaseen suoritukseen toisena kisapäivänä (78 pistettä). Tämä ei valitettavasti riittänyt aivan mitaleille asti mutta neljäs sija oli hieno tulos tässä kovassa kisassa, jossa voitto irtosi 91 pisteellä.

Freestyle

Viime vuoden Ultracar - joukkue jatkoi tänäkin vuonna valitsemallaan uralla legoautoteknologian kehittelyssä. Heidän kilpailutyönsä oli GyroEMT, eli kahden gyrosensorin avulla kauko-ohjautuva ralliauto. Työnjako toimi tässä tiimissä kuten viimevuonnakin: Onni rakensi auton, Kassu koodasi ja Joel teki videon. Tosin Tampereelta lähdettäessä valmiina oli vain auton ja kaukosäätimen mekaniikka, ohjelma ei toiminut eikä videota oltu kuvattu...

Gyro EMT : Joel, Onni ja Kasperi
Pojat joutuivatkin melko koville kisapäivinä. Torstai-ilta koodattiin ja yritettiin saada bluetooth yhteys toimimaan kaukosäätimen ja auton välillä. Ongelma ei selvinnyt ja autoon kovakoodattiin pieni ohjelma, että saatiin pieni videonpätkä seuraavan päivän Freestyle esittelyä varten. Yön yli nukkumisen jälkeen ongelmat alkoivat pikkuhiljaa ratketa (molempiin blokkeihin päivitettiin mm. firmware), ja lopulta kauko-ohjaus lähti toimimaan iltapäivällä vain hajotakseen jälleen.... Kassu teki koko ohjelman alusta alkaen uudelleen ja perjantai-iltana sitä debugattiin kahden läppärin (ja välillä kahden opettajankin) avulla majoituskoululla. Lopulta kun koko koodi ja kaikki bluetooth asetukset oli tarkistettu, kauko-ohjaus lähti toimimaan ja videota päästiin viimein kuvaamaan oikeasti. Video valmistui 23:30 viimeisenä kisailtana. Oli siis melkoinen suoritus, että tuomarit pääsivät katsomaan toimivaa tuotetta, josta oli myös esittelyvideo!


Työ ei kovasta ponnistelusta huolimatta voittanut mitalisijoja, ja jälkikäteen ajateltuna homma taisi tällä tiimillä jäädä vähän viimetippaan, joten loppusilaus jäi tekemättä. Silti hieno suoritus!!! Tässä nähdään robotin testailua Kaapelitehtaalla.



Kaiken kaikkiaan oli hieno huomata, että kerhomme oli kehittynyt kisalajeissa ja annoimme hyvän vastuksen jokaisessa lajissa. Ensivuonna voisi olla aika ottaa ohjelmistoon uusiakin lajeja. Alkeispelastusryhmämme olisi jo valmis siirtymään varsinaiseen palastussarjaan ja Freestyle - jengi voisi kokeilla alkeisjalkapalloa, kun tuo robotin kauko-ohjaaminenkin on jo tullut tutuksi :-) Erityiskiitos mukanamme olleelle huoltaja-Niinalle! Ensivuonna sitten Ouluun!

Lietsun koodauskerho korkeasaaressa jäätelöllä

torstai 28. tammikuuta 2016

Alakoulun koodaustunteja

Ensi syksynä uusi OPS vaatii ohjelmoinnin opettamista luokilla 1-6. Koska Lielahden koulussa ei alakoulun puolella ole vielä oppitunneilla koodattu päätin, että nyt oli korkea aika kokeilla miten se sujuu.

Luokanopettajat saivat varata 1-2h paja-aikoja ja vierailin oppitunneilla vetämässä ohjelmointia. Tässä lyhyesti kokemuksia.

Ekaluokkalaisten kanssa koodasimme kaksi tuntia. Paikalla oli puolikas luokka kerrallaan. Ensimmäiselle tunnilla tutustuimme Beebot-robottiohjelmointiin. Aluksi juttelimme hieman siitä mitä robotit ovat, mihin niitä voi käyttää ja miten ne saadaan liikkumaan. Kysyin oliko joku jo  sellaisen nähnytkin (Lielahden Prismassa kuulemma oli ollut yksi täyttämässä hyllyjä). Sitten esittelin Beebotin ja kerroin millasta peliä pelaisimme sillä.

Beebot:in piti "kerätä" loogisia paloja pelikentältä (4x4). Jokaisesta oikeasta palasta sai pisteen, väärästä menetti pisteen. Koska käytössäni oli vain yksi Beebot oppilaat ohjelmoivat sitä pareittain: ensin he sopivat mitä paloja kerätään (siniset tai pyöreät tms) ja missä palat sijaitsevat. Tämän jälkeen he saivat vuorotellen ohjelmoida robotin. Sillä aikaa muut pelasivat Beebot-peliä iPadeillä.


Toisen ryhmän kanssa kokeilimme myös sitä, että pari teki ohjeet ensin paperille, ja vasta sitten tulivat ohjelmoimaan robottia. Olisi luullut, että koodin kirjoittaminen olisi auttanut pitkän ajatteluketjun saamista oikeaksi mutta tulokset olivat usein huonompia kuin ilman suunnittelua.

Toisella tunnilla tutustuimme ScratchJr iPad appsiin. Näytin ensin tykin kautta miten hahmot saadaan liikkumaan, miten hahmoja lisätään ja taustakuvaa vaihdetaan sekä miten hahmo saadaan puhumaan koskettamalla sitä (vuorosanojen äänittäminen). Toisen ryhmän kanssa ehdimme tehdä myös silmukoita ja siirtyä tasolta toiselle. Yllättävän paljon ekaluokkalaisetkin saivat tästä ohjelmasta irti.

ScratchJr
Nelos- ja viitosluokkalaisten kanssa aloitimme myös ScratchJr:lla. Ohjelma kiinnosti myös isompia oppilaita ja he tekivätkin näppärästi pidempiäkin tarinoita, joissa on useampia hahmoja sekä tasoja. Näiden ryhmien kanssa kävin läpi hieman tarkemmin ohjelman hallintaa: miten asiat saadaan tapahtumaan samaan aikaan ja miten ne saadaan tapahtumaan peräkkäin viestien avulla. Molemmat ryhmät opettelivat ohjelmaan kaksoistunnin ajan ja nelosluokka sovelsi tietojaan tekemällä Hölmöläistarinat animaatioksi. Tarinassa tarvittava esine piirrettiin ensin paperille ja sitten  valokuvattiin hahmoksi. Tämä ryhmä ei äänittänyt vuorosanoja vaan kirjoitti ne puhekupliin.

Hölmöläisten TV animaatio ScratchJr
Lego-ohjelmointia kokeiltiin kolmos-, nelos- ja viitosluokkien kanssa. Meillä oli valmiina EV3:n perusrobotit ja käytimme iPadin Lego Programming appsia. Kävimme ensin läpi robotin osat ja sen mikä niiden rooli on. Sitten näytin miten robotin saa kulkemaan eteenpäin ja kääntymään. Helpoin tapa säätää robotin kulkemaa matkaa sekä sen tekemää käännöstä tuntui olevan moottorin pyörimisajan säätö. Sitten näytin vielä miten robotin saa pysähtymään seinään ultraäänisensorin avulla.

EV3 Lego Programming iPad appsi

Tämän jälkeen oppilaat saivat haasteeksi ohjelmoida robotin kiertämään esteen (penaali) ja palaamaan lähtöviivalle (maalarinteippi). Toinen haaste oli saada robotti pysähtymään mustalle viivalle. Ja kolmas oli tehdä "pölynimurirobotti" joka toimisi lakkaamatta. Oppilaat ohjelmoivat robotteja pareittain ja koska kaikille pareille ei riittänyt robotteja he aloittivat pelaamalla Robo logic HD iPad peliä. Kun jokin pari sai haasteen valmiiksi he siirtyivät pelaamaan ja pelaajat siirtyivät robottihaasteen pariin. Kaksoistunnin aikana kaikki saivat tehtyä ensimmäisen haasteen ja puolet toisen haasteen. Muutama oppilas sai tehtyä myös pölynimurin.


Kaiken kaikkiaan oppilaat olivat innostuneita ohjelmoinnista. Robottien ohjelmointiin pystyi sitomaan mukaan hyvin tosielämän aihepiirejä kuten liikenne, fysiikka (ääni, valo, sähkö, energia) ja sekä matematiikkaa (pienempi kuin vertailuja, etäisyyden ja ajan mittaamista, logiikkaa). Animaatioiden tekeminen soveltui puolestaan äidinkielen ja kuvataiteen kanssa yhdistettäväksi projektiksi. Hieman jäin miettimään onnistuuko tämä ensi vuonna ilman minua (kuten toivon). Ehkä näillä ohjeilla?