Tekstitykset
Liikennevalot
Johdanto
Liikennevalojen toimintaa on helppo matkia ohjelmoimalla. Tarvitset valojen ohjelmoimiseen muutamaa perustavanlaatuista komentoa, joilla valot laitetaan päälle ja pois päältä. Välillä tietokonetta täytyy myös käskeä odottamaan hetken aikaa ennen seuraavaa askelta: tietokone ei osaa edes olla tekemättä mitään ilman erillistä neuvoa.
Liikennevalot pyörivät niille syötettyjen ohjelmien mukaan kaikkialla maailman kaupungeissa. Liikennevalot voivat olla hauska lisä mihin tahansa projektiin. Voisivatko ne esimerkiksi olla osa suunnittelemaasi pienoiskaupunkia, jossa liikkuu erilaisia kulkuneuvoja?
Alla esitellään erästä Arduino-projektia, jossa etäisyyssensorit havaitsevat leikkiautoja ja sytyttävät liikennevaloja tämän mukaisesti. Etäisyyssensoria pääsetkin käyttämään myöhemmin tällä kurssilla.
Julie Purdie - Arduino Traffic lights project
Tarvikkeet
Tähän harjoitukseen tarvitset samoja tarvikkeita kuin edellisessä harjoituksessa - ne vain kytketään hieman eri lailla!
Osa | Kuva | Kuvaus |
---|---|---|
Mehackit-board (tai Arduino UNO) | ||
USB-johto (A/B) | Tietokoneella kirjoitettu ohjelma lähetetään Arduinolle USB-johtoa pitkin. Johdon kautta Arduino saa myös virtaa. | |
Kytkentäjohtoja | Ohuita, erivärisiä kytkentäjohtoja tarvitaan tällä kurssilla runsaasti! | |
Koekytkentälevy | ||
Keltainen LED | Pidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan. | |
Punainen LED | Pidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan. | |
Vihreä LED | Pidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan. | |
3 x Vastus 330 Ω | Vastus vastustaa sähkövirran kulkua. Vastuksen arvo mitataan ohmeissa (Ω) ja ilmoitetaan komponentissa eri värisinä raitoina (tässä oranssi, oranssi, ruskea ja kulta). |
Virtapiiri
- Yhdistä ledien pidemmät jalat portteihin 8, 9 ja 10.
- Yhdistä ledien lyhyemmät jalat 330 ohmin vastuksien kautta maahan.
Ohjelman tavoite
Valot toimivat liikennevalojen tapaan. Aluksi punainen ledi palaa. Sitten keltainenkin ledi syttyy. Tämän jälkeen punainen ja keltainen ledi sammuvat ja vihreä ledi syttyy.
Tarvittavat komennot
- digitalWrite(portti, arvo) Syöttää jännitettä digitaaliseen porttiin. Tätä käytit jo aiemmin laittaessasi yhtä lediä päälle ja pois päältä
- pinMode(portti, asetus) Tällä käskyllä asetetaan aina portti output- tai input-tilaan. Esimerkiksi ledien portit asetetaan aina outputeiksi ja vastaavasti esim. napin portti inputiksi.
- delay(arvo) Tällä komennolla asetetaan viivettä ohjelmaan. Kun tietokone lukee ohjelmaa, se pysähtyy aina delay-komennon kohdalle määritellyksi ajaksi.
Ohjelmointi
void setup() {
pinMode(8, OUTPUT);
}
void loop() {
digitalWrite(8, HIGH);
delay(1000);
digitalWrite(8, LOW);
delay(1000);
}
Mitä komento "delay(1000)" tekee edellä olevassa esimerkissä?
Valmiiksi kirjoitetussa ohjelmassa on yksi pieni virhe, jonka vuoksi sitä ei saa syötettyä Arduinolle. Keksitkö mitä ohjelmasta puuttuu? Vastaa lopuksi sivun alalaidassa olevaan monivalintaan
void setup(){
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
digitalWrite(10, HIGH)
delay(1000);
// Aseta keltainen valo päälle
// Odota sekunti
// Aseta punainen valo pois päältä.
// Aseta keltainen valo pois päältä.
// Aseta vihreä valo päälle.
// Odota kolme sekuntia
}
Mitä ohjelmasta puuttui?