Yleistä

Tässä ohjeessa käymme läpi painokoytkimen käyttöä Arduinolla. Painokytkimellä voit ohjata esimerkiksi valoa, moottoria tai muuta Arduinoon liitettyä laitetta.

Laite voidaan ohjelmoida tunnistamaan erilaisia ärsykkeitä ympäröivästä maailmasta. Tällöin tarvitaan sensoreita. Sensorien avulla laitteen voi rakentaa aistimaan erilaisia asioita, kuten kosketusta tai tunnistamaan valoisuutta. Laite joka tunnistaa kosketuksen on yksinkertaisinta rakentaa painokytkimellä. 

Tarvitset tehtävää varten tietokoneen.

Voit tehdä kytkennän alla mainituilla osilla tai hyödyntää valmista permaproto-kytkentää, jonka löydät Meta-boxi tarvikkeista. Permaproto-kytkennän kanssa tarvitset Arduino-mikrokontrollerin, tietokoneen ja USB-johdon.

 

Osat

Led

 

Vastukset

  • 220 Ohmin (värikoodi: punainen, punainen, ruskea, kulta)
  • 4,7 kOhmin (värikoodi: keltainen-violetti-punainen-kulta; vastuksen oma pohjaväri on tiilenpunainen)

Painokytkin

 

Arduino

 

Hyppylankoja

 

USB A-B

Koekytkentälevy

Kytkennät

Tee alla oleva kytkentä ennen siirtymistä ohjelmointi osioon. Voit tehdä kytkennän joko edellä mainituista irto-osista tai kokeilla ensin valmiilla perma-proto kytkennällä. Tällöin riittää että kytket hyppylangat kuvan mukaisesti oikeisiin kohtiin Arduinossa.

Ohjelmointi

 

Graafinen ohjelmointi Snap4Arduinolla

Snap4Arduino ja Arduino-mikrokontrollerin yhdistäminen
  1.     Avaa Arduino IDE
  2.     Kytke Arduino UNO koneeseen USB kaapelilla
  3.     Avaa Arduino IDE ja lataa Arduinoon Firmata-koodi. (Tiedosto -> Esimerkit -> Firmata -> StandartFirmata). 
  4.     Avaa Snap4Arduino-ohjelmointiympäristö ja aktivoi Arduino ohjelmointiympäristöön painamalla ”Connect Arduino”.
Koodin rakentaminen Snap4Arduino -ohjelmointiympäristössä

Rakenna koodi esimerkin mukaan.

Koodin rakentaminen Snap4Arduino-ohjelmointiympäristössä

Alla koodi rakennetaan kohtakohdalta.

Tietääksesi onko nappi painettu, on napin tila tallennettava. Tälläisten tietojen tallentamiseen ohjelmoinnissa käytetään muuttujia. Muuttuja voi olla mikä vain sana ja se tulee määritellä itse.

  1. Määrittele muuttuja Muuttujat-välilehdestä. Valitse ”Uusi muuttuja” ja anna muuttujan nimeksi jokin kuvaava nimi. Esimerkiksi ”nappi”.
  2. Aloita koodi valitsemalla Ohjaus-välilehdestä komento ”kun klikataan (vihreä lippu)”.
  3. Valitse Ohjaus-välilehdestä ”ikuisesti”-komento ja raahaa se koodin jatkoksi.
  4. Seuraavaksi määritellään aiemmin luodun muuttujan pinni Arduinosta. Valitse Muuttujat-välilehdestä komento ”aseta muuttujan [ ] arvoksi [ ]” ja raahaa se ohjelman jatkoksi.
  5. Valitse koodissa muuttujan alasvetovalikoista muuttujaksi ”nappi” ja arvoksi määrittele pinni 9. Pinni määritellään oikeaksi valitsemalla Arduino-välilehdestä ”<digital reading ( )>” ja raahamalle se koodiin. Valitse alasvetovalikosta käyttöön pinni 9.

Tämän jälkeen rakennetaa ehtolauseet ledin toiminnalle painokytkimen perusteella.

  1. Valitse Ohjaus-välilehdestä ”jos”-ehtolause ja raahaa se koodin jatkoksi.
  2. Aseta ehtolauseen ehdoksi Laskenta-välilehdestä ”on yhtä kuin” eli ”[ ] = [ ]”-komento. Valitse Muuttujat-välilehdestä aiemmin itse luotu muuttuja ”nappi” ja raahaa se vielä edellisen komennon arvoksi. Seuraavaan vapaaseen laatikkoon valitaan Laskenta-välilehdestä ”<tosi>”-komento. Näin määrität muuttujan saamaan arvon sen perusteella, onko pinnissä 9 tunnistettu sähkövirta vai ei.
  3. Luo ehtolauseen sisään seuraavaksi tapahtuma, joka seuraa jos ehtolause toteutuu. Huomaa, että ehtolauseet menevät tässä tapauksessa väärinpäin. Tosi on epätosi ja epätosi on tosi. Tämä johtuu Arduinon tekniikasta. Klikkaa ehtolause siis epätodeksi.

Rakenna seuraavaksi koodi, joka vilkuttaa lediä päälle ja pois tämän ehtolauseen toteutuessa. Voit tarkistaa koodin rakenteen joko Led päälle ja pois -tehtävästä tai allaolevasta koodikuvasta.

Viimeiseksi luo uusi jos-ehtolause, missä määrität mitä tapahtuu kun painokytkintä ei paineta. Tällöin led pitää saada sammumaan.


 

Tekstipohjainen ohjelmointi Arduino IDE:ssä

Kopioi ja liitä alla oleva koodi Arduinoon. Voit kirjoittaa koodin myös kokonaan käsin alla olevan vaiheittaisen ohjeen mukaan.

Koodi kokonaisuudessaan:

const int buttonPin = 9;
const int ledPin = 13;

int buttonState = 0;
void setup() { 
pinMode(ledPin, OUTPUT); 
pinMode(buttonPin, INPUT_PULLUP); 
}
void loop() {
 buttonState = digitalRead(buttonPin);
 if (buttonState == HIGH) {
 digitalWrite(ledPin, HIGH);
 delay(1000);
 digitalWrite(ledPin, LOW);
 delay(1000);
 }
else {
 digitalWrite(ledPin, LOW);
 }
 }

 

VAIHEET:

1. Määrittele ensin muuttujat niille pinneille, joita kytkennässä käytetään. Ledi tulee pinniin 13 ja painokytkin pinniin 9.

const int buttonPin = 9;
const int ledPin =  13;

2. Määrittele muuttuja, joka on arvo jonka kytkin saa aluksi oletuksena. Toisinsanoen kytkin ei ole päällä kun sitä ei paineta.

int buttonState = 0;

3. Määrittele ensimmäinen funktio, joka aktivoi pinnit joissa on kiinni ledi ja painokytkin. Huomaa, että painokytkin onkin ”vastaanottajana” ja nimetty muotoon INPUT_PULLUP.

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}

4. Määrittele koodi, joka lukee aluksi painokytkimen arvon ja mahdollisen muutoksen. Arduino tunnistaa onko painike painettu seuraavalla koodilla. Sama koodi viestii myös kohdassa 2. määritellyn muuttujan muutoksen joksikin muuksi kuin arvoksi 0.

 
void loop() { buttonState = digitalRead(buttonPin);

5. Määrittele seuraavaksi mitä tapahtuu kun painokytkin on painettu alas. Tällöin se ilmenee Arduinolle arvona HIGH. Kun pinniin 9 virtaa sähkövirta, alkaa led vilkkumaan. Muussa tapauksessa (else) pinni on pois päältä.

if (buttonState == HIGH) { 
digitalWrite(ledPin, HIGH); 
delay(1000); 
digitalWrite(ledPin, LOW); 
delay(1000); } 

else { 
digitalWrite(ledPin, LOW); 
 } 
}

Mitä seuraavaksi?

Tutustu seuraavaksi sähkömoottorin pyörittämistä. Voit sen jälkeen kokeilla saatko kontrolloitua moottoria painokytkimellä?