Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
  1. Tee ohjelma, joka lukee

    luvun, joka sisältää kolme numeroa

    kaksi lukua sarjaportin kautta Arduinolle

    muuttujaksi. Vähän apuja saa esimerkistä MultiSerialMega.

    muuttujiksi.  Tee tehtävä siten, että aina on annettava

    kolme merkkiä. Jos luvun arvo on pienempi kuin 100, annetaan etunollat. 2p
  2. Tee edelliseen ohjelmaan lisäys, joka skaalaa annetun arvon välille 0...255 eli sisään 0...999 ja ulos 0...255 2p
  3. Muuta edellistä ohjelmaa siten, että arvo "saturoi" arvoon 255. 2p
  4. 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
  5. kaksi lukua. Näytä arvo ledin kirkkautena. 2p

    Code Block
    languagecpp
    collapsetrue
    /*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);
        }
      }
    }
    
  6. Lisää edelliseen ohjelmaan toinen ledi ja "saturoi" sille vietävä arvo arvoon 255. Näytä arvo ledin kirkkautena.

  7. Tee ohjelma, joka säätää aseklmoottorin nopeuta. Kts. ohjeitA http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/

    Tee edellinen tehtävä siten, että luet kaikki merkit merkkijonomuuttujaan String jono ja muutat arvon String luokan funktiolla stringToInt kokonaisluvuksi. 3p

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

  9. Tee liikennevalot Arduinolla 1 autoille ja 1 jalankulkijoille (etsi apuja googlella, esim. täältä) Tee kytkennät koekytkentälevylle.  6p

  10. Lisää kytkentään potentiometri, jolla säädät autoille määräytyvää vihreää aikaa. 2p

  11. Lisää kytkentään nappi, jolla jalankulkijat voivat pyytää valojen vaihtoa. 2p

  12. Simuloi tien magneettikierukkaa napilla, siten että jalankulkijoille on aina vihreä valo, kun autoa ei ole tulossa. 2p

  13. Tee Arduinolle ohjelmallinen laskuri, joka laskee dig.tulon 1 nousevia reunoja. 2p

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

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

  16. Tee edellinen tehtävä siten, että luet kaikki merkit merkkijonomuuttujaan String jono ja muutat arvon String luokan funktiolla stringToInt kokonaisluvuksi. 3p

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

  18. Lisää ohjelmaan ominaisuus, joka

    naollaa

    nollaa laskurin, kun anturin indeksipulssi on tilassa 1 ja kotiasemapulssi on tosi.

    (Projekti

    2 p.

  19. Lisää ohjelmaan ominaisuus, joka laskee pulssien kaikki reunat.
  20. .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 -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.

  21. Liitä edelliseen tehtävään servomoottori säätämään kaasuläppää. 5 p