Tee ohjelma, joka lukee
luvun, joka sisältää kolme numeroakaksi lukua sarjaportin kautta Arduinolle
muuttujaksi. Vähän apuja saa esimerkistä MultiSerialMega tai Dimmer.muuttujiksi. Tee tehtävä siten, että aina on annettava
kolme merkkiä. Jos luvun arvo on pienempi kuin 100, annetaan etunollatkaksi lukua. Näytä arvo ledin kirkkautena. 2p
Tee edelliseen ohjelmaan lisäys, joka skaalaa annetun arvon välille 0...255 eli sisään 0...999 ja ulos 0...255.Näytä arvo ledin kirkkautena. 2pCode Block language cpp collapse true /*lukujen erotteleminen ASCII-coodatusta merkkijonosta parseInt() funktiolla.*/ // LED pinni: const int lediPinni = 13;//vaihda pwm-lähdöksi void setup() { // alustetaan sarjaliikenne Serial.begin(9600); } void loop() { // onko sarjaporttia vapaana while (Serial.available() > 0) { // haetaan seuraava kokonaisluku merkkijonosta int EkaArvo = Serial.parseInt(); // ja uudelleen int TokaArvo = Serial.parseInt(); // ja vielä yksi int KolmasArvo = Serial.parseInt(); // etsitään \n eli newline, tämä on viestin loppu if (Serial.read() == '\n') { // rajoitetaan arvo EkaArvo = constrain(EkaArvo, 0, 255); analogWrite(lediPinni, EkaArvo); Serial.print(EkaArvo); Serial.print(" "); Serial.print(TokaArvo); Serial.print(" "); Serial.println(KolmasArvo); } } }
Lisää edelliseen ohjelmaan toinen ledi ja "saturoi" sille vietävä arvo arvoon 255. Näytä arvo ledin kirkkautena.
2pTee ohjelma, joka
lukee sarjaportilta enimmillään neljä numeroa ja kun on annettu A, viedään luku muuttujaan. Tee ohjelmaan tarkastus, ettei hyväksytä muita kuin numeroja (kts. esimerkki CharacterAnalysis) esim. isDigit(merkki) ja ettei syötettäviä numeroita ole yli neljää. Lopuksi tarkasta, ettei luku ole yli 1024. Jos kaikki ehdot toteutuvat, talleta sarjaportilta tullut arvo muuttujaan. 6pTee edellinen tehtävä siten, että luet kaikki merkit merkkijonomuuttujaan String jono ja muutat arvon String luokan funktiolla stringToInt kokonaisluvuksi. 3psäätää aseklmoottorin nopeuta. Kts. ohjeitA http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/
Tee ohjelma, joka lukee kaksi analogia-arvoa ja saturoi ensimmäisen arvon suurimmillaan arvoon 100 ja skaalaa toisen arvon 0...1024 -> 0...200. Tämän jälkeen arvot lasketaan yhteen. Summa saturoidaan välille 0...255 ja laitetaan lediin 13. 4p
Tee liikennevalot Arduinolla 1 autoille ja 1 jalankulkijoille (etsi apuja googlella, esim. täältä) Tee kytkennät koekytkentälevylle. 6p
Lisää kytkentään potentiometri, jolla säädät autoille määräytyvää vihreää aikaa. 2p
Lisää kytkentään nappi, jolla jalankulkijat voivat pyytää valojen vaihtoa. 2p
Simuloi tien magneettikierukkaa napilla, siten että jalankulkijoille on aina vihreä valo, kun autoa ei ole tulossa. 2p
Tee Arduinolle ohjelmallinen laskuri, joka laskee dig.tulon 1 nousevia reunoja. 2p
Muuta tehtävää siten, että estetään kosketinvärähtelyjen laskeminen. Eil kaikki kytkennät jotka tapahtuvat 0.2 sekunnin aikana ensimmäisestä kytkennästä pitää estää
. 2p.
Tee ohjelma, joka lukee sarjaportilta enimmillään neljä numeroa ja kun on annettu A, viedään luku muuttujaan. Tee ohjelmaan tarkastus, ettei hyväksytä muita kuin numeroja (kts. esimerkki CharacterAnalysis) esim. isDigit(merkki) ja ettei syötettäviä numeroita ole yli neljää. Lopuksi tarkasta, ettei luku ole yli 1024. Jos kaikki ehdot toteutuvat, talleta sarjaportilta tullut arvo muuttujaan. 6p
Tee edellinen tehtävä siten, että luet kaikki merkit merkkijonomuuttujaan String jono ja muutat arvon String luokan funktiolla stringToInt kokonaisluvuksi. 3p
Kytke Arduinoon pulssianturi(simuloi kahdella napilla) ja tee ohjelma, joka laskee ylöspäin kun anturia pyöritetään myötäpäivään ja vastapäivään pyöritettäessä laskurin arvoa vähennetään. 2p . Tee ohjelmaan lisäys, joka tarkastaa, että molemmat pulssianturijn kanavat tulevat oikeassa järjestyksessä. Ohjelma ei saa pysähtyä odottelemaan toista kanavaa 5p.
Lisää ohjelmaan ominaisuus, joka nollaa laskurin, kun anturin indeksipulssi on tilassa 1 ja kotiasemapulssi on tosi. 2 p.
- Lisää ohjelmaan ominaisuus, joka laskee pulssien kaikki reunat.
- (Projekti 2..3 oppilaan ryhmissä) Suunnittele yksinkertainen lambda-säätö
Suunnittele yksinkertainen polttoaineen suihkutusjärjestelmä. Järjestelmä sisältää lambda-säädön
lambda control tuloina ovat pyyntö, lämpötila
, lambda-30+120 astetta Celsiusta ja lambda-arvo 0...5 V ja lähtöinä kaasuläpän 0..255 ja polttoainesuihkutuksen asema(määrä) 0..255 . Demoa järjestelmää potentiometrilla ja ja lähtöjä kahdella ledillä. Kun lämpötila on alle 80 astetta, rikastetaan polttoaineen syöttöä. Jos labda-arvo on välillä 0..0,5 V tai 4,5...5 V, ollaan virhetilassa. 2,5 V on oike seos ja alle 2,5 V rikkas seos. Jos lämpötila on yli 100 astetta, annetaan hälytys ledillä. 6 p.
Liitä edelliseen tehtävään servomoottori säätämään kaasuläppää. 5 p