This is an old revision of the document!
TTU Summer School programming
https://www.arduino.cc/en/Tutorial/DigitalPins.
/* Nimetus: Näide #1.1 Kirjeldus: Nuppu all hoides LED põleb */ /* Konstandid */ // Viik kuhu on ühendatud nupp const int nupp = A0; // Viik kuhu on ühendatud LED const int led = 13; /* Globaalsed muutujad */ // Nupu muutuja oleku salvestamine ja selle algväärtustamine int nupuOlek = 0; void setup() { // LED viigu väljundi seadistamine pinMode(led, OUTPUT); // Nupu viigu sisendi seadistamine ja sisemise "pull-up" takisti aktiveermine pinMode(nupp, INPUT_PULLUP); } void loop() { // Nupu muutuja hetkeväärtuse salvestamine nupuOlek = digitalRead(nupp); // Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib if (nupuOlek == LOW) { digitalWrite(led, HIGH); } // Muul juhul seadistame LED viigu madalaks ehk LED ei põle else { digitalWrite(led, LOW); } }
/* Nimetus: Näide #1.2 Kirjeldus: Nupule vajutades süttib LED 1 sekundiks */ // Algus identne näitega #1.1 (kommenteeritud koodi vaata sealt) const int nupp = A0; const int led = 13; int nupuOlek = 0; void setup() { pinMode(led, OUTPUT); pinMode(nupp, INPUT_PULLUP); } void loop() { // Nupu muutuja hetkeväärtuse salvestamine nupuOlek = digitalRead(nupp); /* Kui nupp on alla vajutatud, siis seadistame LED viigu kõrgeks ehk LED süttib, programm seisab 1 sekund ja pärast seda seatakse viik tagasi madalaks */ if (nupuOlek == LOW) { digitalWrite(led, HIGH); delay(1000); // 1000 millisekundit ehk 1 sekund } digitalWrite(led, LOW); }
/* Nimetus: Näide #1.3 Kirjeldus: Nupule vajutades muudab LED oma olekut püsivalt */ // Algus identne näitega #1.1 (kommenteeritud koodi vaata sealt) const int nupp = A0; const int led = 13; int nupuOlek = 0; void setup() { pinMode(led, OUTPUT); pinMode(nupp, INPUT_PULLUP); } void loop() { // Programm ei tee midagi kuni vajutatakse nuppu if (digitalRead(nupp) == LOW) { // Lüliti kontaktide värelemise (debounce) efekti mõju vähendamiseks väike viide delay(50); while (digitalRead(nupp) == LOW) { //Tsükkel hoiab programmi kinni kuni nupu viigu olek muutub kõrgeks } /* LED viigu olek inverteeritakse ehk seatakse vastupidiseks kasutades hetkeväärtust */ digitalWrite(led, !digitalRead(led)); // Lüliti kontaktide värelemise (debounce) efekti mõju vähendamiseks väike viide delay(50); } }
Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub LED kolm korda.
Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab LED konstantselt vilkuma 1 sekundilise intervalliga ja teine nupule vajutus lõpetab vilkumise.
Modifitseerida näiteprogrammi nii, et nupule vajutades LED vilgub nii mitu korda, kui on nuppu programmi töötamise jooksul kokku vajutatud. Pärast igat vajutust suureneb vilkumiste arv ühe võrra.