Ohjelmointiharjoituksia Arduino-ympäristössä

Samankaltaiset tiedostot
Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Java-kielen perusteita

Java-kielen perusteet

Java-kielen perusteet

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Arduinon ohjelmointi. Sami-Petteri Pukkila. 6. helmikuuta 2017

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ehto- ja toistolauseet

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

12. Javan toistorakenteet 12.1

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Peter Kronström

11. Javan valintarakenteet 11.1

11. Javan toistorakenteet 11.1

12. Javan toistorakenteet 12.1

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

ITKP102 Ohjelmointi 1 (6 op)

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Tutoriaaliläsnäoloista

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

ITKP102 Ohjelmointi 1 (6 op)

Kielioppia: toisin kuin Javassa

1 Tarkistetaan että kaikki toimii

Harjoitustyö: virtuaalikone

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Python-ohjelmointi Harjoitus 2

Ohjelmoinnin perusteet Y Python

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

Arduinon ohjelmointi. Sami-Petteri Pukkila. 1. helmikuuta 2016

Ehto- ja toistolauseet

Muuttujat ja kontrolli. Ville Sundberg

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Luento 5. Timo Savola. 28. huhtikuuta 2006

Tietueet. Tietueiden määrittely

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

Ohjelmoinnin perusteet Y Python

Metodien tekeminen Javalla

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ #include <EEPROM.h> #include <SoftwareSerial.h> SoftwareSerial gps(10, 0); // RX, TX -pinnit

1. Omat operaatiot 1.1

5/20: Algoritmirakenteita III

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h>

Algoritmit 1. Demot Timo Männikkö

Tietotyypit ja operaattorit

Ohjausrakenteet. Valinta:

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmoinnin peruskurssi Y1

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

Listarakenne (ArrayList-luokka)

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

11. Javan valintarakenteet 11.1

13. Loogiset operaatiot 13.1

ITKP102 Ohjelmointi 1 (6 op)

Muuttujien roolit Kiintoarvo cin >> r;

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

7. Näytölle tulostaminen 7.1

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

ITKP102 Ohjelmointi 1, syksy 2007

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Olio-ohjelmointi Javalla

14. Hyvä ohjelmointitapa 14.1

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

OPPITUNTI 5 Ohjelman kulku

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Sisällys. 15. Lohkot. Lohkot. Lohkot

Esimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Arduinon ohjelmointi. Sami-Petteri Pukkila. 26. syyskuuta 2016

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

13. Loogiset operaatiot 13.1

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Harjoitus 4 (viikko 47)

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

7/20: Paketti kasassa ensimmäistä kertaa

Algoritmit 1. Demot Timo Männikkö

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

ITKP102 Ohjelmointi 1, syksy 2007

Transkriptio:

Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet Ehtolauseet Esimerkki ehtolauseista Silmukkarakenteet Silmukkarakenteet Esimerkki silmukkarakenteista Yhteenveto Esimerkki

Arduino-sovelluksen rakenne Funktio on ohjelman osa, joka suoritetaan vain kutsuttaessa. Toiminta voidaan määritellä parametreilla. Funktio voi palauttaa palautusarvon Arduino-sovellus koostuu kahdesta funktiosta: void setup() ja void loop() setup on tarkoitettu mikrokontrollerin ja sen sisältämän ohjelman alustukseen. Alustuksessa voidaan määritellä esimerkiksi pinnien I/O tai alustaa globaaleja muuttujia loop on ohjelman pääsilmukka, jota suoritetaan loputtomasti

Syntaksi ja käytännöt Käskyt lopetetaan puolipisteeseen; Aaltosulkeiden sisältö sisennetään Puolipistettä ei tule joka rivin loppuun suorita_funktio(); // Kommentti /* Myös kommentti */ "Merkkijono" vs a (merkki)

Esimerkki ohjelman rakenteesta #d e f i n e LED_PIN 13 v o i d s e t u p ( ) pinmode ( LED_PIN, OUTPUT) ; v o i d l o o p ( ) d i g i t a l W r i t e (LED_PIN, HIGH ) ; d e l a y ( 1 0 0 ) ; d i g i t a l W r i t e (LED_PIN, LOW) ; d e l a y ( 9 0 0 ) ;

Muuttujat ja tietotyypit Muuttuja on mikrokontrollerin sisällä sijaitseva muistialue, jolla on tietty arvo ja jota voidaan käsitellä C99 standardi määrittelee valmiiksi useita tietotyyppejä: char, int, float... Tietotyyppejä voi määritellä myös itse!

Tietotyypit (käytetyimmät) boolean voi saada arvon true tai false char yhden tavun kokoinen, ja käytetään usein yhen merkin tallentamiseen int kahden tavun kokoinen (16 bittiä), kun käytössä ATmega pohjainen piiri. Tarkoitettu kokonaisluvun (integer) säilytykseen

float 32 bittiä tietotyyppi liukuluvuille (floating-point number) double 64 bittinen tietotyyppi liukuluvuille (double precision floating-point number) String merkkijonoille tarkoitettu abstrakti tietotyyppi, joka mahdollistaa esimerkiksi kahden merkkijonon vertailun

Esimerkkejä tietotyypeistä char c = a ; // c h a r a c t e r, k i r j a i n char d = 2 5 5 ; char e = 0 x f f ; // h e k s a d e s i m a a l i a r v o i n t i = 1 2 3 ; // i n t e g e r, k o k o n a i s l u k u f l o a t f = 1 2. 3 ; // f l o a t i n g p o i n t, l i k u l u k u

Esimerkkejä tietotyypeistä, jatkuu S t r i n g a = " y k s i " ; S t r i n g b ; b = " k a k s i " ; S e r i a l. p r i n t l n ( a + b ) ; Kysymys: mitä yllä oleva koodi tulostaa? http://arduino.cc/en/reference/stringobject

Ehtolauseet Ehtolauseilla toteutetaan ohjelman logiikka tai älykkyys Eri rakenteita (tässä käydään läpi vain ensiksi mainittu): if else ja switch case Ehtolauseissa käytetään hyväksi vertailuoperaattoreita == (yhtäsuuri), <, >, <=, >= ja!= (erisuuri) Usein ehtoja yhdistellään logiikkaoperaattoreilla (tai) ja && (ja) Yleinen virhe on käyttää = sijoitusoperaattoria == sijasta. Älä tee tätä virhettä, useasti

b o o l a = t r u e, b = f a l s e ; i f ( a == b ) // e i t o t e u d u Esimerkki ehtolauseista e l s e i f ( b!= b ) // e i t o t e u d u e l s e // ehto e i t o t e u t u n u t, // s u o r i t e t a a n i f ( a!= b ) // t o t e u t u u i f ( a!= b && a == a ) // t o t e u t u u i f ( a == t r u e a ==! b ) // t o t e u t u u...

Silmukkarakenteet Silmukalla vältetään toistoa Käytetään, kun on tarve tehdä sama tai samankaltainen operaatio useasti Syntaksi: while(ehto) suorita() Muita rakenteita: for(alustus; ehto; inkrementointi)... ja do... while(ehto);

Esimerkki silmukkarakenteista i n t x = 1 0 ; // While l o o p w h i l e ( x > 0) S e r i a l. p r i n t l n ( x ) ; x ; // Sama f o r l o o p i l l a f o r ( i n t y = 1 0 ; y > 0 ; y = y 1) S e r i a l. p r i n t l n ( y ) ;

Kaikki asiat yhdessä v o i d r e a d L i n e ( ) ; // F u n k t i o n j u l i s t u s v o i d s e t u p ( ) S e r i a l. b e g i n ( 9 6 0 0 ) ; // A l o i t a s a r j a l i i k e n n e S e r i a l. p r i n t l n ( " Setup done " ) ; v o i d l o o p ( ) r e a d L i n e ( ) ; // Lue u u s i r i v i d e l a y ( 3 0 0 ) ;

v o i d r e a d L i n e ( ) // Luodaan u u s i a b s t r a k t i t i e t o t y y p p i s t r S t r i n g s t r = "You wrote : " ; char incoming = 0 x00 ; S e r i a l. p r i n t l n ( " Reading l i n e... " ) ; w h i l e ( incoming!= \n // Newline && incoming!= \ r // C a r r i a g e Return && s t r. l e n g t h ( ) <= 50) w h i l e ( S e r i a l. a v a i l a b l e ( ) <= 0) d e l a y ( 5 0 ) ; incoming = S e r i a l. r e a d ( ) ; s t r += incoming ; S e r i a l. p r i n t l n ( s t r ) ;