#include <SoftwareSerial.h>



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

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

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

Ohjelmointiharjoituksia Arduino-ympäristössä

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

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

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

1 Tarkistetaan että kaikki toimii

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

13. Loogiset operaatiot 13.1

11. Javan valintarakenteet 11.1

13. Loogiset operaatiot 13.1

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

Java-kielen perusteet

Muuttujat ja kontrolli. Ville Sundberg

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

Arduino. Kimmo Silvonen (X)

Java-kielen perusteet

Metodien tekeminen Javalla

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

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

Java-kielen perusteita

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

Muuttujien roolit Kiintoarvo cin >> r;

Arduino. Kimmo Silvonen (X)

Java-kielen perusteet

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

Tietotyypit ja operaattorit

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

11. Javan valintarakenteet 11.1

Ohjelmointi 1 Taulukot ja merkkijonot

17. Javan omat luokat 17.1

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

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

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu

Periytyminen (inheritance)

Olio-ohjelmointi Javalla

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Arduino. Kimmo Silvonen (X)

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

11. Javan toistorakenteet 11.1

Tarkempaa tietoa saat myös kurssin GitHub-alustalta. Sen wiki-osio on kattava ja yksityiskohtainen, kun tämä vihkonen taas on vain ensihätään.

14. Hyvä ohjelmointitapa 14.1

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

21. oppitunti. Esikäsittelijä. Osa. Esikäsittelijä ja kääntäjä

Harjoitus 2. Harjoitus 3

Olio-ohjelmointi 2. välikoe HYV5SN

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

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

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

C-kurssi kevät Luennon sisältö

Luennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3

Sisältö. 22. Taulukot. Yleistä. Yleistä

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

20. Javan omat luokat 20.1

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

5/20: Algoritmirakenteita III

LUKU 17 MUUTAMIA JAVA FX -SOVELLUKSIA. Tässä dokumentissa esitellään muutamia Java FX -sovelluksia.

WT11i-A -breakoutin Arduino-pikaopas

C-kurssi syksy ltö. Luennon sisält. Luento 2: tyypit, rakenteet, makrot Tyypit. signed, unsigned short,, long Vakiot const Rakenteet

Luennon sisält. ltö. C-kurssi syksy ääreet: int ja char. Yksinkertaiset tyypit. Kokonaisluvut. Merkit

Luokan sisällä on lista

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

Merkkijonon tutkiminen matches-metodilla

Algoritmit 1. Demot Timo Männikkö

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

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

GSRELE ohjeet. Yleistä

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

12. Javan toistorakenteet 12.1

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

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

1. Omat operaatiot 1.1

12. Javan toistorakenteet 12.1

13 Operaattoreiden ylimäärittelyjä

Luokan muodostimet (Constructors)

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Ohjelmoi Arduino Grovella

Javan GUI Scratchaajalle

9. Periytyminen Javassa 9.1

Kauko-ohjauslaite GSM rele 2011 v

Java-kielen perusteita

Taulukot. Jukka Harju, Jukka Juslin

Algoritmit 1. Demot Timo Männikkö

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

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

Java-kielen perusteita

Transkriptio:

#include <SoftwareSerial.h> const byte PIN_AUTOJOH = 4;// AUTO SÄHKÖVERKOSSA,MÄÄREELLÄ INPUT const byte PIN_TERMARI_PAALLA = 5; // = LED TERMARI VALITTU =(AUTOMAATILLA) const byte PIN_SISALAM = 6; const byte PIN_NAPPI_SISALAM_ON_OFF = 7; // MÄÄREELLÄ INPUT_PULLUP const byte PIN_NAPPI_MOOT_LAM_ON_OFF = 8; // MÄÄREELLÄ INPUT_PULLUP const byte PIN_MOOTLAM = 9; const byte PIN_NAPPI_TERMARI_ON_OFF = 10; // MÄÄREELLÄ INPUT_PULLUP const byte PIN_TX_BT= 11; const byte PIN_MOOT_LAM_NAPPI_ON_OFF = 12;// APU LÄHTÖ TERMARIN VUOKSI const byte PIN_RX_BT= 13; boolean bmoot_nappi_paastetty = true; boolean bsisalam_nappi_paastetty = true; boolean btermari_nappi_paastetty = true; const byte LAH_VIIVE1 = 150;// ANALOGILÄHDÖT const byte LAH_VIIVE2 = 100;// OHJAUS NAPIT SISÄ- JA MOOT.LÄMMITIN const byte LAH_VIIVE3 = 50;// LYHYT VIIVE const byte TERMARIN_YLARAJA = 30;// 20.10.2015 Muutettu 32->30 anturin paikan vuoksi const byte TERMARIN_HYSTEREESI = 5; byte byvuorettele = 0; int imoot_lampo_c = 0; boolean blammitalohko = false; SoftwareSerial btserial(pin_tx_bt, PIN_RX_BT); //Lähetystaajuus puhelimeen const unsigned long ullahetystaajuuswp_puhelimeen = 3000; unsigned long ulvanha_aika = 0; //Käsitellään saapuva komento Windows puhelimesta. void aja_komentoprosessi(char* chkomento) // TERMOSTAATIN OHJAUKSET if(strcmp(chkomento,"ter_on") == 0) digitalwrite(pin_termari_paalla, HIGH); lahetaviesti("ter:1"); if(strcmp(chkomento,"ter_off") == 0) digitalwrite(pin_termari_paalla, LOW); lahetaviesti("ter:0"); // SISÄLÄMMITTIMEN OHJAUKSET if(strcmp(chkomento,"sl_on") == 0)

digitalwrite(pin_sisalam, HIGH); delay(lah_viive3); lahetaviesti("sl:1"); if(strcmp(chkomento,"sl_off") == 0) digitalwrite(pin_sisalam, LOW); delay(lah_viive3); lahetaviesti("sl:0"); // -----MOOTTORILÄMMITTIMEN OHJAUKSET----- if(strcmp(chkomento,"ml_on") == 0) digitalwrite(pin_moot_lam_nappi_on_off, HIGH);// PIN 7 delay(lah_viive3); lahetaviesti("ml:1"); if(strcmp(chkomento,"ml_off") == 0) digitalwrite(pin_moot_lam_nappi_on_off, LOW); // PIN 7 delay(lah_viive3); lahetaviesti("ml:0"); //Lähetä viesti takaisin Windows puhelimeen void lahetaviesti(char* viesti) int viestinpituus = strlen(viesti); if(viestinpituus < 255) btserial.write(viestinpituus); btserial.print(viesti); boolean LuePesuNeste(int iatulo) if (iatulo <= 480) return true; else return false; // boolean LuePesuNeste(int iatulo) //***************************************************************** //---- Palauttaa termarin kokonaislukujen keskiarvon -------------

void LaskeMoot_Lammon_Keskiarvo() float ftulos = 0; byte bykpl = 3; for (int i = 0; i < bykpl; i++) ftulos += (analogread(a3)-analogread(a4))*0.4887585532747; imoot_lampo_c = (int)(ftulos/bykpl); // void LaskeMoot_Lammon_Keski... //--Lähetetään ajoitettu viesti "ullahetystaajuuswp_puhelimeen" //--muuttujaan määritellyn ajan valein------------ void lahetaajoitettuviesti() //*------ KOOTAAN JA LÄHETETÄÄN LASINPESUNESTESÄILIÖN KORKEUSTIEDOT ----******* Kokoa_ja_laheta_tieto ("LPN:",YhdistaKolmeTietoa(LuePesuNeste(analogRead(A0)), LuePesuNeste(analogRead(A1)),LuePesuNeste(analogRead(A2)))); //LÄHETTÄÄ SARJAPORTTIN "LPN:0"-"LPN:7" // **********LASKETAAN KESKILÄMPÖTILA MOOTTORIN ANTURISTA******* LaskeMoot_Lammon_Keskiarvo(); if( byvuorettele==0) // *******************MOOTTORILÄMPÖTILA***LÄHETETÄÄN PUHELIMEEN**************** Kokoa_ja_laheta_tieto ("S4:",String(iMoot_Lampo_C,DEC));//fMoot_Lampo if( byvuorettele==1) // AUTON AKUN JÄNNITE // *******************AKUN JÄNNITE********************* Kokoa_ja_laheta_tieto ("S5:",String((analogRead(A5)*0.0242926)+0.6,1)); if( byvuorettele==2) // AUTO LÄMMITYSTOLPASSA TAI MUUSSA JOHDOSSA if(high==digitalread(pin_autojoh)) Kokoa_ja_laheta_tieto ("LJOH:",String(0,DEC)); else Kokoa_ja_laheta_tieto ("LJOH:",String(1,DEC));

byvuorettele++; if(byvuorettele>=3) byvuorettele=0; // Haetaan lähtöjen asennot boolean bmootlamasento = false; boolean bsisalamasento = false; boolean bterohjasento = false; //****** Tieto puhelimeen moottorilämmittimen tilasta if(high==digitalread(pin_moot_lam_nappi_on_off))// = PIN 7 bmootlamasento = true; else bmootlamasento = false; //****** Tieto puhelimeen sisälämmittimen tilasta if(high==digitalread(pin_sisalam)) bsisalamasento = true; else bsisalamasento = false; //****** Tieto puhelimeen onko lohko termarin ohjauksessa if(high==digitalread(pin_termari_paalla)) bterohjasento = true; else bterohjasento = false; Kokoa_ja_laheta_tieto ("MST:",YhdistaKolmeTietoa( bmootlamasento, bsisalamasento,bterohjasento)); delay(lah_viive2); //LÄHETTÄÄ SARJAPORTTIN "MST:0"-"MST:7" // PÄIVITTÄÄ PIENTÄ "LED" VALOA LOHKOLÄMMITIN WP-NAPISSA Tarkista_LohkoLam_Lahdon_Tila(); // void sendperiodicmessages() //--LOHKOLÄMMITTIMEN TERMARIN KOKO LOGIIKKA ---******* //---------------------------------------------------- void LohkoLam_Termari_Logiikka() if (HIGH==digitalRead(PIN_MOOT_LAM_NAPPI_ON_OFF)) if ( HIGH==digitalRead(PIN_TERMARI_PAALLA)) // TERMARI PÄÄLLÄ = TERMARI OHJAA LOHKOLÄMMITYSTÄ if ( imoot_lampo_c >= TERMARIN_YLARAJA)

digitalwrite(pin_mootlam, LOW); blammitalohko = false; if (imoot_lampo_c < (TERMARIN_YLARAJA - TERMARIN_HYSTEREESI)) blammitalohko = true; if (blammitalohko == true) digitalwrite(pin_mootlam, HIGH); if (imoot_lampo_c> TERMARIN_YLARAJA) digitalwrite(pin_mootlam, LOW); blammitalohko = false; // if (fmoot_lampo > TERMARIN // if (blammitalohko == true) else // TERMARI POIS = LOHKOLÄMMITYS AINA PÄÄLLÄ digitalwrite(pin_mootlam, HIGH); Tarkista_LohkoLam_Lahdon_Tila (); //if ( HIGH==digitalRead(PIN_TERMARI... else digitalwrite(pin_mootlam, LOW); Tarkista_LohkoLam_Lahdon_Tila (); // if (HIGH==digitalRead(PIN_MOOT_L... //void LohkoLam_Termari_Logiikka // TIETO KUN MOOTTORILÄM SAA OHJAUKSEN == PIENI // "LED" LOHKON NAPPULASSA void Tarkista_LohkoLam_Lahdon_Tila () if(high==digitalread(pin_mootlam)) Kokoa_ja_laheta_tieto ("MLOH:",String(1,DEC)); else Kokoa_ja_laheta_tieto ("MLOH:",String(0,DEC));

//void Tarkista_LohkoLam_Lahdon_Tila // Yhdistetään tietoa jotta saadaan lähetyskertoja vähennettyä String YhdistaKolmeTietoa(boolean beka,boolean btoka,boolean bkolmas) if ( beka == false && btoka == false && bkolmas == false) return "0" ; if ( beka == true && btoka == false && bkolmas == false) return "1" ; if ( beka == false && btoka == true && bkolmas == false) return "2" ; if ( beka == true && btoka == true && bkolmas == false) return "3" ; if ( beka == false && btoka == false && bkolmas == true) return "4" ; if ( beka == true && btoka == false && bkolmas == true) return "5" ; if ( beka == false && btoka == true && bkolmas == true) return "6" ; if ( beka == true && btoka == true && bkolmas == true) return "7" ; // String YhdistaKolmeTietoa(Str void Kokoa_ja_laheta_tieto (String str,string str1) String str2 = ""; str2 = str+str1 ; char chmerkkijono[str2.length()+1]; str2.tochararray(chmerkkijono,str2.length()+1); char* p_chmerkkijono = chmerkkijono; lahetaviesti(p_chmerkkijono);// // void Kokoa_ja_laheta_tieto //********************************************************************* void Vaihda_asento_jos_nappi_painettu(boolean& bnappi_paastetty, byte PIN_Nappi, byte P if (LOW == digitalread(pin_nappi)) // =Nappia painettu if (bnappi_paastetty == true) if(high == digitalread(pin_lahto)) digitalwrite(pin_lahto, LOW); else digitalwrite(pin_lahto, HIGH); bnappi_paastetty = false; //if (bnappi_paastetty == true) else // Nappi päästetty

bnappi_paastetty = true; // boolean Vaihda_asento void setup() Serial.begin(57600); Serial.println("USB Connected"); btserial.begin(57600); pinmode(pin_sisalam, OUTPUT); pinmode(pin_mootlam, OUTPUT); pinmode(pin_termari_paalla, OUTPUT); pinmode(pin_moot_lam_nappi_on_off, OUTPUT); pinmode(pin_autojoh, INPUT); pinmode(pin_nappi_sisalam_on_off,input_pullup); // = 7 pinmode(pin_nappi_moot_lam_on_off,input_pullup);// = 8 pinmode(pin_nappi_termari_on_off,input_pullup); // = 10 void loop() if(btserial.available()) int ikomennonpituus = (int)btserial.read(); char chkomento[ikomennonpituus]; int ikomentopos = 0; while(ikomentopos < ikomennonpituus) if(btserial.available()) chkomento[ikomentopos] = (char)btserial.read(); ikomentopos++; chkomento[ikomentopos] = 0; aja_komentoprosessi(chkomento); unsigned long ulnykyinenaika = millis(); if((ulnykyinenaika - ulvanha_aika) > ullahetystaajuuswp_puhelimeen) lahetaajoitettuviesti(); ulvanha_aika = ulnykyinenaika; //******* Ajetaan termari logiikka************** LohkoLam_Termari_Logiikka();

//***************** NAPPIEN LUKU JA OHJAUKSIEN OHJAUS ********************** Vaihda_asento_jos_nappi_painettu(bSisaLam_Nappi_Paastetty, PIN_NAPPI_SISALAM_ON_OFF, P Vaihda_asento_jos_nappi_painettu(bMoot_Nappi_Paastetty, PIN_NAPPI_MOOT_LAM_ON_OFF, PIN Vaihda_asento_jos_nappi_painettu(bTermari_Nappi_Paastetty, PIN_NAPPI_TERMARI_ON_OFF, P // void loop