Processing-koodin ohjaaminen Arduinolla

Processing-animaatioista voi tehdä interaktiivisia käyttämällä näppiksen tai hiiren sijaan mikrokontrolleria kuten Arduinoa. Arduino on ohjelmoitava minitietokone, johon voi kytkeä antureita ja erilaisia elektronisia laitteita kuten ledejä ja moottoreita. Arduinoa käytetään mm. prototyyppien, fyysisten käyttöliittymien ja robottiprojektien toteuttamiseen. Arduinosta on olemassa monenlaisia versioita, ja tässä esimerkissä käytetään Arduino UNO:n kanssa samalla tavalla toimivaa Mehackit Maker Boardia.

Arduinoon kytkettävän etäisyyssensorin tuottamat arvot lähetetään Processing-ympäristöön sarjaliikenteen välityksellä.

Lataa Arduinon ohjelmointiympäristö


Virtapiiri

Tee kytkentä, jossa liität etäisyysanturin kytkentäalustan kautta Arduinon

  • GND eli maadoitusporttiin
  • 5V eli jänniteporttiin sekä
  • A0 eli analogiseen anturiporttiin numero 0.

Kytkennässä näkyy myös ääntä tuottava summeri, joka on mukana lähinnä lisämausteena. Summeri on kytketty GND-porttiin sekä digitaaliseen porttiin numero 8.

Kytkentään voi myöhemmin lisätä uusia antureita. 

Arduino saa virtaa tietokoneeseen kytkettävän USB-johdon välityksellä.


Katsaus Arduinon ohjelmointiympäristöön

Kun avaat Arduino IDE. Edessäsi on tämä näkymä:

Arduino IDE:llä laadittu ohjelma siirretään koneeseen USB-johdolla kytketylle Arduinolle klikkaamalla vasemman yläreunan nuolta. 

Setup() ja loop() vastaavat Processingin setup- ja draw-funktioita. Kun Arduino käynnistyy, se suorittaa setupin sisällä olevat käskyt kerran. Tämän jälkeen Arduino siirtyy suorittamaan loopin sisällä olevat komennot ylhäältä alas, yhä uudestaan ja uudestaan.


Ongelmia Arduinon kanssa?

Joskus Mehackit boardille tai Arduinolle syöttämäsi ohjelma ei toimi, ja joskus ohjelma ei välttämättä siirry Arduinolle ylipäätään. Syitä tähän on monia, ja kuusi yleisintä ratkaisua haasteisiin esitellään tarkemmin alla!

1. Valitse oikea portti ja Arduinon malli Tools-valikosta.

Tämä on yleisin ratkaisu jos ohjelma ei siirry Arduinolle. Oikea malli (board) ja portti (port) valitaan Tools-valikosta. Mehackit board vastaa toteutukseltaan Arduino UNOa. Tarkista tämä aina ensin jos ohjelma ei siirry Arduinolle!

2. Korjaa koodin virheet.

Jos koodissa on virhe, se ei siirry Arduinolle. Arduino IDE:ssä tämän kertoo oranssilla raidalla varustettu virheilmoitus ohjelman alalaidassa. Virheilmoitus paikantaa myös rivin, jolla virhe on.
  1. Uudelleenkytke Arduinon USB-johto tai vaihda USB-porttia.
Joskus Tools-valikosta ei pysty valitsemaan oikeaa porttia. Tällöin kannattaa kytkeä Arduinon USB-johto irti tietokoneesta ja sen jälkeen takaisin eri USB-porttiin. Tämän voi joutua toistamaan useita kertoja, ennen kuin port-valikko on käytössä! USB-johdon uudelleenkytkentä voi muutenkin auttaa, jos ongelmia on.
  1. Resetoi Arduino.
Mehackit-board resetoidaan harmaasta pitkulaisesta napista USB-portin vierestä (Virallisessa Arduinossa UNO:ssa nappi on punertava). Kun nappia painetaan, boiardille syötetty ohjelma käynnistyy alusta. Tätä kannattaa kokeilla, jos Arduino käyttäytyy oudosti ja arvelet, että vika ei ole koodaamassasi ohjelmassa1
  1. Varmista, että digitaaliset portit 0 tai 1 eivät ole käytössä.

Nämä portit mahdollistavat Arduinon kommunikoinnin tietokoneen kanssa ja tarvittaessa muidenkin laitteiden kanssa. Jätä ne tyhjäksi ellet välttämättä tarvitse kaikkia digitaalisia portteja käyttöön. Jos portit ovat käytössä, ohjelma ei välttämättä siirry Arduinolle
... tai kysy googlelta, ohjaajaltasi tai kaveriltasi!

Jos Arduino IDE antaa virheilmoituksen, voit googlata kyseisellä ilmoituksella ratkaisuja. Usein muut ovat painineet saman ongelman parissa ja ratkaisu löytyy joltakin foorumilta. Kysy myös rohkeasti muilta vinkkejä haasteisiisi!


Kopioi allaoleva ohjelma Arduino IDE:en ja lataa se Arduinolle.

void setup()
{
  //käynnistetään sarjaliikenne nopeudella 9600:
  Serial.begin(9600);
}

void loop()
{
  // luetaan ja pyöristetään portista 0 luettava arvo:
  float num = analogRead(0);
  int distance = analogRead(1);
  int buzzer = map(distance, 0, 2013, 100, 2000);
  num = round(num);
  int rounded = (int) num;
// soitetaan porttiin 8 kytketyn piezo-kaiuttimen kautta buzzer-muuttujaa vastaava nuotti
 tone(8, buzzer);
  // lähetetään pyöristetyt arvot sarjaporttiin: 
  Serial.println(rounded);
  Serial.println(distance);
  delay(100);
}
Tehtävä
Avaa serial monitor Arduino IDE:n oikeassa yläkulmassa olevasta suurennuslasikuvakkeesta (ks. kuva). Liikuta kättä etäisyysanturin edessä ja tarkkaile arvoja, joita tulostuu serial monitor -ikkunaan. Jos arvot eivät tunnu reagoivan käden etäisyyteen, tarkista kytkennät!



Video-kirjaston asentaminen

Ennen kuin voit testata tämän esimerkkiprojektin koodia, sinun täytyy asentaa Processing IDEen Video-kirjasto.


1.

2.

Kirjoita suodatuskenttään "video" ja löydettyäsi oikean kirjaston, klikkaa sen kohdalla "install".

Processing-ohjelman testaaminen

Kopioi Processing-koodi tästä linkistä

Huom!
Sulje Arduino IDE ennen kuin käynnistät Processing-ohjelman! Muutoin saatat saada ilmoituksen, että sarjaportti on varattu, eikä Processing-ohjelma pyöri.

Käynnistä Processing-ohjelma ja testaa, kuinka etäisyysanturin avulla voi muutella ruudulla näkyvää kuvaa.

Huom!

Saatat joutua muuttamaan numeroa tämän käskyn hakasulkeiden sisällä: 

String portName = Serial.list()[3]; 

Tarkista Processingin konsolista sulkuihin tuleva numero - se tulostuu ensimmäiseksi riville, jolla näkyy Arduino-porttisi nimi.

Jos et muista Arduino-portin nimeä, tieto löytyy Arduino IDE:n valikosta Tools -\Port.

Kokeile muutella Processing-ohjelman arvoja, jotka vaikuttavat ruudulla näkyvien läiskien kokoon ja väriin!

Seuraavaksi

Voit käyttää Arduino- ja Processing-koodia pohjana uusille projekteille. Arduinolla voi ohjata Processingilla koodattuja animaatioita tai vaikka pelejä! 

Vaihda tai lisää antureita ja ulostuloja Arduinoon, niin saat uusia ominaisuuksia käyttöön!