This is an old revision of the document!


TTU Summer School programming

Projekt 1 LED-i juhtimine nupuga

Arduino ühendusskeem

Näide #1.1 Nuppu all hoides LED põleb

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);
  }
}

Näide #1.2 Nupule vajutades LED süttib 1 sekundiks

/*
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);
}

Näide #1.3 Nupule vajutades muudab LED oma olekut

/*
  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); 
    }
}

Harjutused

Harjutus #1.1

Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub LED kolm korda.

Harjutus #1.2

Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab LED konstantselt vilkuma 1 sekundilise intervalliga ja teine nupule vajutus lõpetab vilkumise.

Harjutus #1.3

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.

en/arduino/examples.1500959317.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0