Sisältö

  1. Yleistä
  2. Video
  3. Osat
  4. Kytkennät
  5. Ohjelmoiminen

_________________

Mitä seuraavaksi?

MITÄ TÄHÄN?

Yleistä

Tässä ohjeessa käydään läpi buttonin, eli painokoytkimen käyttö Arduinolla. Painokytkimellä voit ohjata esimerkiksi valoa, moottoria tai itseasiassa mitä vain Arduinoon liitettyä laitetta.

(kuva: valokuva kytkennästä) – ROI OTTAA

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ä. 

Aloita katsomalla aiheesta video.

Osat

Led

Käytä kytkennässä tavallisia ledejä tavanomaisilla väreillä (punainen, keltainen, vihreä, sininen).   

Vastus

Valitse vastuksiksi kaksi 220 ohmin vastusta. Vastusten väreinä on punainen, punainen, ruskea, kultainen.

Painokytkin

Painokytkin yhdistää virtapiirin, kun sitä painetaan. Sen voi ajatella olevan kuin laskusilta, joka painuu alas nappia painamalla ja päästää sähkön kulkemaan lävitseen.

Arduino

Kytkennät

Ohjelmoiminen

 

Graafinen ohjelmoiminen

 

  1.     Avaa Arduino IDE
  2.     Kytke Arduino UNO koneeseen USB kaapelilla
  3.     Avaa Arduino IDE ja lataa Arduinoon Firmata-koodi. (File->Examples->Firmata_>StandartFirmata). Klikkaa kuva suuremmaksi.
    LISÄÄ KUVA
  4.     Avaa Snap4Arduino-ohjelmointiympäristö ja aktivoi Arduino ohjelmointiympäristöön painamalla ”Connect Arduino”. Katso kuvasta.
  5.     Rakenna koodi esimerkin mukaan.

 

Koodin rakentaminen Snap4Arduino ohjelmointiympäristössä

 

6. 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. Määrittele muuttuja Muuttujat-välilehdestä.

 

Valitse ”Uusi muuttuja” ja anna muuttujan nimeksi jokin kuvaava nimi. Esimerkiksi ”nappi”.

 

7. Aloita koodi valitsemalla Ohjaus-völilehdestä komento ”kun klikataan (vihreä lippu)”.
8. Valitse Ohjaus-välilehdestä ”ikuisesti”-komento ja raahaa se koodin jatkoksi.
9. Seuraavaksi määritellään aiemmin luodun muuttujan pinni Arduinosta. Valitse Muuttujat-välilehdestä komento ”aseta muuttujan [ ] arvoksi [ ]” ja raahaa se ohjelman jatkoksi.
10. 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.
11. Tämän jälkeen rakennetaa ehtolauseet ledin toiminnalle painokytkimen perusteella.
Valitse Ohjaus-välilehdestä ”jos”-ehtolause ja raahaa se koodin jatkoksi.
12. Aseta ehtolauseen ehdoksi Laskenta-välilehdestä ”on yhtä kuin” el ”[ ] = [ ]”-komento. 13. 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.

 

14. 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.
15. Rakenna koodi, joka vilkuttaa lediä päälle ja pois tämän ehtolauseen toteutuessa. Voit tarkistaa koodin rakenteen joko oppaan tehtävästä: _________ tai ohjeen koodikuvasta kohdassa 16.

 

16. Luo ehtolause, jossa määrität mitä tapahtuu kun painokytkintä ei paineta. Tällöin led pitää saada sammumaan. Tarkista koodi esimerkkikuvan avulla.

 

Esimerkkikuva koko koodista.

 

 

 


 

Tekstipohjainen ohjelmoiminen

 

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 LOW. Kun pinniin 9 virtaa sähkövirta, alkaa led vilkkumaan. Muussa tapauksessa (else) pinni on pois päältä.

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

else { 
digitalWrite(ledPin, LOW); 
 } 
}

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 == LOW) {
 digitalWrite(ledPin, HIGH);
 delay(1000);
 digitalWrite(ledPin, LOW);
 delay(1000);
 }
else {
 digitalWrite(ledPin, LOW);
 }
 }

Mitä seuraavaksi?

MITTÄHÄN